服务器DNS解析出问题,绝大多数情况是本地缓存污染或上游DNS服务器响应异常,最快的解决办法是刷新本地DNS缓存并临时把解析指向公共DNS,例如114.114.114.114或223.5.5.5,这一操作能解决大部分临时性故障。
先搞清楚DNS解析到底在干什么
DNS解析本质上是个“翻译”过程,你访问一个网站时输入的是域名,但服务器之间通信靠的是IP地址,DNS就是那个把域名翻译成IP的“翻译官”。
这个翻译官平时工作得很低调,你几乎感觉不到它的存在,可一旦它出问题,你的服务器会表现出一系列让人抓狂的症状:网站打不开、SSH连不上、yum或apt安装软件超时、curl请求卡住不动,更麻烦的是,不同服务器上的表现还不一样,有的机器正常,有的机器全挂。
DNS的日常工作流程
一次完整的DNS解析流程要经过好几道关卡,你的服务器先查本地缓存,缓存里没有就查系统配置的DNS服务器,这台服务器如果没有,就会向上级DNS服务器迭代查询。
这个链条上的任何一环出问题,都会导致解析失败。
域名dns解析失败的几种原因
行业内把DNS故障的原因大致归为以下几类,你可以对照排查:
- 本地缓存污染:服务器缓存了错误的DNS记录,导致域名被解析到错误的IP地址。
- 上游DNS服务器故障:你配置的DNS服务器(比如某个公共DNS)本身响应缓慢或直接宕机。
- 域名本身状态异常:域名过期未续费、被注册商暂停解析(serverHold)、NS记录被篡改。
- 防火墙或安全组拦截:服务器的安全组规则封禁了UDP 53端口,或本机防火墙屏蔽了DNS请求。
- 系统配置错误:
/etc/resolv.conf配置了不可达的DNS地址,或配置文件被其他程序覆盖。
行业共识认为,本地缓存污染和上游DNS故障合起来占了DNS问题的绝大多数比例,纯硬件故障反而少见。
动手排查:三步定位问题源头
排查DNS问题不需要复杂工具,几条命令就能锁定范围。
第一步:看看到底是“全挂”还是“针对单个域名”
在服务器上执行以下命令,分别解析一个知名域名和你的业务域名:
nslookup baidu.com
nslookup yourdomain.com
观察输出结果:
- 如果两个域名都解析失败,问题出在本地DNS配置或网络链路上。
- 如果只有你的业务域名解析失败,问题出在域名本身,比如域名过期或NS记录配置错误。
- 如果解析结果返回了错误IP,基本就是DNS缓存被污染了。
第二步:刷新本地解析缓存
不同系统的清理命令不同,直接在服务器上按需执行。
Windows Server:
ipconfig /flushdns
Linux(CentOS 7/8 或使用systemd-resolved的系统):
sudo systemd-resolve --flush-caches
Linux(其他版本):
sudo /etc/init.d/nscd restart
或者
sudo service dnsmasq restart
清理完缓存后,再执行一次第一步的解析命令,看是否恢复正常。
第三步:临时切换公共DNS做对比测试
修改系统的DNS配置,临时指向公共DNS,排除上游DNS服务器故障的可能。
# 临时测试,直接改 resolv.conf
echo "nameserver 223.5.5.5" > /etc/resolv.conf
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
改完后再次解析刚才失败的域名,如果恢复正常,说明原DNS服务器确实有问题,那就属于dns服务器未响应怎么解决的范畴,直接换掉就行。
DNS解析失败怎么修复?分场景给出方案
不同环境下的修复方式有差异,下面按场景拆解。
家用或办公网络下的Windows电脑
Windows系统碰到DNS解析失败的情况,先走一遍图形化操作流程。
右键点击任务栏网络图标,打开“网络和Internet设置”,进入“更改适配器选项”,找到当前连接的网络,右键点击属性,双击“Internet协议版本4(TCP/IPv4)”,勾选“使用下面的DNS服务器地址”,首选填5.5.5,备用填29.29.29。
改完点确定后生效,如果之前有DNS缓存问题,顺手在命令行再执行一次ipconfig /flushdns。
这组地址分别是阿里DNS和腾讯DNSPod的公共DNS,兼容性较好,多数情况下能解决Windows上网时遇到的解析异常。
Linux服务器的dns配置错误修复
Linux服务器的DNS配置比Windows稍复杂,因为牵扯到NetworkManager和systemd-resolved的接管问题。
临时生效的方式是直接修改/etc/resolv.conf,但这只是临时的,重启网络服务或重启服务器后,这个文件可能被系统自动重置,也就是Linux服务器dns配置错误修复中常见的“改完又变回去”问题。
永久生效的正确姿势是看你的系统用哪种网络管理方式。
如果你的系统用的是NetworkManager,通过nmcli命令设置:
nmcli con mod "你的连接名称" ipv4.dns "223.5.5.5 119.29.29.29"
nmcli con up "你的连接名称"
如果你用的是systemd-resolved,执行:
sudo resolvectl dns 你的网卡名 223.5.5.5 119.29.29.29
如果你用的是纯静态配置的网络,修改/etc/sysconfig/network-scripts/ifcfg-eth0,添加或修改DNS1=223.5.5.5和DNS2=119.29.29.29,然后重启网络服务。
网站域名解析异常
这种情况出现在别人访问你的网站打不开,但你自己的服务器本身解析正常。
先用whois查询域名状态,看是否处于clientHold或serverHold状态,这种状态通常意味着域名被注册商暂停解析,常见原因是未完成实名认证或涉及违规内容。
再用nslookup加指定DNS服务器的模式查询域名的权威服务器:
nslookup -type=NS yourdomain.com 223.5.5.5
对比一下查询结果跟你域名注册商后台显示的NS记录是否一致,如果不一致,可能是NS记录被恶意修改了,需要立即登录域名注册商后台重置。
选对DNS服务器:对比常见公共DNS
公共DNS的选型也会影响服务器的解析稳定性和速度,下表整理了近年国内使用率较高的几款公共DNS。
| DNS服务商 | 首选地址 | 备用地址 | 特点 |
|---|---|---|---|
| 阿里DNS | 5.5.5 | 6.6.6 | 国内访问速度快,抗污染能力强 |
| 腾讯DNSPod | 29.29.29 | 254.116.116 | 与酷番云生态联动好,解析记录更新快 |
| 114DNS | 114.114.114 | 114.115.115 | 老牌DNS,拦截钓鱼网站,稳定性好 |
| 百度DNS | 76.76.76 | 无 | 国内节点覆盖多,延迟低 |
| Google DNS | 8.8.8 | 8.4.4 | 全球解析能力强,但国内访问有延迟 |
如果你的服务器主要面向国内用户,优先选择阿里DNS或腾讯DNSPod,解析速度和准确性有保障,如果服务器涉及海外业务,需要同时保证国内外解析质量,可以考虑在服务器上搭配使用国内公共DNS和Google DNS,主备分开配置。
两个容易被忽略的干扰源
有些DNS问题反复出现,修好又复发,问题不在解析链路上,而是藏在下面两个角落。
Hosts文件和本地解析冲突
/etc/hosts 文件(Windows下是C:WindowsSystem32driversetchosts)会强制指定域名和IP的对应关系,绕过DNS解析。
如果你在hosts文件里写了一条过期或错误的映射记录,那么无论DNS服务器怎么配置,系统都会优先使用hosts里的结果。
排查方法很简单,用文本编辑器打开hosts文件,把不是自己添加的记录清空,特别留意文件中是否出现了你不知道的异常条目。
云服务商安全组和防火墙的限制
云服务器的安全组规则默认只放行必要的端口,UDP 53端口恰好经常被忽略。
如果你发现服务器能用IP访问网站,但用域名访问全部失败,检查一下云控制台的安全组入站和出站规则。
UDP 53端口是DNS查询的默认端口,如果出站规则中封禁了这个端口,服务器发出的DNS请求会被拦截,解析自然失败,在安全组中放行UDP 53端口的出站流量能解决这个问题。
服务器dns解析出问题怎么办?常见问题解答
Q:刷新缓存后仍然提示DNS解析失败?
A:刷新缓存只是第一步,如果缓存清理后依旧报错,需要检查/etc/resolv.conf文件是否被系统服务覆盖,很多发行版默认安装了systemd-resolved,它会接管resolv.conf的修改权限,你手动写入的DNS地址可能在几秒内就被重置,可以通过ls -l /etc/resolv.conf查看该文件的软链接指向,确认是否被systemd-resolved接管,若是,应使用resolvectl命令更新DNS配置。
Q:服务器DNS解析慢如何优化?
A:解析慢通常是对接的上游DNS服务器响应慢,先用dig命令统计解析耗时,dig baidu.com的信息会中带有查询时长,如果耗时超过100毫秒,建议更换DNS服务器,本地服务器配置内网DNS也能减少公网延迟,例如使用云服务商提供的内网DNS地址,公网访问时走就近节点查询。
Q:域名解析配置正确但ping不通域名?
A:此时先确认ping不通的是域名还是IP,在服务器上ping 8.8.8.8,如果IP通而域名不通,问题在DNS解析层面,如果IP本身不通,问题出在网络连通性、路由或安全组规则上,与DNS无关,DNS服务器只负责域名到IP的翻译,不负责路由转发,解析正常但ping不通IP时,需要检查的是网络链路。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/704598.html





