当我运行时,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