直接用dig或nslookup命令测试dns解析,重点看域名能否正确解析为ip地址;dig输出详细、支持+trace跟踪解析链路,nslookup操作简单适合快速验证,需结合/etc/resolv.conf配置、缓存清理及多dns对比排查。

直接用 dig 或 nslookup 命令就能测,重点看能不能把域名转成正确的 IP 地址。
用 dig 查看详细解析过程
dig 是最推荐的工具,输出清晰、可控性强,适合定位具体环节问题:
- 基础测试:
dig example.com,观察 ANSWER SECTION 是否有合法 A 记录 - 指定本地 DNS 测试:
dig @127.0.0.1 example.com(如果本地运行了 BIND 或 systemd-resolved) - 查响应状态:
dig example.com +short只显示 IP,方便脚本判断;加+trace可跟踪整个解析链路 - 检查记录类型:
dig example.com MX或dig example.com AAAA,确认不同记录是否正常返回
用 nslookup 快速验证连通性
nslookup 操作简单,适合快速交叉验证:
- 非交互式:
nslookup example.com,默认走 /etc/resolv.conf 配置的 DNS - 指定服务器:
nslookup example.com 192.168.1.1,直接向某台 DNS 发起查询 - 进入交互模式后可连续查多个域名,还能用
server 8.8.8.8切换 DNS 对比结果 - 若超时或返回
*** Can't find example.com: Non-existent domain,说明解析失败或域名不存在
别忘了检查底层配置和缓存
即使命令返回结果,也可能被中间层干扰:
- 确认
/etc/resolv.conf里 nameserver 是否指向你预期的 DNS(比如 127.0.0.1 或内网 DNS IP) - 清除本地缓存:
sudo systemd-resolve --flush-caches(systemd-resolved 环境)或重启sudo systemctl restart systemd-resolved - 检查
/etc/hosts是否有该域名的静态绑定,它会优先于 DNS 生效 - 用
ping -c 1 example.com辅助判断:能 ping 通 IP 但 ping 不通域名,基本锁定是 DNS 问题
对比多个 DNS 排除服务端故障
单点测试容易误判,需要横向验证:
- 分别用公共 DNS 测试:
dig @8.8.8.8 example.com、dig @1.1.1.1 example.com - 如果本地 DNS 返回空或错误,而公共 DNS 正常,说明本地 DNS 服务异常或配置错误
- 再用
telnet 127.0.0.1 53或nc -u 127.0.0.1 53确认 DNS 端口是否监听并可达 - 防火墙也要查:
sudo ufw status或sudo iptables -L -n | grep :53,确保 UDP 53 未被拦截











