ip addr add noprefixroute 前缀长度的含义

ip addr add noprefixroute 前缀长度的含义

当为带有 的网络接口分配 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他们的描述是关于地址,而不是路由。

相关内容