几乎所有人都碰到过“DNS服务器未响应”这个报错。电脑右下角网络图标显示正常,QQ消息可以收发,但浏览器打不开网页,长时间加载之后弹出这条提示。问题本质是域名转IP的解析流程中断,系统无法获取目标网站对应的IP地址。
这个报错不是目标网站故障,是本机向DNS服务器提交查询请求,服务器没有在规定时限内返回应答。DNS服务器可以是运营商自动分配,也可以是手动设置的公共DNS,像114.114.114.114、223.5.5.5。未响应,代表解析链路某个环节断开。
最常见的第一类原因,本地网络配置异常。路由器DHCP没有正常下发DNS地址,或是之前手动修改过DNS,填写了已经失效的IP。排查方式简单,打开命令提示符执行ipconfig /all,查看DNS服务器字段。如果为空,或是地址明显无效,切换为自动获取,或是填写可用公共DNS,大多可以修复。Windows可以执行ipconfig /flushdns清理本地DNS缓存,缓存内保存错误记录时,清理缓存之后重新查询即可恢复。

第二个常见原因,DNS服务器本身故障。运营商DNS偶尔会出现故障,晚高峰或是局部网络调整阶段更容易发生。现象是本地反复调试无效,更换公共DNS立刻恢复。可以执行nslookup 域名 223.5.5.5,指定向阿里DNS发起查询,如果可以返回结果,说明原有DNS服务器存在故障。备用方案就是更换稳定公共DNS,阿里DNS、腾讯DNS、114DNS国内响应都比较稳定,但不同地区、不同运营商实际速度有差异,可以用nslookup分别测试响应时间,挑选延迟最低的。
第三个原因出在路由器层面。部分路由器固件存在缺陷,DNS转发功能会间歇性失效。现象是电脑直连光猫拨号上网正常,接入路由器之后就提示DNS服务器未响应。重启路由器可以临时恢复,过几天故障复现。这类问题根治难度大,只能尝试刷固件或者更换路由器。还有一点需要留意,路由器DNS设置和电脑DNS是两层配置,路由器填写公共DNS,电脑自动获取网络配置,实际使用路由器转发的DNS。两层配置不一致,会出现路由器修改DNS,电脑却没有生效的困惑。
第四个原因,防火墙或是安全软件拦截DNS查询。DNS默认使用UDP 53端口,部分安全软件、企业网络策略会封禁该端口。典型特征是ping IP地址可以连通,ping域名失败。可以临时关闭防火墙测试,确认是拦截问题之后,在防火墙添加UDP 53端口放行规则。
还有一种情况,hosts文件被篡改。恶意程序或是部分软件会修改hosts,强制把域名指向特定IP。用户没有手动修改过这个文件,但解析结果异常。Windows的hosts文件路径C:WindowsSystem32driversetc,用记事本打开查看,除系统自带注释行,其余非本人添加的记录,就需要警惕。
推荐排查顺序由内向外。先执行ipconfig /flushdns清理缓存,再检查DNS服务器配置,用nslookup指定不同DNS服务器测试,接着排查路由器与防火墙,最后查看hosts文件。大部分故障在前两步就能定位。如果所有公共DNS查询同一个域名都失败,大概率是域名本身问题,比如域名过期、NS记录配置错误,和本地网络无关。单独一台设备打不开网站,其他设备正常,优先怀疑本机网络;同一局域网全部设备无法访问,故障在路由器或者运营商侧。