前言

搬新家之初,我买了一台小米路由器,因为偶发性故障,即重置状态下,电脑通过网线直连路由器也无法正确获取到ip地址,退货后选择了 H3C B6 路由器。

那时候还用着电信 20Mbps 的宽带,时不时觉得上网很慢,下载和测速却能跑满带宽。具体表现为:刷新朋友圈,微博,QQ空间动态等等,或者显示图片时不时要等待十来秒。后来换宽带并换软路由设备后,上网体验恢复了正常。

而现在老家也换成了移动 300Mbps 的宽带,把新华三这个路由器带回家来使用,则遇到了和之前一样的问题。有时候在小米应用商店更新 APP,点击“升级”后要等待十几秒后才会开始下载。修改 DNS 为阿里公共 DNS 也没有解决该问题。

我把这称为“网络惰性”。

发展

昨天偶然发现,我无法访问纯 ipv6 的地址(比如我新家的软路由和 nas ),使用 ipv6-test 网站测试,显示我没有 ipv6 地址。查看电脑的网卡信息,发现 ipv6 一栏确实变成了保留 ipv6 地址;重启路由器后又能正常获取到 ipv6 公网地址,并且能够正常访问。

因为这,我突然想起了曾经在新家用这个路由器的时候,时不时会遇到我在外无法通过 ipv6 访问家中 nas 设备的情况,那时候还以为是移动网络访问电信网络可能存在问题。后来新家换成移动宽带并换了软路由之后,从未出现过无法访问的情况。

于是我猜测,“网络惰性”这个问题可能是因为很多app现在会优先尝试 ipv6 连接,连接不上再使用 ipv4

尝试解决

今天醒来后,发现我的手机在连接 WIFI 的状态下能够获取到公网 ipv6,但是仍然无法访问我新家的路由器和 nas,在网站测试依然显示我没有 ipv6 地址。在电脑上 ping 路由器获取到的公网 ipv6 地址则无法访问目标主机。

家中的网络连接图,有公网ipv6但无法访问猜测是无法获取到dns

向新华三的客服阐述了我的问题之后,对方建议要么使用有线中继,要么使用路由器拨号。

不同于动态获取上网的方式,有线中继则是统一由光猫分配局域网设备的 IP 地址,统一管理,而前者是路由器作为二级路由来分配局域网设备的 IP 和统一管理。

更改成有线中继模式后,我的电脑网卡的 ipv4 确实成了 192.168.1.2,路由器的管理地址成了 192.168.1.4,而此前是 192.168.2.x。但是电脑网卡的 ipv6 依然是保留地址(后续测试中发现禁用网卡再启用能正常),手机重新连接 WIFI 后倒是能够获取到公网 ipv6。

测试了一下,在小米商店更新应用,确实能即点即下。

但考虑到光猫的性能大概率不如路由器,并且上面提到的问题并没有完全解决,所以我把光猫改成了桥接模式,使用路由器来拨号。我发现路由器那边获取到的信息有了一点变化:

改为路由器拨号之前无法获取辅DNS

改为路由器拨号之后可以获取辅DNS

从上面两图可以看到,前后的区别在于默认网关、主辅 DNS。其中,主 DNS 是公网地址,而此前是私网地址,或许这是造成局域网设备即便获取到公网 ipv6 地址依然无法访问纯 ipv6 地址的原因。

0206更新

光桥路拨的情况下,几小时后再次无法获取公网ipv6,后来仔细看了原来是租约只有两小时,租约到期后竟然不自动续订,即便设备一直连接着路由器。

凌晨排查的时候了解到了更多的 ipv6 知识,比如有状态和无状态,RA 通告以及 M 和 O 。其中,RA 通告默认开启,O 的状态为 1。参考这篇文章

但是多番测试,发现并非 M 和 O 的问题。既然是租期到期后不自动续期,那我是不是应该把 RA 通过的时间改小一点,在租约过期之前续约呢?于是我把最小等待时间改成 5,最大等待时间改成 10。这时我发现笔记本网卡中的 ipv6 地址租期每分钟都在更新——导致的另一个问题就是,访问网页时不时会提示连接已中断,网络出现更改。

光猫里对ipv6的配置远远多于h3c路由器,似乎两者搞反了

中午十一点多联系客服,一起查看了光猫的配置,对方说看配置是没问题的。后来给我发了一个固件,说是修复 ipv6 的,建议我先试试。

安装固件后,路由器提示有更新,但是我没管。经过几个小时的测试,发现租约到期前半个小时的时候,会自动再续约半个小时了,问题得以解决。

结语

这个问题折腾我太长时间了。一开始我就问新华三的工作人员,有没有可能是路由器的固件有问题,对方回复说大概率是光猫的问题。但是最后解决问题的方式还是用工作人员提供的“修复 ipv6 问题”的固件。

这次折腾也并非毫无所获,之前光猫和路由在默认或者自适应状态下,一切都太过于顺利,所以我对 ipv6 的了解其实并不多。这一次经历好歹让我了解了更多知识——虽然没能自己解决问题。