Windows笔记本无法使用本地PowerDNS服务器进行DNS查询的问题求助
这种WSL里本地DNS工作正常,但Windows系统层面死活不认的情况我太熟了,大概率是系统缓存、服务状态或者网络配置的小问题在搞鬼,咱们一步步来排查解决:
先清空Windows DNS缓存:旧的缓存记录很可能会干扰新的查询结果。打开管理员权限的命令提示符/终端,执行
ipconfig /flushdns,然后再试试ping probitas或者访问网页,看能不能正常解析。检查DNS Client服务状态:Windows的DNS解析依赖这个服务。按下Win+R输入
services.msc回车,找到「DNS Client」服务,确认它处于正在运行状态;如果没启动,右键选择「启动」,并把启动类型设为「自动」,避免下次重启又出问题。确认PowerDNS的监听地址:WSL里能访问不代表Windows能访问,可能你的PowerDNS只绑定了WSL内部的虚拟IP(比如172.x.x.x这类),没对外开放到Windows主机可访问的地址。在WSL终端里执行
netstat -tulpn | grep pdns,查看监听的IP,如果只有WSL的内网IP,就修改PowerDNS的配置文件(通常是/etc/powerdns/pdns.conf),把listen-address设为0.0.0.0(监听所有地址),然后重启PowerDNS服务(sudo systemctl restart pdns)。排查Windows防火墙拦截:Windows Defender防火墙可能挡住了Windows向PowerDNS发起的UDP 53端口请求。可以临时关闭防火墙测试一下,如果能正常解析了,就给192.168.0.100添加一条UDP 53端口的入站允许规则,这样防火墙就不会再拦截了。
验证DNS服务器的可访问性:直接在Windows终端里用
nslookup probitas 192.168.0.100(或者装了dig的话用dig @192.168.0.100 probitas),如果能返回正确的IP,说明服务器本身能被Windows访问,问题出在系统默认DNS的优先级上——这时候可以试试把路由器的DNS从第二位置删掉,只留本地PowerDNS,再测试;如果还是不行,可以通过组策略调整DNS查询的优先级顺序。
备注:内容来源于stack exchange,提问作者ariel

