ifconfig 忽略 IPv6 上的别名

ifconfig 忽略 IPv6 上的别名

当我使用 ifconfig 为接口 eth0:0 添加 IPv4 地址时,该地址被正确创建:

ifconfig eth0:0 add 192.168.10.10

这可以通过 ifconfig 或“ip a”来验证。

但是,当我添加 IPv6 地址时,ifconfig 似乎忽略了接口的别名:

ifconfig eth0:0 add fc00::2/48

然后,地址 fc00::2/48 被添加到 eth0,而不是 eth0:0,无论 eth0:0 之前是否具有 IPv4 地址。

我在 CentOS 5 上执行此操作,但我猜这是 ifconfig 的一般行为?我做错了什么还是故意的?我经常为接口使用单独的别名,我希望也将其用于 IPv6。

诚挚问候 Marten

答案1

这是故意的。添加别名是因为在 IPv4 中,通常一个接口只能有一个 IP 地址。添加别名是为了解决这个问题。在 IPv6 中,每个接口有多个地址是很正常的,所以别名不再使用。

虽然这个ifconfig工具不是管理这个问题最简单的工具,但它ip使这一切变得容易得多。

显示当前地址的方式如下:

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:75:36:4e brd ff:ff:ff:ff:ff:ff
    inet 83.137.17.100/26 brd 83.137.17.127 scope global eth0
    inet6 2001:4038:0:16::16/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe75:364e/64 scope link 
       valid_lft forever preferred_lft forever

您可以像这样添加额外的地址:

# ip addr add 2001:db8::1/64 dev eth0

它只是显示为列表中的地址之一:

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:75:36:4e brd ff:ff:ff:ff:ff:ff
    inet 83.137.17.100/26 brd 83.137.17.127 scope global eth0
    inet6 2001:db8::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2001:4038:0:16::16/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe75:364e/64 scope link 
       valid_lft forever preferred_lft forever

相关内容