DNS服务器故障听起来很严重,本质就是域名解析环节卡住。输入网址,本该把域名翻译成IP地址,这个转换流程失效。网络本身可能正常,微信消息能收发,但浏览器打不开网页。遇到这类现象,大概率就是DNS解析异常。
典型报错在浏览器里很常见,提示找不到服务器、DNS_PROBE_FINISHED_NXDOMAIN,或是页面一直转圈直到超时。尝试ping域名,返回找不到主机;直接ping网站IP,却可以正常连通。这就说明网络通路没问题,问题卡在域名转IP这一步。还有一类情况,部分网站正常打开,部分无法访问。说明不是全部解析服务瘫痪,可能是目标域名权威服务器故障,或是本地缓存保存了错误记录。

排查不要直接下定论,从近处开始检查。本机DNS缓存优先排查,Windows打开命令行执行ipconfig /flushdns,Mac运行sudo dscacheutil -flushcache,清空缓存重试。有时候缓存保存过期或者错误IP,清理之后故障直接消失。接着查看hosts文件,路径C:WindowsSystem32driversetchosts或者/etc/hosts,检查里面是否存在手动添加的异常映射,有就先注释掉。
查看本机配置的DNS地址。网络设置自动获取时,一般是运营商分配DNS;手动配置,常见114.114.114.114、8.8.8.8。无论哪种,用nslookup或者dig直接向该DNS查询,命令格式nslookup 域名 你的DNS地址。超时或者返回SERVFAIL,代表当前DNS服务异常。更换公共DNS,223.5.5.5或者1.1.1.1测试,如果更换后解析恢复,根源就是原来DNS服务器问题。
更换DNS依旧失败,就要检查域名本身。通过whois查看域名是否过期,或是状态被hold。域名到期未续费,注册商会暂停解析,所有解析请求都会失效。查看域名NS记录,dig NS 你的域名,确认权威DNS服务器地址。直接向权威DNS发起查询dig @权威DNS地址 你的域名,权威服务器都无法返回记录,代表域名配置出错,和本地网络无关。
自己搭建DNS服务器,比如BIND、dnsmasq,排查思路不一样。确认服务进程运行状态,systemctl status named或者ps aux | grep dnsmasq。校验配置语法,执行named-checkconf;区域文件用named-checkzone检测。防火墙放行53端口,TCP、UDP都要开放。如果采用转发模式,验证转发服务器连通性,dig @转发器地址 域名测试。
运营商DNS故障并不少见。局部递归服务器宕机、缓存污染或者路由异常都有可能。现象是同一网络下全部设备解析失败,切换手机流量访问恢复。这种情况本地无法修复,只能等待运营商处理,临时切换公共DNS过渡。
还有隐蔽故障类型:DNS解析成功,但返回IP地址错误。域名被劫持跳转广告页面,或是CDN调度异常,分配远距离节点。单纯dig很难察觉,需要对比多个DNS返回结果,或是在线多节点解析工具检测。只有本机获取IP和其他地区不一致,基本就是本地DNS遭到污染。
排查DNS故障,核心思路逐层向外定位。先确认故障属于DNS解析问题,再区分问题来源:本机、路由器、运营商还是域名本身。每一步依靠命令验证,不要凭猜测判断。多数场景,清理缓存、更换DNS、核对域名状态这几步就能定位问题。剩下如果是域名注册商、权威DNS侧故障,本地再怎么操作都没用,只能等待修复或者联系服务商。