多 IP 绑定的问题

主要涉及内核的 promote_secondaries 这个参数。

目前 eth0 接口只有 10.18.101.5 这个 ip:
# ip add sh eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 54:04:a6:98:bf:d6 brd ff:ff:ff:ff:ff:ff
    inet 10.18.101.5/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5604:a6ff:fe98:bfd6/64 scope link
       valid_lft forever preferred_lft forever


给 eth0 新添加几个 ip:
# ip addr add 10.18.101.6/24 dev eth0
# ip addr add 10.18.101.7/24 dev eth0
# ip addr add 10.18.101.8/24 dev eth0

# ip add sh eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 54:04:a6:98:bf:d6 brd ff:ff:ff:ff:ff:ff
    inet 10.18.101.5/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.18.101.6/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet 10.18.101.7/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet 10.18.101.8/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5604:a6ff:fe98:bfd6/64 scope link
       valid_lft forever preferred_lft forever

如果删除 10.18.101.5 这个试试:
# ip addr delete 10.18.101.5/24 dev eth0

发现所有的 IP 都没了:
# ip add sh eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 54:04:a6:98:bf:d6 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::5604:a6ff:fe98:bfd6/64 scope link
       valid_lft forever preferred_lft forever

这个跟 ipv4/conf/x/promote_secondaries 有关,看名字就知道意思了。如果打开的话,表示 seconadry 会去接替 primary 的工作。也就是当删除 10.18.10.105 这个 IP 后,106 会顶替刚刚那个 105 的工作,不会造成所有的 IP 都丢失。


ref:
http://illenseer.eu/articles/i-want-my-secondary-ip-addresses-back/