bind-utils 是一组 DNS 查询与调试命令行工具,包含 dig、nslookup 和 host 三个二进制程序,通常来自 bind-utils(RHEL 系)或 bind9-dnsutils(Debian/Ubuntu)软件包。它没有持久化配置,也没有持久化日志,直接调用即可,输出到终端。
【用途】 用于查询 DNS 记录、追踪委派链、诊断解析器行为,以及验证 DNS 配置是否正确。
【主要能力与常用操作】
- 基本 A 记录查询:dig example.com
- 仅输出答案的简短结果:dig +short example.com
- 指定记录类型:dig MX example.com
- 向指定 DNS 服务器查询:dig @8.8.8.8 example.com
- 追踪完整委派链:dig +trace example.com
- 反向查询(PTR 记录):dig -x 93.184.216.34
- DNSSEC 验证:dig +dnssec example.com
- 区域传送(AXFR):dig @ns1.example.com example.com AXFR
- 禁用递归(检查权威应答):dig +norecurse @ns1.example.com example.com
- 检查 SPF 记录:dig TXT example.com +short
- 检查 DKIM 记录:dig TXT selector._domainkey.example.com +short
- 检查 DMARC 记录:dig TXT _dmarc.example.com +short
- 检查 NS 委派:dig NS example.com
- nslookup 基本查询:nslookup example.com
- host 简单查询:host example.com
【安装】
- Debian/Ubuntu:apt install bind9-dnsutils
- RHEL 系:dnf install bind-utils
【常见故障与排查】
- NXDOMAIN:名称在 DNS 中完全不存在。应确认记录确实已创建、检查拼写、确认区域已正确委派。
- SERVFAIL:解析器无法获得答案(区域配置错误、DNSSEC 验证失败或权威服务器不可达)。可用 +cd 绕过 DNSSEC 验证,或用 @ns1.example.com 直接查询权威服务器。
- PTR 查询返回错误主机名或为空:反向区域未配置,或 PTR 由 ISP 控制且未设置。PTR 记录需要 ISP 或托管商配置反向区域,除非自己控制反向 DNS 区域,否则无法自行设置 PTR。
- +trace 与普通查询结果不同:解析器缓存中的答案与权威服务器当前提供的不同。可用 +nocache 查询或直接查询权威 NS,等待 TTL 过期。
- 区域传送被拒绝:权威服务器将 AXFR 限制为特定 IP。这属正常,AXFR 被有意限制,可改用单条记录查询。
- DKIM 记录缺失或格式错误:选择器名称错误,或记录尚未传播。可向邮件服务商确认选择器,并用 dig @8.8.8.8 TXT selector._domainkey.example.com 检查传播。
- 分裂视图内外结果不同:解析器在网络内部返回内部视图,外部返回外部视图。可在网络内用 dig @8.8.8.8 或 dig @1.1.1.1 显式查询公共解析器。
【使用要点】
- nslookup 和 host 更简单但信息量少于 dig,诊断工作建议使用 dig。nslookup 有交互与非交互模式,但输出不易解析且行为有怪异之处;host 适合快速查询,但缺少 dig 的过滤与追踪能力。
- dig +short 是最快的脚本化路径:dig +short example.com A 只返回 IP,每行一个,无需额外清理输出。
- +trace 会依次查询根服务器、TLD 服务器和权威服务器,完全绕过本地解析器缓存,用于确认记录在权威层面确实存在,而不仅仅存在于缓存中。
- DNSSEC 错误与 NXDOMAIN 不同:DNSSEC 验证失败导致的 SERVFAIL 从客户端看与区域损坏相同。可用 dig +cd example.com 禁用 DNSSEC 检查,若记录能解析则说明是 DNSSEC 问题。
- 分裂视图 DNS 会误导外部诊断:若网络内部 DNS 对公共名称返回 RFC 1918 地址,从内部用默认解析器查询会得到内部视图。诊断面向外部的 DNS 时应始终显式查询 @8.8.8.8 或 @1.1.1.1。
- PTR 记录需要 ISP 配合:反向 DNS(PTR 记录)位于 in-addr.arpa. 区域,由 IANA 委派给 IP 地址所有者(通常是 ISP 或托管商,而非用户)。除非自己控制反向区域或请服务商设置,否则无法自行设置 PTR 记录。
【限制】 工具本身无持久化配置与日志;AXFR 通常被权威服务器限制;PTR 记录依赖 ISP 或托管商;DNSSEC 验证失败会表现为 SERVFAIL;分裂视图环境下内部查询结果可能与外部不同。