蚊章汇 - Ulia Evans
type: channel
link: https://linuxcn.bwsl.wang/author/1607/
description: Ulia Evans
items: 如何使用 dig

如何使用 dig
type: item
date: 2021-12-06T03:26:00+08:00
description: 你好！最近我和几个朋友聊天，他们提到希望知道如何使用 dig 来进行 DNS 查询，所以这是一篇关于它的速读博文。当我第一次使用 dig 时，我发现它有点吓人 —— 有这么多的选项！我打算把大部分的选项省略。在这篇文章中，我打算不谈 dig 的大部分选项，只谈我实际使用的选项。我最近还了解到，你可以设置一个 .digrc 配置文件，让它的输出更容易阅读，这让它的使用变得更加轻松。几年前我还画了一个关于 dig 的 zine 页，但我想写这篇文章来包括更多的信息。两种类型的 dig 参数：查询和格式化有两种主要的参数可以传递给 dig：告诉 dig 要进行什么 DNS 查询的参数。告诉 dig 如何 格式化响应的参数。首先，让我们看一下查询选项。主要的查询选项你通常想控制 DNS 查询的 3 件事是：名称（如 jvns.ca）。默认情况下，查询的是空名称（.）。DNS 查询类型（如 A 或 CNAME）。默认是 A。发送查询的 服务器（如 8.8.8.8）。默认是 /etc/resolv.conf 中的内容。其格式是：dig @server name type 这里有几个例子：dig @8.8.8.8 jvns.ca 向谷歌的公共 DNS 服务器（8.8.8.8）查询 jvns.ca。dig ns jvns.ca 对 jvns.ca 进行类型为 NS 的查询。-x：进行反向 DNS 查询我偶尔使用的另一个查询选项是 -x，用于进行反向 DNS 查询。下面是输出结果的样子。$ dig -x 172.217.13.174 174.13.217.172.in-addr.arpa. 72888 IN PTR yul03s04-in-f14.1e100.net。 -x 不是魔术。dig -x 172.217.13.174 只是对 174.13.217.172.in-addr.arpa. 做了一个 PTR 查询。下面是如何在不使用 `-x’ 的情况下进行完全相同的反向 DNS 查询。$ dig ptr 174.13.217.172.in-addr.arpa. 174.13.217.172.in-addr.arpa. 72888 IN PTR yul03s04-in-f14.1e100.net。 我总是使用 -x，因为它可以减少输入。格式化响应的选项现在，让我们讨论一下你可以用来格式化响应的参数。我发现 dig 默认格式化 DNS 响应的方式对初学者来说是很难接受的。下面是输出结果的样子：; <<>> DiG 9.16.20 <<>> -r jvns.ca ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28629 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: d87fc3022c0604d60100000061ab74857110b908b274494d (good) ;; QUESTION SECTION: ;jvns.ca. IN A ;; ANSWER SECTION: jvns.ca. 276 IN A 172.64.80.1 ;; Query time: 9 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Sat Dec 04 09:00:37 EST 2021 ;; MSG SIZE rcvd: 80 如果你不习惯看这个，你可能需要花点时间来筛选，找到你要找的 IP 地址。而且大多数时候，你只对这个响应中的一行感兴趣（jvns.ca. 180 IN A 172.64.80.1）。下面是我最喜欢的两种方法，可以使 dig 的输出更容易管理：方式 1 : +noall +answer这告诉 dig 只打印 DNS 响应中的“答案”部分的内容。下面是一个查询 google.com 的 NS 记录的例子：$ dig +noall +answer ns google.com google.com. 158564 IN NS ns4.google.com. google.com. 158564 IN NS ns1.google.com. google.com. 158564 IN NS ns2.google.com. google.com. 158564 IN NS ns3.google.com. 这里的格式是：NAME T…