WiFi环境下Windows设备无法解析Pi-hole本地DNS记录,有线连接及Linux设备无异常
问题详情
我家里的网络碰到了个特别奇怪的DNS问题,只有同时满足以下三个条件的DNS查询会失败:
- 目标记录是Pi-hole本地直接配置的(不需要向上游DNS发起请求)
- 查询客户端是Windows系统设备
- 客户端通过WiFi连接网络
我的网络基础配置:家里是宽带接入,用的是ISP提供的路由器,但核心的DHCP和DNS服务是由一台Pi-hole设备承担的。我在Pi-hole上配置了几个方便使用的本地DNS记录,比如storage指向我的NAS、nginx指向Web服务器、kodi指向媒体播放器,这套配置已经稳定运行好几年了。
从昨天开始,毫无征兆地,我的Windows 10笔记本查询这些本地记录时开始失败——运行nslookup后只会返回“DNS request timed out”。但查询需要Pi-hole向上游请求的外部域名却完全正常。我先后重启了Pi-hole、笔记本,甚至连路由器也重启了一遍,问题还是没解决。
之后我用局域网里的Linux服务器做了测试,不管是本地域名还是外部域名,解析都完全正常。查看Pi-hole的日志发现:它对Linux服务器和Windows笔记本的本地查询请求,返回的响应是完全一致的。换了另一台Windows笔记本测试,结果和我的一模一样——本地解析失败,外部解析正常。
最让人摸不着头脑的是:把Windows笔记本换成有线连接路由器后,所有本地DNS记录都能立刻正常解析。
可疑关联事件
差不多在问题出现的同一时间,我的网络里出现了一个陌生设备,它肯定不是通过有线连接的,而且我家WiFi是WPA2加密,密码强度很高,被破解的可能性极低。这个设备大概每小时会发起一次对dcs-global.samknows.com的DNS查询。
我能想到的唯一解释是ISP给路由器推送了固件更新,启用了这个和SamKnows相关的设备,进而影响了WiFi的DNS处理逻辑,但这个猜测非常牵强,可能完全是巧合,所以希望有经验的朋友能帮忙分析下到底哪里出了问题。
备注:内容来源于stack exchange,提问作者Frank

