ip addr sh 中“已弃用”?

ip addr sh 中“已弃用”?

当我运行时,ip addr sh我看到我的辅助 IPv6 地址deprecated旁边有,而我的主 IPv6 地址却没有。有人可以帮忙解释一下吗?

inet6 2001:DB8::aaaa/64 scope global deprecated 
valid_lft forever preferred_lft 0sec
inet6 2001:DB8::bbbb/64 scope global 
valid_lft forever preferred_lft forever
inet6 2001:DB8::cccc/64 scope global deprecated 

我的/etc/network/interfaces看起来像这样:

allow-hotplug ens18
iface ens18 inet6 static
        address 2001:DB8::bbbb/64
        gateway 2001:DB8::ffff/64
        dns-nameservers 2001:DB8::1 2001:DB8::2

auto ens18:0
iface ens18:0 inet6 static
        name Sec1
        address 2001:DB8::aaaa/64

auto ens18:1
iface ens18:1 inet6 static
        name Sec2
        address 2001:DB8::cccc/64

答案1

弃用的地址是一个 IPv6 概念,例如在 RFC4862

已弃用的地址 - 分配给不鼓励但不禁止使用的接口的地址。已弃用的地址不应再用作新通信中的源地址,但从已弃用的地址发送或发送到已弃用的地址的数据包将按预期传送。已弃用的地址可以继续用作通信中的源地址,其中切换到首选地址会导致特定上层活动(例如,现有的 TCP 连接)出现困难。

你可以发现“deprecated”被打印出来ip您可以发现,如果在接口上设置了 IFA_F_DEPRECATED 标志, https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/tree/ip/ipaddress.c#n1195

我不知道 Debian init 系统的哪一部分将 IPv6 地址设置为已弃用,但您可以尝试创建一个新的 IPv6 地址并使用以下preferred_lft 0标记将其标记为已弃用ip

$ sudo ip  -6 addr add 2000:0db8:0:f101::1/64 dev eth0  preferred_lft 0
$ ip addr show | grep deprecated
    inet6 2000:db8:0:f101::1/64 scope global deprecated

相关内容