iproute相关命令配置IPv4与IPv6时的差异说明

概述

由于IPv4和IPv6是两个不同的协议标准,iproute相关命令在使用方法上存在一定的差异。本章节主要梳理iproute包中用户经常使用到命令在IPv4和IPv6使用方面的差异,从而可以更好地指导用户使用iproute包中相关命令。

IPv6地址的生命周期

IPv6状态

解释

tentative

临时状态:刚添加地址还处于地址重复检测DAD过程

preferred

首选状态:完成DAD过程,没有收到相应的NA报文,表示该地址没有冲突。

deprecated

弃用状态:地址有一定的使用时限(valid_lft和preferred_lft),preferred_lft到期后地址会变化deprecated状态。

该状态下的地址不能用于创建新的连接,但是原有的连接可以继续使用。

invalid

无效状态:使用时限超过preferred_lft一段时间后仍然没有成功进行租约续约,则valid_lft时间到后地址状态会被设置为invalid,表示该地址不可以再被使用。

其它说明:

  • preferred_lft:preferred lifetime,地址为首选状态的寿命,preferred_lft没有到期的地址可以用于正常通信使用,若有多个preferred地址则按照内核具体机制选择地址。
  • valid_lft: valid lifetime,地址有效的寿命,在[preferred_lft, valid_lft]时间段内该地址不能被用于新建连接,已经创建的连接继续有效。

ip link 命令

命令:

  1. ip link set IFNAME mtu MTU

IPv6中PMTU的最小值为1280,如果mtu值设置小于1280则会导致IPv6地址丢失。其它设备无法ping通该IPv6地址。

ip addr命令

  1. 命令:

    1. ip [-6] addr add IFADDR dev IFNAME

    添加IPv6地址可以选择添加-6选项也可以不添加,ip addr命令会根据具体地址类型来判断是ipv4地址还是IPv6地址。

    如果指定“-6”选项,但是IFADDR 是ipv4地址则会有错误返回。

  2. 命令:

    1. ip [-6] addr add IFADDR dev IFNAME [home|nodad]

    [home|nodad] 选项只针对IPv6地址有效。

    • home:将该地址指定为RFC 6275中定义的家庭地址。(这是移动节点从家庭链路获取的地址, 是移动节点的永久地址,如果移动节点保持在相同的归属链路中,则各种实体之间的通信照常进行。)
    • nodad:配置该项(仅限IPv6)添加此地址时不执行重复地址检测DAD(RFC 4862)。如果一台设备上多个接口通过nodad配置了多个相同的IPv6地址,则会按照接口顺序使用该IPv6地址。同一个接口上不能添加一个nodad一个非nodad的相同IPv6地址。因为两个地址是一样的,所以会报“RTNETLINK answers: File exists”。
  3. 命令:

    1. ip [-6] addr del IFADDR dev IFNAME

    删除IPv6地址可以选择添加-6选项也可以不添加,ip addr del命令会根据具体地址类型来判断是ipv4地址还是IPv6地址。

  4. 命令:

    1. ip [-6] addr show dev IFNAME [tentative|-tentative|deprecated|-deprecated|dadfailed|-dadfailed|temporary]
    • 不指定-6选项,则会同时打印IPv4和IPv6地址。指定-6选项则只打印IPv6地址。
    • [tentative|-tentative|deprecated|-deprecated|dadfailed|-dadfailed|temporary],这些选项只针对IPv6,可以根据IPv6地址状态对地址进行筛选查看。
      1. tentative:(仅限IPv6)仅列出尚未通过重复地址检测的地址。
      2. -tentative:(仅限IPv6)仅列出当前未处于重复地址检测过程中的地址。
      3. deprecated:(仅限IPv6)仅列出已弃用的地址。
      4. -deprecated:(仅限IPv6)仅列出未弃用的地址。
      5. dadfailed:(仅限IPv6)仅列出重复地址检测失败的地址。
      6. -dadfailed:(仅限IPv6)仅列出未重复地址检测失败的地址。
      7. temporary:(仅限IPv6)仅列出临时地址

ip route命令

  1. 命令:

    1. ip [-6] route add ROUTE [mtu lock MTU]
    • -6选项:添加IPv6路由可以选择添加-6选项也可以不添加,ip route命令会根据具体地址类型来判断是IPv4地址还是IPv6地址。

    • mtu lock MTU:锁定路由的MTU值。如果不锁定MTU,则MTU的值则可能在PMTUD过程中被内核改变。如果锁定MTU,则不会尝试PMTUD,所有IPv4包都将不设置DF位发出,IPv6包则会按照MTU进行分段处理。

  2. 命令:

    1. ip [-6] route del ROUTE

    删除IPv6路由可以选择添加-6选项也可以不添加,ip route命令会根据具体地址类型来判断是IPv4地址还是IPv6地址。

ip rule命令

  1. 命令:

    1. ip [-6] rule list

    -6选项:设置-6选项打印IPv6的策略路由,不设置-6选项打印IPv4的策略路由。所以需要根据具体协议类型来配置-6选项。

  2. 命令:

    1. ip [-6] rule [add|del] [from|to] ADDR table TABLE pref PREF

    -6选项:IPv6相关的策略路由表项需要设置-6选项,否则会报错:“Error: Invalid source address.”。相应地,IPv4相关的策略路由表项不可以设置-6选项,否则会报错:“Error: Invalid source address.”。