ip addr sh 中的“已弃用”?

Lit*_*ode 3 networking debian ipv6 network-interface

当我运行时,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 
Run Code Online (Sandbox Code Playgroud)

/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
Run Code Online (Sandbox Code Playgroud)

Ark*_*zyk 6

弃用地址是一个 IPv6 概念,例如在RFC4862 中描述 :

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

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

我不知道 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
Run Code Online (Sandbox Code Playgroud)