1. 写在前面
本文主要介绍 Linux dig (Domain Information Groper)
命令: 用于命令行模式下查询各类 DNS 记录信息,包括:A记录(主机名或域名对应的IP地址记录)、MX记录(邮件交换记录)、NS记录(域名服务器记录)、CHAME记录(别名记录),有助于排除 DNS 问题。
2. 如何在 Linux 中使用 dig 命令?
2.1 在 Linux 上安装 dig(可选)
大多数流行 Linux 系统都包含 dig 命令。
可通过检查软件版本来验证是否已安装。为此,请打开命令行并输入以下内容:
root@dev:~# dig -v
------------------------------------------------------------------------------------
DiG 9.16.1-Ubuntu
如果系统找不到指定的命令,请输入以下命令安装 dig
:
Debian / Ubuntu:
sudo apt-get install dnsutils
CentOS / RedHat:
sudo yum install bind-utils
备注: dig
需 sudo
或 root
权限的用户执行;
2.2 dig 语法
dig
命令的使用方法如下:
dig [server] [name] [type]
[server] –查询指向的主机名或 IP 地址;
[name] –要查询的服务器的 DNS;
[type] –要检索的 DNS 记录类型。默认情况下(或留空),dig
使用 A 记录类型;
常见 DNS 记录类型:
A – 直接将主机名映射到 IP 地址的地址记录;
MX – 邮件交换,用于映射域的信息传输代理;
SIG – 加密协议中使用的签名记录;
dig
命令先解析主机名,然后再查询名称服务器。
3. dig 命令示例
3.1 DNS 查询
dig
命令的基本用法:执行 DNS 查询
root@dev:~# dig baidu.com
------------------------------------------------------------------------------------
; <<>> DiG 9.16.1-Ubuntu <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44610
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;baidu.com. IN A
;; ANSWER SECTION:
baidu.com. 379 IN A 110.242.68.66
baidu.com. 379 IN A 39.156.66.10
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Dec 28 23:49:50 CST 2023
;; MSG SIZE rcvd: 70
输出:重点关注 ANSWER
部分:
;; ANSWER SECTION:
baidu.com. 379 IN A 110.242.68.66
baidu.com. 379 IN A 39.156.66.10
-
第一列:显示查询的服务器名称;
-
第二列:显示 “存活时间”,
2918
是TTL = Time To Live
,32 位有符号整数,包含可以缓存记录的时间间隔; -
第三列:显示查询类别,在本例中:”IN” 代表互联网;
-
第四列:显示查询类型,在本例中,”A” 代表 A(地址)记录;
-
第五列:显示与域名相关联的 IP 地址;
其他部分:
(1)第一行显示的是 dig 命令的版本:
; <<>> DiG 9.16.1-Ubuntu <<>> baidu.com
(2)HEADER
部分:显示从服务器收到的信息。flags
指的是应答格式;
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44610
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
(3)OPT PSEUDOSECTION
部分:显示高级数据;
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
-
EDNS:如果使用 DNS 扩展系统;
-
Flags:空白,因为没有指定标志;
-
UDP:UDP 数据包大小
(3)QUESTION
部分:显示已发送的查询数据;
;; QUESTION SECTION:
;baidu.com. IN A
-
第一列:查询的域名;
-
第二列:查询类型(IN = 互联网);
-
第三列:指定记录(A = 地址),除非另有说明;
(4)STATISTICS
部分:显示查询的元数据;
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Dec 28 23:49:50 CST 2023
;; MSG SIZE rcvd: 70
-
Query time – 回复所需的时间;
-
SERVER – 响应 DNS 服务器的 IP 地址和端口。可能会注意到这一行中有一个环回地址(127.0.0.53)–这指的是转换 DNS 地址的本地设置;
-
WHEN – 运行命令的时间戳;
-
MSG SIZE rcvd – DNS 服务器回复的大小;
3.2 指定 DNS 服务器
默认情况下,dig
使用本地配置来决定查询哪个域名服务器,使用以下命令:指定域名服务器来查询 baidu.com 域名:
root@dev:~# dig @8.8.8.8 baidu.com
------------------------------------------------------------------------------------
; <<>> DiG 9.16.1-Ubuntu <<>> @8.8.8.8 baidu.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9909
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;baidu.com. IN A
;; ANSWER SECTION:
baidu.com. 220 IN A 39.156.66.10
baidu.com. 220 IN A 110.242.68.66
;; Query time: 168 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Dec 28 23:52:16 CST 2023
;; MSG SIZE rcvd: 70
备注:可指定其他 DNS 服务器:114.114.114.114
3.3 ANY 选项
要返回查询的所有结果,请使用以下命令:
root@dev:~# dig baidu.com ANY
------------------------------------------------------------------------------------
; <<>> DiG 9.16.1-Ubuntu <<>> baidu.com ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52524
;; flags: qr rd ra; QUERY: 1, ANSWER: 18, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;baidu.com. IN ANY
;; ANSWER SECTION:
baidu.com. 187 IN NS ns2.baidu.com.
baidu.com. 187 IN NS ns7.baidu.com.
baidu.com. 187 IN NS dns.baidu.com.
baidu.com. 187 IN NS ns3.baidu.com.
baidu.com. 187 IN NS ns4.baidu.com.
baidu.com. 187 IN A 39.156.66.10
baidu.com. 187 IN A 110.242.68.66
baidu.com. 187 IN SOA dns.baidu.com. sa.baidu.com. 2012147691 300 300 2592000 7200
baidu.com. 187 IN MX 20 jpmx.baidu.com.
baidu.com. 187 IN MX 15 mx.n.shifen.com.
baidu.com. 187 IN MX 20 usmx01.baidu.com.
baidu.com. 187 IN MX 10 mx.maillb.baidu.com.
baidu.com. 187 IN MX 20 mx1.baidu.com.
baidu.com. 187 IN MX 20 mx50.baidu.com.
baidu.com. 187 IN TXT "9279nznttl321bxp1j464rd9vpps246v"
baidu.com. 187 IN TXT "v=spf1 include:spf1.baidu.com include:spf2.baidu.com include:spf3.baidu.com include:spf4.baidu.com mx ptr -all"
baidu.com. 187 IN TXT "_globalsign-domain-verification=qjb28W2jJSrWj04NHpB0CvgK9tle5JkOq-EcyWBgnE"
baidu.com. 187 IN TXT "google-site-verification=GHb98-6msqyx_qqjGl5eRatD3QTHyVB6-xQ3gJB5UwM"
;; Query time: 4 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Dec 28 23:53:02 CST 2023
;; MSG SIZE rcvd: 674
系统将列出找到的所有 baidu.com DNS 记录以及 IP 地址。
注意: 任何其他类型的记录都可以代替 ANY
选项。这包括 MX
(邮件交换)类型、A
(地址)类型、SIG
(签名)类型等。有许多不同的DNS记录类型。如果不确定,请将类型选项留空。
如:
root@dev:~# dig baidu.com MX
------------------------------------------------------------------------------------
; <<>> DiG 9.16.1-Ubuntu <<>> baidu.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36379
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;baidu.com. IN MX
;; ANSWER SECTION:
baidu.com. 31 IN MX 20 mx50.baidu.com.
baidu.com. 31 IN MX 20 mx1.baidu.com.
baidu.com. 31 IN MX 10 mx.maillb.baidu.com.
baidu.com. 31 IN MX 20 usmx01.baidu.com.
baidu.com. 31 IN MX 15 mx.n.shifen.com.
baidu.com. 31 IN MX 20 jpmx.baidu.com.
;; Query time: 4 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Dec 28 23:55:38 CST 2023
;; MSG SIZE rcvd: 177
3.4 Short 选项
只显示与域名相关的 IP 地址:dig baidu.com +short
root@dev:~# dig baidu.com +short
------------------------------------------------------------------------------------
110.242.68.66
39.156.66.10
3.5 ANSWER 详情
使用 dig
命令运行 +noall
+answer
可获取 ANSWER
部分的详细信息:
root@dev:~# dig baidu.com +noall +answer
------------------------------------------------------------------------------------
baidu.com. 263 IN A 39.156.66.10
baidu.com. 263 IN A 110.242.68.66
3.6 Trace 选项
+trace
选项会列出查询到最终目的地所经过的每个不同服务器。使用该命令选项可确定流量经过的 IP 地址;
root@dev:~# dig baidu.com +trace
------------------------------------------------------------------------------------
; <<>> DiG 9.16.1-Ubuntu <<>> baidu.com +trace
;; global options: +cmd
. 1821 IN NS j.root-servers.net.
. 1821 IN NS c.root-servers.net.
. 1821 IN NS i.root-servers.net.
. 1821 IN NS g.root-servers.net.
. 1821 IN NS b.root-servers.net.
. 1821 IN NS d.root-servers.net.
. 1821 IN NS e.root-servers.net.
. 1821 IN NS f.root-servers.net.
. 1821 IN NS l.root-servers.net.
. 1821 IN NS k.root-servers.net.
. 1821 IN NS h.root-servers.net.
. 1821 IN NS m.root-servers.net.
. 1821 IN NS a.root-servers.net.
;; Received 262 bytes from 127.0.0.53#53(127.0.0.53) in 4 ms
... ...
3.7 DNS 反向查询
要通过 IP 地址查询域名;
root@dev:~# dig -x 172.217.14.238
------------------------------------------------------------------------------------
; <<>> DiG 9.16.1-Ubuntu <<>> -x 172.217.14.238
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9070
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;238.14.217.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
238.14.217.172.in-addr.arpa. 3419 IN PTR sea30s02-in-f14.1e100.net.
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Fri Dec 29 00:09:09 CST 2023
;; MSG SIZE rcvd: 95
通过 -x
选项,可以指定 IP 地址而不是域名,该选项可与其他选项结合使用:
root@dev:~# dig +noall +answer -x 172.217.14.238
------------------------------------------------------------------------------------
238.14.217.172.in-addr.arpa. 3443 IN PTR sea30s02-in-f14.1e100.net.
3.8 从文件读取主机名的批处理模式
要查询多个条目,首先要创建一个文件来存储域名:
vi domain.txt
如下图所示,添加几个感兴趣的网站:
google.com
bing.com
baidu.com
保存文件并退出。现在,使用 dig
命令中的 -f
选项指定文件:
root@dev:~# dig -f domain.txt +short
------------------------------------------------------------------------------------
46.82.174.69
204.79.197.200
13.107.21.200
39.156.66.10
110.242.68.66
“+short” 选项可使结果易于管理。
3.9 永久调整默认选项
可以在 ~/.digrc
文件中更改 dig
显示的信息。
使用以下命令打开该文件进行编辑:
root@dev:~# vi ~/.digrc
写入:
+noall
+answer
再次运行 dig 命令:
root@dev:~# dig baidu.com
------------------------------------------------------------------------------------
baidu.com. 594 IN A 39.156.66.10
baidu.com. 594 IN A 110.242.68.66
只看到 Answer
部分,就像手动添加了 +noall
和 +answer
一样。
4. 结论
该命令可以帮助你找到更多有关域名服务器的信息。
感谢您花时间阅读文章!
收藏本站不迷路!
原文始发于微信公众号(滑翔的纸飞机):Linux 命令:dig(DNS 查询)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/260902.html