DNS 工具
100%

DNS · 第 6 课

DNS 工具

了解如何使用 getent、resolvectl 和 dig 比较系统解析与直接 DNS 查询。

DNS 故障排除首先要明确正在测试哪一层。系统解析器工具会纳入本地文件和策略,而 dignslookup 会发送 DNS 查询,并可直接指定某台服务器。

测试系统解析器

使用以下命令走正常的主机名称服务路径:

$ getent ahosts www.example.com

在使用 systemd-resolved 的主机上,可以用以下命令检查每条链路的服务器、搜索域和协议状态:

$ resolvectl status
$ resolvectl query www.example.com

应用程序仍可能使用私有解析器库或代理,所以当输出不同时,还应通过该应用程序重现问题。

哪个命令会使用已配置的系统名称服务路径?

使用 dig 查询

指定名称和记录类型:

$ dig www.example.com A
$ dig www.example.com AAAA
$ dig example.com MX

输出会标识响应服务器、状态、标志、问题、回答、权威数据、附加数据、查询时间和传输元数据。+short 便于脚本使用,却隐藏了诊断所需的证据。

哪条查询请求 IPv6 地址记录?

选择服务器

明确指定某个解析器或权威服务器:

$ dig @192.0.2.53 www.example.com A

在区分缓存与权威时,应比较已配置的递归解析器、第二个获准解析器和每台权威服务器。NOERROR 状态也可能没有所请求的回答;NXDOMAIN 表示查询的名称不存在,而 SERVFAIL 表示服务器无法完成查询。

NOERROR 的回答区可以为空吗?

检查递归与权威

查询中的 rd 表示请求递归;响应中的 ra 表示服务器提供递归服务;aa 表示回答具有权威性。使用 +norecurse 查询权威服务器,以免把递归缓存与服务器提供的区域数据混淆。

dig +trace NAME 从根提示开始自行执行迭代查询。它可能与生产解析器得出不同结果,因为它绕过了该解析器的缓存、转发、策略、DNSSEC 验证和网络位置。

aa 响应标志表示什么?

测试反向查询与 TCP 查询

使用 -x 构造反向 PTR 查询:

$ dig -x 192.0.2.25

调查截断、区域传送或防火墙差异时,测试基于 TCP 的 DNS:

$ dig +tcp @192.0.2.53 example.com SOA

现代 DNS 可以使用 UDP 或 TCP 53 端口;需要时应同时放行两者。带有截断标志的 UDP 回答会促使合规客户端通过合适的传输方式重试。

dig +tcp 改变了什么?

课程已完成

你已完成 DNS 工具

现在,你可以选择与待调查解析器层级相匹配的 DNS 工具。

  • 使用 getent 测试已配置的系统解析器路径。

  • 使用 dig 明确指定记录类型和服务器。

  • 结合状态、标志、各区段和响应服务器进行解释。

  • 将递归缓存与权威数据区分开来。

  • 测试反向查询和两种必需的 DNS 传输方式。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
返回 DNS