作为系统管理员或开发人员需要了解的 4 个重要的 Dig 命令示例

系统管理员的利器:深入解析 dig 命令

作为系统管理员,日常工作看似平静,实则暗藏危机。当突发事件来临时,一些强大的命令就显得尤为重要。本文将聚焦于其中一个关键工具:dig 命令。

系统管理员的工作压力巨大,需要时刻保持警惕,随时应对各种挑战。 24/7 全天候待命是他们工作的基本要求之一,我们对此深感敬佩。

我们今天不探讨系统管理员的职业生涯,而是深入了解他们用来解决 DNS 问题的利器。

什么是 dig 命令?

Dig 是 Domain Information Groper 的缩写,它是一种快速查询 DNS 服务器状态的工具,帮助我们快速定位哪些环节运转正常,哪些环节出现故障。

通过 dig 命令,我们可以获取服务器 IP 地址、域名服务器信息、邮件交换记录、查询 TTL 等重要信息,并且命令本身简单易记。

在开始学习 dig 命令之前,请先检查系统是否已安装 dig 工具:

$ dig -v

如果已安装,应该返回 dig 的版本信息,例如:

DiG 9.18.1-1ubuntu1-Ubuntu

如果没有得到类似的回应,则需要先安装 dig 工具。

对于 Ubuntu 和 Debian 用户,可以使用以下命令安装:

$ sudo apt-get install dnsutils

对于 CentOS 或 RHEL 用户,请使用:

$ sudo yum install bind-utils

安装完成后,再次运行 dig -v 确认安装成功。

接下来,我们将深入了解一些常用的 dig 命令,帮助您高效处理系统管理任务。

检查 IP 地址

这是查询域名对应的服务器 IP 地址的最基本的方法之一。

我们将从最简单的命令开始:dig techblik.com.com

$ dig techblik.com.com

; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> techblik.com.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38635
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;techblik.com.com.			IN	A

;; ANSWER SECTION:
techblik.com.com.		67	IN	A	172.66.43.163
techblik.com.com.		67	IN	A	172.66.40.93

;; Query time: 4 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Wed Nov 09 04:29:58 UTC 2022

首先,查看顶部的 “Got answer” 部分中的 “status: NOERROR”,这表示查询顺利完成,没有发生任何错误。

我们主要关注的是服务器 IP 地址,这些信息在 “ANSWER SECTION” 中显示:172.66.40.93 (主服务器) 和 172.66.43.163 (备用服务器)。

“QUESTION SECTION” 则显示了您原始的查询语句。

最后一部分提供了一些关于查询的统计信息。

但是,默认的 dig 命令输出的信息比较多,并非所有信息都是必要的。

因此,可以通过添加参数来简化输出:

$ dig techblik.com.com +noall +answer
techblik.com.com.		53	IN	A	172.66.43.163
techblik.com.com.		53	IN	A	172.66.40.93

在这里,”+noall” 屏蔽了所有的默认输出,”+answer” 只保留了我们需要的答案部分。

如果想要更简洁的输出,可以使用以下命令:

$ dig techblik.com.com +short
172.66.43.163
172.66.40.93

以上是查询 DNS A 记录的基本方法,接下来我们将介绍其他类型的查询。

查找特定的 DNS 记录

域名服务器 (Nameservers) 是域名的权威 DNS 服务器,可以使用 “ns” 变量进行查询。

$ dig techblik.com.com ns +short
olga.ns.cloudflare.com.
todd.ns.cloudflare.com.

同样,”mx” 变量可以查询邮件服务器及其优先级。

$ dig techblik.com.com mx +noall +answer
techblik.com.com.		300	IN	MX	1 aspmx.l.google.com.
techblik.com.com.		300	IN	MX	10 alt3.aspmx.l.google.com.
techblik.com.com.		300	IN	MX	10 alt4.aspmx.l.google.com.
techblik.com.com.		300	IN	MX	5 alt1.aspmx.l.google.com.
techblik.com.com.		300	IN	MX	5 alt2.aspmx.l.google.com.

类似地,使用 “txt”, “aaaa”, “cname” 等变量可以查询不同类型的 DNS 记录。

