侧边栏壁纸
博主头像
运维日记-记录IT运维经验博主等级

行动起来,活在当下

  • 累计撰写 66 篇文章
  • 累计创建 7 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

使用dig命令查询dns信息

xlong
2024-03-26 / 0 评论 / 0 点赞 / 4 阅读 / 12776 字 / 正在检测是否收录...

dig

dig 命令可以查询各种类型 DNS 记录信息,包括:主机名称记录(A、AAAA)、邮件交换记录(MX)和别名记录(CNAME)等等。由于其灵活性和易用性,它是系统管理员解决 DNS 问题时最常用的工具。

常见的DNS记录类型

类型

目的

A

地址记录,用来指定域名的 IPv4 地址,如果需要将域名指向一个 IP 地址,就需要添加 A 记录。

AAAA

用来指定主机名(或域名)对应的 IPv6 地址记录。

CNAME

如果需要将域名指向另一个域名,再由另一个域名提供 ip 地址,就需要添加 CNAME 记录。

MX

如果需要设置邮箱,让邮箱能够收到邮件,需要添加 MX 记录。

NS

域名服务器记录,如果需要把子域名交给其他 DNS 服务器解析,就需要添加 NS 记录。

SOA

SOA 这种记录是所有区域性文件中的强制性记录。它必须是一个文件中的第一个记录。

TXT

可以写任何东西,长度限制为 255。绝大多数的 TXT记录是用来做 SPF 记录(反垃圾邮件)。

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参数。

参考文档:

https://www.sysgeek.cn/linux-dig/

0

评论区