dig
dig 命令可以查询各种类型 DNS 记录信息,包括:主机名称记录(A、AAAA)、邮件交换记录(MX)和别名记录(CNAME)等等。由于其灵活性和易用性,它是系统管理员解决 DNS 问题时最常用的工具。
常见的DNS记录类型
dig命令安装
# Ubuntu 和 Debian 安装 dig 命令
apt update && sudo apt install dnsutils
# CentOS 和 Fedora 安装 dig 命令
yum install bind-utils
# Arch Linux 安装 dig 命令
pacman -S bind-tools
dig命令语法以及参数
语法:
# 语法
dig [server] [name] [type]
[server]查询指向的主机名或 IP 地址
[name]要查询服务器的 DNS(域名服务器)
[type]要检索的 DNS 记录类型。默认情况下(或如果留空),dig 查询 A 记录。
常用参数:
+nocmd : 不显示 dig 命令的版本和全局选项, 此参数必须是 dig 命令后的第一个参数
+noall : 关闭所有结果
+answer : 显示查询的结果
+short : 输出简短结果
# 输出简短结果
# dig www.baidu.com +short
www.a.shifen.com.
183.2.172.42
183.2.172.185
# 只输出详细响应
# dig +nocmd www.baidu.com +noall +answer
www.baidu.com. 27 IN CNAME www.a.shifen.com.
www.a.shifen.com. 27 IN A 183.2.172.185
www.a.shifen.com. 27 IN A 183.2.172.42
dig输出信息解释
# dig www.baidu.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.15 <<>> www.baidu.com
;; global options: +cmd
# 第一部分显示 dig 命令的版本和全局选项(默认情况下,仅有 cmd)。
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21672
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
# 第二部分显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束。
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1408
;; QUESTION SECTION:
;www.baidu.com. IN A
# 第三部分中的 "QUESTION SECTION" 显示我们要查询的域名。
;; ANSWER SECTION:
www.baidu.com. 108 IN CNAME www.a.shifen.com.
www.a.shifen.com. 108 IN A 183.2.172.185
www.a.shifen.com. 108 IN A 183.2.172.42
# 第四部分的 "ANSWER SECTION" 是查询到的结果。
;; Query time: 25 msec
;; SERVER: 223.5.5.5#53(223.5.5.5)
;; WHEN: Tue Mar 26 17:55:43 CST 2024
;; MSG SIZE rcvd: 101
# 第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等。
第四部分的 "ANSWER SECTION"重点解析
;; ANSWER SECTION:
www.baidu.com. 108 IN CNAME www.a.shifen.com.
www.a.shifen.com. 108 IN A 183.2.172.185
www.a.shifen.com. 108 IN A 183.2.172.42
第一列列出了被查询的服务器名称
第二列是 TTL(存活时间),在此之后记录将被刷新
第三列显示查询的类别 – 在本例中,IN代表互联网
第四列显示查询的类型 – 在本例中,CNAME代表 CNAME(别名)记录,A代表 A(地址)记录
最后一列显示与域名关联的别名和 IP 地址(结果)
记录查询
A记录(默认):
# dig +nocmd www.baidu.com +noall +answer
www.baidu.com. 27 IN CNAME www.a.shifen.com.
www.a.shifen.com. 27 IN A 183.2.172.185
www.a.shifen.com. 27 IN A 183.2.172.42
MX(邮箱)
# dig +nocmd www.baidu.com +noall +answer mx
www.baidu.com. 1 IN CNAME www.a.shifen.com.
TXT
验证域名所有权会经常使用 DNS 解析 TXT记录的方式,比如申请 SSL 证书或 Google、百度站长认证时;
# dig +nocmd dhcp.cn txt +noall +answer
dhcp.cn. 1 IN TXT "google-site-verification=yVvYi9IY_0g9xKaASfQbS2pE-BJPQiCQyKIv8QrcoDU"
CNAME(映射)
dig +nocmd www.baidu.com +noall +answer cname
www.baidu.com. 848 IN CNAME www.a.shifen.com.
NS
# dig +nocmd kaixinok.com +noall +answer ns
kaixinok.com. 3600 IN NS chestnut.dnspod.net.
kaixinok.com. 3600 IN NS composer.dnspod.net
Trace 参数
+trace
参数可以列出查询经过的不同 DNS 服务器,直到最终目的地。可以使用此参数来确定流量中断的 IP 地址:
# dig www.baidu.com +trace
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.15 <<>> www.baidu.com +trace
;; global options: +cmd
. 690 IN NS b.root-servers.net.
. 690 IN NS e.root-servers.net.
. 690 IN NS a.root-servers.net.
. 690 IN NS g.root-servers.net.
. 690 IN NS l.root-servers.net.
. 690 IN NS f.root-servers.net.
. 690 IN NS h.root-servers.net.
. 690 IN NS c.root-servers.net.
. 690 IN NS m.root-servers.net.
. 690 IN NS d.root-servers.net.
. 690 IN NS j.root-servers.net.
. 690 IN NS k.root-servers.net.
. 690 IN NS i.root-servers.net.
;; Received 239 bytes from 223.5.5.5#53(223.5.5.5) in 25 ms
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 86400 IN DS 19718 13 2 8ACBB0CD28F41250A80A491389424D341522D946B0DA0C0291F2D3D7 71D7805A
com. 86400 IN RRSIG DS 8 1 86400 20240408050000 20240326040000 30903 . 2J7iz3a42nn+sMvW71hoPnFFVp9bWMOU5Z2RcWCQEidaZGDXAhXs0IN3 saF2dsPkVq0oswDUTFL2TYIqSjjej5vahoGRqpMlO8rEPY36+YclV/NA W5DuO8zx6qS9Dgb1XCrtwfVLSi9ZuxrjS27XEVEawqQGud9Z02URIV5t Xtq3noYPEg4GkwSsw/0ACOgCsxuKObDZZFcquEpE+24FuJZXBPOA21KQ k89Ub73lzyax1p2Xr69pLvwcRZfhiSqBcduO4gCgsPRE6FvPdW6F5UdT sDXvRzVc5zXOtbHj7mi268UpXCtNiboi6nfFyIeY/CxEJAD7zrKPxxrX rqq6ug==
;; Received 1173 bytes from 199.7.91.13#53(d.root-servers.net) in 216 ms
baidu.com. 172800 IN NS ns2.baidu.com.
baidu.com. 172800 IN NS ns3.baidu.com.
baidu.com. 172800 IN NS ns4.baidu.com.
baidu.com. 172800 IN NS ns1.baidu.com.
baidu.com. 172800 IN NS ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q2D6NI4I7EQH8NA30NS61O48UL8G5 NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 13 2 86400 20240402042515 20240326031515 4534 com. ychk678G5UM6KBOrkgzAFJFDbABT0ZGSxn9UfrDSR8PN61oqXASJnuv7 G/ZyNEA4NZ0AQjDIthrA9VDCDOBOLg==
HPVV1UNKTCF9TD77I2AUR73709T975GH.com. 86400 IN NSEC3 1 1 0 - HPVVP23QUO0FP9R0A04URSICJPESKO9J NS DS RRSIG
HPVV1UNKTCF9TD77I2AUR73709T975GH.com. 86400 IN RRSIG NSEC3 13 2 86400 20240401051106 20240325040106 4534 com. yKRRxEqKHxpItdm2TsdmmDmbYxUgWc6qYmfALf4MzyhyCcuMX750J1Ei Upe4k2XZCjrXLTLU//mQ7OL4+neoBw==
;; Received 657 bytes from 2001:502:8cc::30#53(h.gtld-servers.net) in 164 ms
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
;; Received 72 bytes from 240e:940:603:4:0:ff:b01b:589a#53(ns7.baidu.com) in 38 ms
dig 命令批量 DNS 查询
dig -f domains.txt +short
.digrc 文件
我们还可通过不同用户的${HOME}/.digrc文件来控制 dig 命令的行为,如果.digrc文件存在于用户的主目录中,则 dig 可以读取其中的参数,而无需用户在执行命令时手动添加。例如,直接在~/.digrc文件中写入+nocmd +noall +answer参数。
参考文档:
评论区