关于我家的网络配置失误导致路由器收到了错误的 RA 导致 IPv6 路由炸了这件事

开篇废话

这两周家里网络感觉很烂,刷推图片很难加载出来,然后 YouTube 经常降到 360p (

然后朋友来我家也说很卡「哎呀哎呀,你家里的网络实在是太慢了」,当然实际情况是个叠加 debuff,除了本文提到的问题还有大家喜闻乐见的 IP 冲突

告诉我们静态 IP 不要设置到动态 IP 段里面,或者要固化。

总之网络有点小毛病,周末终于有空排查了下(

症状

路由器开机后1分钟内,wan6 就会被挂上奇怪的地址:
luci

LUCI里面:

LAN:
IPv4: 172.21.85.1/27
IPv6: 2409:12:2ac1:1234::1/64
IPv6: fd50:d679:a8e3:c0de::1/64
IPv6: undefined/0

WAN:
IPv6: ::ba32:22ff:fac1:42ad/64
IPv6: 2409:12:2ac1:1234:ba32:22ff:fac1:42ad/64
IPv6-PD: 2409:12:2ac1:1234::/64
IPv6-PD: ::/64

cli 里面:

root@OpenWIT:~# ip -6 r 
default from ::/64 via fe80::ce2d:e0ff:fe4b:c33e dev eth0.101 proto static metric 512 pref medium
(略)
root@OpenWIT:~# ip -6 a
(略)
5: eth0.101@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 ::ba32:22ff:fac1:42ad/64 scope global dynamic noprefixroute 
       valid_lft 2591949sec preferred_lft 604749sec
    inet6 2409:12:2ac1:1234:ba32:22ff:fac1:42ad/64 scope global dynamic noprefixroute 
       valid_lft 2591973sec preferred_lft 604773sec
    inet6 fe80::ba32:22ff:fac1:42ad/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

看上去很诡异,已经试过重启大法了,OpenWrt 重启,还有宿主机重启,甚至是当 AP 用的路由器也重启了,还是摆脱不了这个野鸡地址。

按照经验猜不到的话,还是请我们的老朋友,电线鲨鱼了。

排查

我是电线鲨鱼直接连 Proxmox 宿主机的 vmbr0 作为 tcpdump (sshdump)直接连的,排查的重点是 icmp6 包,然后基本上我们看下 RA 就可以了:

icmpv6.type == 134

抓包的同时重启 wan6 口,直到 wan6 显示收到地址之后就可以停止抓包了。 总共就几个包:
wireshark

点了几下发现个比较离谱的包,然后根据 mac 找到真凶了 ———————

原来是我上个月配了一半然后弃坑了的交换机在乱发 RA(

ros
然后就把配置掀了再说,以后有空再继续折腾了。

后面看了下 RouterOS 这个配置好像是默认就存在的,比较奇妙

总结

总之这是篇简单的网络排障文,有 Wireshark 以及一点网络知识的话,排查起来就挺就简单的。

不过我很好奇的是,另外一台 OpenWrt 22.03 还有几台服务器都没事,为啥就家用区的 OpenWrt 24.10 这样炸了呢?

然后就是 OpenWrt + Mikrotik 两个灵车组合,真是想不炸都难,当然好处是凭本事修。

总之不想折腾了,能用就行了的说。

IPv6 是真的复杂,怪不得普及不了