当我使用 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