跟踪 DNS 解析路径

顾名思义,跟踪 DNS (Trace DNS) 可以显示从根域名服务器到权威域名服务器,最终到目标域名的 IP 地址的完整解析路径。

$ dig techblik.com.com +trace

; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> techblik.com.com +trace
;; global options: +cmd
.			322660	IN	NS	a.root-servers.net.
.			322660	IN	NS	b.root-servers.net.
.			322660	IN	NS	c.root-servers.net.
.			322660	IN	NS	d.root-servers.net.
.			322660	IN	NS	e.root-servers.net.
.			322660	IN	NS	f.root-servers.net.
.			322660	IN	NS	g.root-servers.net.
.			322660	IN	NS	h.root-servers.net.
.			322660	IN	NS	i.root-servers.net.
.			322660	IN	NS	j.root-servers.net.
.			322660	IN	NS	k.root-servers.net.
.			322660	IN	NS	l.root-servers.net.
.			322660	IN	NS	m.root-servers.net.
;; Received 811 bytes from 127.0.0.53#53(127.0.0.53) in 16 ms

com.			172800	IN	NS	i.gtld-servers.net.
com.			172800	IN	NS	k.gtld-servers.net.
com.			172800	IN	NS	e.gtld-servers.net.
com.			172800	IN	NS	c.gtld-servers.net.
com.			172800	IN	NS	h.gtld-servers.net.
com.			172800	IN	NS	b.gtld-servers.net.
com.			172800	IN	NS	d.gtld-servers.net.
com.			172800	IN	NS	f.gtld-servers.net.
com.			172800	IN	NS	j.gtld-servers.net.
com.			172800	IN	NS	g.gtld-servers.net.
com.			172800	IN	NS	a.gtld-servers.net.
com.			172800	IN	NS	m.gtld-servers.net.
com.			172800	IN	NS	l.gtld-servers.net.
com.			86400	IN	DS	30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.			86400	IN	RRSIG	DS 8 1 86400 20221121170000 20221108160000 18733 . ZgW2dKMBP6rqIgQSGN5uzFhNFZuIPUg7JrkXzgE9VKh68LOIuQlFgTTV xt3Sz4ytgru8JWcwCHgiqCTjbaN3WeHcrDVf0ItG0Az/01ofBWfoAu9S 1JFYcOrYkTUidn8R4vROkwzsTrZMirnB/4yrA4MD5thWVBr3IczcnFto DbADuw8Qy/RUEUfcu+LcQ4Ge+OzIP8eE1T6+nbMRqFZBSMFoBO1w0Mmk xNGyEclfFkymQ4CsYxnvYVstljpLqh1OhoAEwY6D+0cSh9dKNQ5LKhgq UXqfJ+zmdcvL+cVvMjfcB0Wj6/hmEkpEp1ISawlTjFUDgiKNZxiow02r JL4tsw==
;; Received 1201 bytes from 192.33.4.12#53(c.root-servers.net) in 148 ms

techblik.com.com.		172800	IN	NS	olga.ns.cloudflare.com.
techblik.com.com.		172800	IN	NS	todd.ns.cloudflare.com.
techblik.com.com.		86400	IN	DS	2371 13 2 CBAA2018F41B29985DAEDE7F127D4F9626ADA609665CEBAB0011903B 7C639254
techblik.com.com.		86400	IN	RRSIG	DS 8 2 86400 20221112051535 20221105030535 53929 com. sbqDGqvxmEAjS4KRx8LvQAG9IusLgRRm5GPDf+AFkXddGgfJN37vJP1H 4JKMriWtgXZHc3g1ANMNjij+5J1K3GgeNy2w0UYc7xHkmvhsd15pDvi9 +BoiBsjC8ffznyli8sV8XVhm65oKDHJRx5YEtXUVA4p9hegO0NHDccvt ujQKMShBWX3nxs7P4onL13gspVScOoZgzXL3470UfDW7MA==
;; Received 601 bytes from 2001:501:b1f9::30#53(m.gtld-servers.net) in 144 ms

