当前位置:首页 > 娱乐

dns域名解析失败是哪里出了问题

浏览器弹出“DNS_PROBE_FINISHED_NXDOMAIN”的名解那一刻,大多数人第一反应是析失“网断了”。但微信还能发消息,败里路由器指示灯也正常。出问问题不在网络通不通,名解而在域名解析这一步卡住了——你的析失电脑向DNS服务器问“百度的IP是多少”,对方要么没回答,败里要么答错了。出问

我遇到过最典型的名解一次,是析失同事家里换了新路由器,所有设备上网正常,败里唯独他那台Windows台式机打不开任何网页。出问ping 114.114.114.114 通的名解,ping baidu.com 直接返回“找不到主机”。析失这说明底层链路没问题,败里问题出在域名到IP的翻译环节。后来发现是路由器下发的DNS地址写成了192.168.1.1,而那个地址上根本没有跑DNS服务。手动改成223.5.5.5,立刻恢复。

先分清是谁的锅

DNS解析失败不是单一故障,它是一条链子,任何一环断了都会表现成“打不开网页”。链子大致是这样:你的设备配置了某个DNS服务器地址 → 请求发到那个服务器 → 服务器去问根域、顶级域、权威域 → 拿到结果返回给你。哪一步出问题,症状都不一样。

如果连DNS服务器地址都配错了,比如填了个不存在的IP,那请求根本发不出去。如果DNS服务器本身挂了或响应超时,你会感觉“转圈很久然后失败”。如果DNS服务器能通但返回了错误结果,比如把域名解析到127.0.0.1,那是DNS污染或本地hosts文件被改了。

几个我实际踩过的坑

有一次公司内网突然大面积打不开外部网站,但能上内网OA。查了半天,发现是内网DNS服务器转发器配置丢了,它自己解析不了外部域名,又不往外转发。运维上去补了一条forwarders配置就好了。这种问题外网用户完全无感,只有内网的人遭殃。

还有一次更隐蔽。家里NAS上跑了个AdGuard Home做DNS去广告,结果某天它自己更新后监听端口变了,路由器还在往旧端口发请求。所有设备DNS全部超时。表面看是“网络故障”,实际是DNS服务端口不匹配。把AdGuard的监听端口改回去,或者改路由器DHCP下发的DNS地址,二选一即可。

手机上的表现又不一样。iPhone连WiFi后个别App打不开,但Safari正常。这种情况往往是App内置了DoH(DNS over HTTPS)或者用了自己的DNS,跟系统DNS走了不同路径。系统DNS能解析的域名,App的DoH服务器可能被墙或者配置错误。

怎么快速定位

Windows下打开cmd,先 nslookup baidu.com。如果返回“DNS request timed out”,说明请求根本没到服务器或者服务器没回。换一个公共DNS再试:nslookup baidu.com 223.5.5.5。如果这个能通,说明是你本机配置的DNS服务器有问题。如果也不通,检查防火墙是否拦了UDP 53端口,或者路由器是否做了DNS劫持。

Mac和Linux下用 dig 更直观。dig @8.8.8.8 baidu.com 看返回状态。SERVFAIL通常是权威服务器出了问题,NXDOMAIN是域名不存在,TIMEOUT就是网络层或防火墙拦截。

还有一种情况容易被忽略:本地hosts文件。Windows在 C:\Windows\System32\drivers\etc\hosts,Mac和Linux在 /etc/hosts。有人为了屏蔽某个网站往里写了一条 0.0.0.0 example.com,后来忘了,再访问那个域名就永远解析失败。删掉那行就行。

我的判断逻辑

碰到DNS解析失败,我不会先重启路由器。先看范围:只有一台设备不行,还是所有设备都不行。只有一台,查那台的DNS配置和hosts。所有设备,查路由器DHCP下发的DNS地址,或者上游DNS服务状态。再看协议:能ping通IP但ping不通域名,基本锁定DNS。最后换公共DNS交叉验证,能通就是本地DNS服务器的问题,不能通就是链路或防火墙的问题。

多数时候,把DNS服务器从自动获取改成手动指定一个可靠的公共DNS,问题就消失了。但要知道,这只是绕过故障,不是修复故障。真正的原因可能在路由器、在运营商、在某个你根本没注意到的本地服务上。

分享到: