12 月 25 日下午,网络中心把 LUG 权威 DNS 服务器的上游网关设备从西区迁移到了东区,网关的 link-local IPv6 地址和 MAC 地址发生了改变。但由于该服务器的 IPv6 地址是静态配置的,使用了 link-local 地址作为网关,该地址已经不可用,因此权威 DNS 的 IPv6 网关中断。
iface eth0 inet6 static address 2001:da8:d800:f001::5353 gateway fe80::212:44ff:fe66:2000 netmask 64
获取不到网关 MAC 地址的情况:
[email protected]:~$ ip -6 neigh fe80::250:56ff:fe9f:4 dev eth0 lladdr 00:50:56:9f:00:04 STALE 2001:da8:d800:f001:250:56ff:fe9f:4 dev eth0 lladdr 00:50:56:9f:00:04 STALE fe80::72ca:9bff:fece:31a2 dev eth0 lladdr 70:ca:9b:ce:31:a2 STALE fe80::212:44ff:fe66:2000 dev eth0 router FAILED
现在 /etc/network/interfaces
中修改了 IPv6 gateway 为 2001:da8:d800:f001::1。并执行如下命令(远程机器不要轻易执行 service networking restart
,网络起不来就悲剧了):
ip -6 route add default via 2001:da8:d800:f001::1 ip -6 route del default via fe80::212:44ff:fe66:2000
几秒钟后就通过 ICMPv6 协议获取到了网关的 MAC 地址,服务器的 IPv6 连接恢复正常。
[email protected]:~$ ip -6 neigh 2001:da8:d800:f001:225:90ff:fe32:a676 dev eth0 lladdr 00:25:90:32:a6:76 REACHABLE fe80::250:56ff:fe9f:4 dev eth0 lladdr 00:50:56:9f:00:04 STALE 2001:da8:d800:f001:250:56ff:fe9f:4 dev eth0 lladdr 00:50:56:9f:00:04 STALE fe80::212:44ff:fe66:2000 dev eth0 router FAILED fe80::225:90ff:fe32:a676 dev eth0 lladdr 00:25:90:32:a6:76 REACHABLE 2001:da8:d800:f001::1 dev eth0 lladdr 5c:dd:70:91:72:e2 router REACHABLE
此外,之前 /etc/resolv.conf
的内容如下,当 IPv6 不通时,前两个 nameserver 都会解析失败,这导致 LDAP 客户端无法解析 ldap.lug.ustc.edu.cn 的域名,也就是用不了 sudo 了。
search lug.ustc.edu.cn nameserver 2001:da8:d800::1 nameserver 2001:da8:d800::56 nameserver 202.38.64.1
采用本地账号 sudo,把 nameserver 202.38.64.1
移到了 IPv6 之前,以免 IPv6 再出现不稳定的情况。
我现在很少用/etc/init.d/networking restart,而是有针对性的执行ifdown/ifup。这样对于执行命令的结果有更明确的预期。