techblik.com.com.		300	IN	A	172.66.43.163
techblik.com.com.		300	IN	A	172.66.40.93
techblik.com.com.		300	IN	RRSIG	A 13 2 300 20221110051242 20221108031242 34505 techblik.com.com. tKDYd/FHjs/aRHeOQJlsxXDJYtVcHA4G16QRJKlhFyYkZ2TmLKNIc6eM vXfpO91IVArK67KbyW5lIxI5cCxcQg==
;; Received 183 bytes from 172.64.32.137#53(olga.ns.cloudflare.com) in 16 ms

你也可以使用 +short+noall +answer 参数来获取更简洁的输出。

反向 DNS 查找

反向 DNS 查找显示与 IP 地址关联的 PTR 记录。 它与 DNS A 记录相反,将 IP 地址与域名相匹配。

但是,如果域名没有 DNS PTR 记录,则不会显示任何答案部分。

反向查找的命令格式是 dig -x IP地址

[email protected]:~$ dig yahoo.com +short
74.6.143.26
74.6.231.20
98.137.11.164
98.137.11.163
74.6.143.25
74.6.231.21
[email protected]:~$ dig -x 74.6.143.26

; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> -x 74.6.143.26
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32267
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;26.143.6.74.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
26.143.6.74.in-addr.arpa. 600	IN	PTR	media-router-fp74.prod.media.vip.bf1.yahoo.com.

;; AUTHORITY SECTION:
143.6.74.in-addr.arpa.	172800	IN	NS	ns3.yahoo.com.
143.6.74.in-addr.arpa.	172800	IN	NS	ns4.yahoo.com.
143.6.74.in-addr.arpa.	172800	IN	NS	ns5.yahoo.com.
143.6.74.in-addr.arpa.	172800	IN	NS	ns2.yahoo.com.
143.6.74.in-addr.arpa.	172800	IN	NS	ns1.yahoo.com.

;; Query time: 192 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Wed Nov 09 04:17:08 UTC 2022
;; MSG SIZE  rcvd: 203

如你所见,”Answer Section” 中显示域名 “media-router-fp74.prod.media.vip.bf1.yahoo.com” 与其 IP 地址 74.6.143.26 关联。

访问此 URL 实际上会将您重定向到 Yahoo 的搜索主页。

但需要注意的是,并非所有 Web 主机都支持反向 DNS 查找,在某些情况下,这些看似冗长的 URL 可能无法正常工作。

查询特定的 DNS 服务器

有时,您可能需要向特定的 DNS 服务器发送查询请求。 你可以通过添加 @DNS服务器IP地址 的方式来指定查询所使用的服务器。

$ dig @1.1.1.1 techblik.com.com +noall +answer +stats
techblik.com.com.		300	IN	A	172.66.40.93
techblik.com.com.		300	IN	A	172.66.43.163
;; Query time: 156 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Wed Nov 09 04:18:56 UTC 2022
;; MSG SIZE  rcvd: 74

你可以在 “stats” 部分验证是否使用了指定的服务器,其中 “Server: 1.1.1.1” 代表使用的是 Cloudflare 的 DNS 服务器。

类似地,你可以查询 Google 的 DNS 服务器 (8.8.8.8):

$ dig @8.8.8.8 techblik.com.com mx +noall +answer +stats
techblik.com.com.		300	IN	MX	1 aspmx.l.google.com.
techblik.com.com.		300	IN	MX	10 alt3.aspmx.l.google.com.
techblik.com.com.		300	IN	MX	10 alt4.aspmx.l.google.com.
techblik.com.com.		300	IN	MX	5 alt1.aspmx.l.google.com.
techblik.com.com.		300	IN	MX	5 alt2.aspmx.l.google.com.
;; Query time: 44 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Wed Nov 09 04:23:16 UTC 2022
;; MSG SIZE  rcvd: 157

总结

正如其名称所示,dig 命令用于深入挖掘 DNS 信息,并帮助我们识别和解决相关问题。它通常运行速度很快,并且易于记忆。

此外,dig 工具可以在 Mac 和 Windows 上安装,使得它在各种操作系统中都通用。

最后,不要忘记访问 techblik.com 的系统管理员资源库,这是一个为您解决系统管理员难题的一站式中心。