ifconfig 和 iproute2 虚拟接口之间的区别

lit*_*ude 5 networking interface

我想知道以下之间有什么区别:

# ifconfig eth0:0 1.1.1.1/24
Run Code Online (Sandbox Code Playgroud)

并且只是

# ip addr add 1.1.1.1/24 dev eth0
Run Code Online (Sandbox Code Playgroud)

顺便说一句我做不到

# ip addr add 1.1.1.1/24 dev eth0:0
RTNETLINK answers: File exists
Run Code Online (Sandbox Code Playgroud)

它的ip addr show表现有所不同:

eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
link/ether 8c:ae:4c:fe:1f:75 brd ff:ff:ff:ff:ff:ff
inet 1.1.1.1/24 brd 1.1.1.255 scope global eth0:0 ---> with ifconfig
inet 2.2.2.2/24 scope global eth0 ----> with ip
Run Code Online (Sandbox Code Playgroud)

我什么时候应该选择第一种方式,什么时候应该选择第二种方式?看起来更酷

Dav*_*ave 5

在 Linux 中,使用ip命令。在其他操作系统中,使用ifconfig和系列。

如果您这样使用iproute2方式 ( ):ip

ip addr add 1.1.1.1/24 dev eth0 label eth0:0
Run Code Online (Sandbox Code Playgroud)

您应该具有与第一个命令相同的效果ifconfig,甚至应该以相同的方式显示ifconfig。如前所述,在 Linux 中,您应该更喜欢ip命令系列而不是ifconfigroute等。尽管ifconfig和 其他命令将在未来一段时间内在网络管理员的饮食中保持稳定,因为它们在非 Linux 操作系统中也得到广泛使用和支持。