我在我的计算机上定义了接口 eth0 和与其相关的别名 eth0: 1
# ifconfig
eth0 Link encap:Ethernet HWaddr X:5D:X:3F:X:89
inet addr:X.X.0.156 Bcast:0.0.0.0 Mask:X.X.X.X
inet6 addr: X::9a5d:X:fe3f:X/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:677 errors:0 dropped:0 overruns:0 frame:0
TX packets:180 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:56767 (55.4 KiB) TX bytes:16019 (15.6 KiB)
Interrupt:175
eth0:1 Link encap:Ethernet HWaddr X:5D:X:3F:X:89
inet addr:X.X.0.181 Bcast:0.0.0.0 Mask:X.X.X.X
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:175
但是当我只想使用下面的命令禁用别名时,它也会删除 eth0。
/sbin/ifdown eth0:1
为什么会发生这种情况?
另一方面,如果它尝试使用命令禁用别名,它会起作用并自行删除:
ifconfig eth0:1 down
但是当我再次恢复别名时,我的情况如下
# /sbin/ifup eth0:1
ifup: interface eth0:1 already configured
# /sbin/ifdown eth0:1
# /sbin/ifup eth0:1
# ifconfig
eth0 Link encap:Ethernet HWaddr X:5D:X:3F:X:89
inet6 addr: X::9a5d:X:fe3f:X/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1321 errors:0 dropped:0 overruns:0 frame:0
TX packets:235 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:111766 (109.1 KiB) TX bytes:20421 (19.9 KiB)
Interrupt:175
eth0:1 Link encap:Ethernet HWaddr X:5D:X:3F:X:89
inet addr:X.X.0.181 Bcast:0.0.0.0 Mask:X.X.X.X
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:175
Eth0 丢失其 IP 地址和设置。这可能会导致我无法单独删除和设置别名?
/etc/network/interfaces文件定义了eth0和eth0:1
# cat /etc/network/interfaces
auto eth0
iface eth0 inet static
address X.X.0.156
netmask X.X.X.X
gateway X.X.0.1
auto eth0:1
iface eth0:1 inet static
address X.X.0.181
netmask X.X.X.X
答案1
假设您的子网掩码相同:
根据您的观察,至少 linux 内核 4.19 有一个错误。将同一子网中的 2 个 IP 地址添加到一个接口并删除第一个,将同时删除这两个地址:
ifconfig eth0 1.1.1.1/24
ifconfig eth0:2 1.1.1.2/24
ifconfig eth0 0
但请记住,在一个接口上拥有同一子网的 2 个 IP 地址仍然是一种错误配置。它将监听两个 IP 地址,但未指定应答 IP 地址。仅暂时使用此配置。 Linux 内核 5.10 在这种情况下删除了正确的 IP 地址。