我在一台 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
。其现代等价物ifconfig
是ip address list
。
为什么被ifconfig
替换为ip
?自编写以来的几十年里,Linux 网络中添加了许多新功能ifconfig
。这涉及到一个全新的 API(netlink),以便用户空间工具与内核通信以配置网络。编写一个新工具来更好地通过 netlink API 映射新功能并下到命令行,比尝试调整旧工具更为实用ifconfig
。查看ip(8) 手册页了解您现在可以做的所有炫酷新事物。
该工具所使用的内核 APIifconfig
和ifconfig
工具本身仍然保持向后兼容,但是这个接口对于任何不能轻易映射到旧模型的东西都是视而不见的。
不显示 IP 别名的原因是,Debian (处理 的软件包)ifconfig
似乎使用不同的机制添加 IP 别名,该机制不添加标签、等。因此,该工具对它们视而不见,因为旧 API 要求这些标签,因此额外的地址不会映射到旧 API。从ifupdown
/etc/network/interfaces
:1
:2
ifconfig
ip-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
。因此,您需要在两个地方添加它们。
注意:这在接口重置后也不会持久,因此您需要在重新启动接口/机器时重新运行命令。