DNS解析不生效怎么办?详细排查方法
在网站搭建、服务器迁移或更换域名服务商时,很多人都会遇到一个问题:DNS解析不生效。明明已经添加了A记录、CNAME记录或MX记录,但网站就是打不开,域名仍然指向旧服务器,甚至提示“无法访问此网站”。如果你也遇到了类似情况,不要着急。
什么是DNS解析不生效?
DNS(域名系统)的作用,是把域名转换为IP地址。当你在浏览器输入网址时,系统会通过DNS服务器查询对应IP,然后访问服务器。
所谓“DNS解析不生效”,通常指:修改了解析记录,但访问仍然指向旧IP;添加新域名记录,但访问提示找不到服务器;邮箱无法收发(MX记录未生效);部分地区可以访问,部分地区无法访问;
这种情况,本质上是DNS查询结果与预期不一致。
DNS解析不生效的常见原因
在正式排查之前,先了解常见原因,比如解析尚未完全传播(缓存未刷新),本地DNS缓存未清理,域名未正确指向当前DNS服务商,解析记录填写错误,TTL设置过高,域名状态异常(未实名、被暂停),服务器未监听对应端口,CDN缓存未刷新,递归DNS服务器缓存问题。接下来我们按照从简单到深入的顺序进行排查。
第一步:确认解析是否真的没生效
1. 使用 nslookup 检查解析结果
Windows 或 macOS 终端执行:
nslookup yourdomain.com
示例输出:
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: yourdomain.com
Address: 1.2.3.4
重点看:返回的 IP 是否是你设置的目标 IP?查询的 DNS 服务器是否正确?如果返回的是旧IP,说明缓存未刷新或记录未生效。
2.. 使用 dig 命令(更专业)
Linux 或 macOS 可使用:
dig yourdomain.com
查看关键字段:
ANSWER SECTION:
yourdomain.com. 600 IN A 1.2.3.4
这里的 600 表示 TTL(秒)。
第二步:检查是否为本地缓存问题
很多时候,解析其实已经生效,只是你电脑缓存没刷新。
Windows 清除DNS缓存
ipconfig /flushdns
macOS 清除DNS缓存
sudo killall -HUP mDNSResponder
清理后重新访问测试。
第三步:检查域名是否指向正确DNS服务器
有时候你在某个DNS平台添加记录,但域名却没使用这个DNS服务。
查询域名使用的DNS服务器:
nslookup -type=ns yourdomain.com
示例输出:
yourdomain.com nameserver = ns1.exampledns.com
yourdomain.com nameserver = ns2.exampledns.com
确认:这些NS服务器是否属于你当前解析服务商?是否刚刚修改过DNS服务器?如果更换过DNS服务器,可能需要等待24-48小时传播。
第四步:检查解析记录是否填写正确
常见错误包括:A记录写错IP,CNAME指向错误,主机记录填写错误,多条冲突记录。
注意:同一个主机记录不能同时存在A和CNAME,CNAME不能直接指向IP。
第五步:检查TTL是否过高
TTL表示缓存时间。如果原TTL设置为:86400,表示缓存24小时。修改后可能需要一天才会刷新。
建议:在修改解析前,将TTL设置为300秒,等待旧TTL过期后再修改记录。
第六步:服务器是否真正监听
有时候DNS已经生效,但服务器没开启服务。
检查服务器端口:
Linux执行:
netstat -tulnp | grep 80
或:
ss -tulnp | grep 80
查看是否有:
tcp LISTEN 0 128 0.0.0.0:80
如果没有监听80端口,说明Web服务没启动。
第七步:检查防火墙是否放行
服务器防火墙未放行端口也会导致无法访问。
查看防火墙状态(Linux):
firewall-cmd --list-all
放行80端口:
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
第八步:检查是否启用了CDN
如果域名接入了CDN,解析实际上指向CDN节点,而不是服务器IP。此时需要登录CDN后台,检查回源IP是否正确,刷新CDN缓存,否则会出现“DNS已生效但网站打不开”的情况。
第九步:跨地区测试解析
不同地区DNS缓存刷新时间不同。
可以使用公共DNS测试:
nslookup yourdomain.com 8.8.8.8
nslookup yourdomain.com 1.1.1.1
如果不同DNS返回不同IP,说明传播还未完成。
第十步:域名状态是否异常
检查域名是否过期?未实名认证?被暂停解析?被锁定?
可以使用 whois 查询:
whois yourdomain.com
查看状态是否为:
Status: ok
如果出现:
clientHold
serverHold
说明域名被暂停解析。
总结:DNS解析不生效并不可怕,关键在于掌握排查思路。只要按照“本地缓存 → DNS服务器 → 解析记录 → 服务器状态”的逻辑一步步检查,问题一定能定位。对于站长来说,理解DNS传播机制、TTL原理和服务器监听状态,比单纯等待更重要。如果你经常做服务器迁移、香港云服务器部署或跨境业务,建议在修改前提前降低TTL,并准备好完整的测试方案,这样可以避免网站长时间无法访问的风险。
CN
EN