我有一个基于 Linux 的 DSL 路由器,运行着 radvd。由于我的 ISP 的前缀可能会改变,因此当前缀改变时,我必须更改 radvd.conf。例如,像这样。
interface br-lan
{
AdvSendAdvert on;
MinRtrAdvInterval 20;
MaxRtrAdvInterval 60;
prefix 2001:db8:aaaa:1::/64
{
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr off;
DeprecatePrefix on;
AdvPreferredLifetime 86400;
AdvValidLifetime 1000000;
};
};
但是我的一台 Fedora(Fedora29,最近 yum 更新)笔记本出现了问题。
即使前缀已更改为 2001:db8:aaaa:2::/64,它仍继续使用 2001:db8:aaaa:1::/64 前缀,如下所示:
$ ip a s dev wlp1s0
3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
inet 192.168.0.64/24 brd 192.168.0.255 scope global dynamic noprefixroute wlp1s0
valid_lft 63097sec preferred_lft 63097sec
inet6 2001:db8:aaaa:1:830f:530c:7d46:ad33/64 scope global dynamic noprefixroute
valid_lft 929545sec preferred_lft 15945sec
inet6 2001:db8:aaaa:2:db4e:debc:4e36:9c1d/64 scope global dynamic noprefixroute
valid_lft 999970sec preferred_lft 86370sec
inet6 fe80::a8aa:aaff:feaa:aaaa/64 scope link noprefixroute
valid_lft forever preferred_lft forever
旧的、弃用的和坏的地址甚至被优先使用,并且将在连接到远程 ipv6 端点时用作源地址,并且会失败。我可以通过 手动删除弃用的地址ip a d ... dev wlp1s0
,但它会在路由器广告包之后回来,即使包是正确的,并且弃用的地址的 valid_lft 没有增加。在 /var/log/message 中发现了一些日志:
Dec 18 21:40:28 fedora avahi-daemon[835]: Withdrawing address record for 2001:db8:aaaa:1:830f:530c:7d46:ad33 on wlp1s0.
Dec 18 21:41:16 fedora avahi-daemon[835]: Registering new address record for 2001:db8:aaaa:1:830f:530c:7d46:ad33 on wlp1s0.*.
同一网络中的其他设备,两个windows10客户端和一个CentOS7工作正常。