前言

目前没有出现网页解析失败的问题,但是仍会间歇性出现网络缓慢或断网问题,文章可能存在事实性错误

前阵子被 openwrt 拨号断流的问题折腾得心力交瘁,使用了一段时间的光猫拨号以后,甚至产生了“为什么非得要路由器拨号”的想法。

这阵子在 V 站、闲鱼、恩山无线论坛和 H 大的 immortalwrt-mt798x 项目 issue 中分别请教了问题,得到了很多热心网友的建议,但还是没有解决问题。

后来加了 immortalwrt 官方的社群,在群里咨询大佬后,有大佬给出建议,然后我找到了问题的根源!

简单来说:域名解析的时候被转发到群晖去了。

问题排查

在社群中描述了详细的情况后,大佬给出了他的思路,按照思路排查下去,症结浮出水面。

大佬首先让我执行 uci show dhcp,查看结果只有一个 IPV6 设置的问题,即我在 LAN 口将 DHCPv6 设置成了中继模式(hybrid)。而 WAN 口拨号后,自动生成的 wan_6 接口是能获取到 PD 前缀的,大佬说这个能不开就不开。

问题不在这里,于是我分别执行大佬给出的两条命令,然后持续 nslookup 域名,当出现错误时对比两者的情况。

第一条命令:

tcpdump -i br-lan udp port 53 -w /tmp/lan.pcap

这条命令是使用 tcpdump 抓包 LAN 口,把数据记录在 lan.pcap 文件中。

第二条命令:

tcpdump -i pppoe-wan udp port 53 -w /tmp/wan.pcap

和上条很相似,不过是抓包 WAN 口,把数据记录在 wan.pcap 文件中。

在持续执行 nslookup 的时候,除了有一个域名我输错,此外没有发生解析异常。在终止了 nslookup 后,我查看了 lan.pcap 文件,问题一目了然:

lan.pcap记录

我执行 nslookup 之后,域名解析被转发到了局域网的黑群晖设备中。

此前卖家建议在群晖里手动设置 DNS,以便开机后能正常同步时间,所以我把群晖的 DNS 手动设置成了 114.114.114.114,并且貌似最后一段我还不小心写成了 144

难怪时不时出现域名解析不正常的情况,原来就是群晖中设置了错误的 DNS 的锅。

解决方法也很简单,把群晖的 DNS 设置为自动,为了保险起见,在群晖中关闭了 DHCP Server

关闭群晖dns server

再次开启抓包,执行 nslookupDNS 显然没再被转发到群晖去了:

抓包显示解析正常

最后

在得到这个思路以前,我联系了运营商,对方告知他们最近没有升级宽带服务器和后台,但是对“是否因为整治 PCDN 限制光猫桥接使用”这个问题没有正面回答。最后又转到分公司来,师傅说后面约个时间,找一个专业的师傅上门看看。

其实我内心知道宽带线路和光猫是没有问题的,也不认为他们能检测出什么问题来。最后我请大佬发个收款码,请他喝一杯奶茶。大佬很低调,给了我 immortalwrt 项目官方爱发电的链接,于是我捐赠给了项目官方。

为我错怪的 IPV6,为我错怪的路由器硬件,为我错怪的路由器插件道歉!

回想起来,一开始我就确定是 DNS 解析的问题,但是由于找不到更多解决方案,甚至抓包也没抓到路由器 LAN 口,导致一直没有解决问题。每次刷新固件后总有问题被解决的错觉,而现在,应该是真的解决了!