ifconfig 不显示绑定到机器的所有 IP

ifconfig 不显示绑定到机器的所有 IP

我在一台 Ubuntu 机器上配置了多个 IP 地址,但运行时ifconfig只显示其中一个。但是,我可以 ping 分配给这台机器的所有其他地址。

/etc/network/interface内容:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
     address 192.168.202.11
     netmask 255.255.255.0
     network 192.168.202.0
     broadcast 192.168.202.255
     gateway 192.168.202.1

# dns-* options are implemented by the resolvconf package, if installed   
dns-search idil.dz1.da

auto eth0:1    
iface eth0:1 inet static
     address 192.168.202.12   
     netmask 255.255.255.0

auto eth0:2
iface eth0:2 inet static
     address 192.168.202.13
     netmask 255.255.255.0

auto eth0:3
iface eth0:3 inet static
     address 192.168.202.14
     netmask 255.255.255.0

auto eth0:4
iface eth0:4 inet static
     address 192.168.202.15
     netmask 255.255.255.0

auto eth0:5
iface eth0:5 inet static
     address 192.168.202.16   
     netmask 255.255.255.0

但是,的输出ifconfig只有:

192.168.202.11

答案1

ifconfig基本上已被弃用,尽管据我所知没有计划将其删除。替代的是命令ip。其现代等价物ifconfigip address list

为什么被ifconfig替换为ip?自编写以来的几十年里,Linux 网络中添加了许多新功能ifconfig。这涉及到一个全新的 API(netlink),以便用户空间工具与内核通信以配置网络。编写一个新工具来更好地通过 netlink API 映射新功能并下到命令行,比尝试调整旧工具更为实用ifconfig。查看ip(8) 手册页了解您现在可以做的所有炫酷新事物。

该工具所使用的内核 APIifconfigifconfig工具本身仍然保持向后兼容,但是这个接口对于任何不能轻易映射到旧模型的东西都是视而不见的。

不显示 IP 别名的原因是,Debian (处理 的软件包)ifconfig似乎使用不同的机制添加 IP 别名,该机制不添加标签、等。因此,该工具对它们视而不见,因为旧 API 要求这些标签,因此额外的地址不会映射到旧 API。从ifupdown/etc/network/interfaces:1:2ifconfigip-address(8) 手册页

          Each address may be tagged with a label string.  In order to
          preserve compatibility with Linux-2.0 net aliases, this string
          must coincide with the name of the device or must be prefixed
          with the device name followed by colon.

maggotbrain 的答案中链接的错误似乎集中在增加对ifconfig读取无标签地址的支持。另一种方法可能是安排ifupdown创建带有标签的地址,这样就ifconfig无需修改就能看到它们。

答案2

这很可能是 net-tools 包中的一个错误,ifconfig具体来说。

查看启动板错误这里这里了解更多信息。

如果您手动输入接口,请从命令行使用ifconfig如下方法(按照上述配置):

sudo ifconfig eth0:1 192.168.202.12 netmask 255.255.255.0
sudo ifconfig eth0:2 192.168.202.13 netmask 255.255.255.0
sudo ifconfig eth0:3 192.168.202.14 netmask 255.255.255.0
sudo ifconfig eth0:4 192.168.202.15 netmask 255.255.255.0
sudo ifconfig eth0:5 192.168.202.16 netmask 255.255.255.0

运行时,这些界面将会如预期的那样出现ifconfig

但是,这些更改不会显示在您的 中/etc/network/interfaces。因此,您需要在两个地方添加它们。

注意:这在接口重置后也不会持久,因此您需要在重新启动接口/机器时重新运行命令。

相关内容