当为带有 的网络接口分配 IP 地址时ip addr add noprefixroute
,指定的前缀长度会产生什么影响?当noprefixroute
不使用时,前缀长度用于自动创建和删除所添加地址的网络前缀的路由。除此之外它还有什么功能吗?
例如,有什么区别
ip addr add noprefixroute 10.137.0.36/16 dev eth0
和
ip addr add noprefixroute 10.137.0.36/32 dev eth0
?
答案1
事实上,似乎没有太多有用的区别,但至少有一个区别:无论是否添加路由,处理辅助地址的方式都不会改变。
当第二个地址与同一网络中具有相同网络掩码的其他地址添加到同一接口时,它被归类为次要地址。当第一个地址(主地址,没有中学属性)被删除,同一 IP LAN 中的所有其他匹配地址,所有次要,也被删除。
例子:
从头开始:
# ip addr flush dev eth0
添加主要地址(第一个):
# ip addr add noprefixroute 10.137.0.36/16 dev eth0
使用相同的网络掩码添加同一 IP LAN 内的其他地址
# ip addr add noprefixroute 10.137.0.42/16 dev eth0
检查当前状态
# ip route # ip addr show dev eth0 2: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 0e:00:00:74:02:fd brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 10.137.0.36/16 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet 10.137.0.42/16 scope global secondary noprefixroute eth0 valid_lft forever preferred_lft forever
删除主要(第一个)并见证第二个也消失
# ip addr del 10.137.0.36/16 dev eth0 # ip addr show dev eth0 2: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 0e:00:00:74:02:fd brd ff:ff:ff:ff:ff:ff link-netnsid 0
如果使用两个 /32,则不会发生这种情况,因为它们都将被视为主地址(使用 /32,它们不属于同一 IP LAN)。顺便说一句,有一个参数可以将辅助节点提升为主节点,而不是删除所有辅助节点:promote_secondaries
。
结论:noprefixroute
影响路由的创建,但不影响链接到地址的其他属性。
不知道是否还有更明显的差异。当设置如下时,也许可以通过 ARP 找到一些东西arp_ignore
或者arp_announce
与他们的默认默认值不同:与arp_filter
他们的描述是关于地址,而不是路由。