DNS解析问题可通过dig和nslookup排查,先检查/etc/resolv.conf配置,用ping测试DNS可达性,再通过dig @8.8.8.8或nslookup指定公共DNS对比解析结果,确认是否为本地或全局故障。

遇到网络无法访问、网页打不开但能 ping 通 IP 的情况,很可能是 DNS 解析出了问题。Linux 提供了多种工具帮助排查 DNS 故障,其中 dig 和 nslookup 是最常用的两个命令。下面介绍它们的基本用法和典型排查思路。
一、使用 dig 命令诊断 DNS
dig(Domain Information Groper)功能强大,输出信息详细,适合深入分析 DNS 查询过程。
基本语法:
dig [域名] [记录类型]常用操作示例:
- 查询某个域名的 A 记录:
dig example.com A - 查询 MX 邮件记录:
dig example.com MX - 指定使用特定 DNS 服务器查询(如 8.8.8.8):
dig @8.8.8.8 example.com - 启用追踪模式,查看递归解析过程:
dig +trace example.com
重点关注输出中的以下几个部分:
- QUESTION SECTION:你查询的域名和类型是否正确。
- ANSWER SECTION:返回的解析结果,是否有预期的 IP 地址。
- SERVER:实际使用的 DNS 服务器地址。
-
status: NOERROR / NXDOMAIN / SERVFAIL:
- NOERROR 表示成功
- NXDOMAIN 表示域名不存在
- SERVFAIL 表示服务器错误,可能 DNS 不可达或配置异常
二、使用 nslookup 命令查询 DNS
nslookup 是较老的工具,但依然广泛使用,支持交互和非交互两种模式。
基本用法:
- 直接查询域名:
nslookup example.com - 指定 DNS 服务器查询:
nslookup example.com 8.8.8.8 - 进入交互模式:
nslookup
> server 114.114.114.114
> example.com
输出中注意:
- 显示的 Server 是否是你期望的 DNS 服务器。
- 是否返回正确的 Name 和 Address。
- 出现 can't find example.com: NXDOMAIN 或超时,说明解析失败。
三、常见排查步骤建议
当怀疑 DNS 有问题时,按以下顺序检查:
- 确认本机 DNS 配置:
查看 /etc/resolv.conf 文件内容,确认 nameserver 设置是否正确。 - 测试本地配置的 DNS 是否可达:
ping -c 3 $(grep nameserver /etc/resolv.conf | head -1 | awk '{print $2}') - 用公共 DNS 对比测试:
使用 dig @8.8.8.8 example.com 或 nslookup example.com 114.114.114.114,判断是本地 DNS 问题还是全局问题。 - 检查域名是否存在拼写错误,或尝试其他设备解析同一域名,确认是否为个例。
基本上就这些。掌握 dig 和 nslookup 的基础用法,配合系统配置检查,大多数 DNS 问题都能快速定位。不复杂但容易忽略的是默认 DNS 服务器设置和防火墙是否拦截了 53 端口。










