应用层 DNS Linux 下解析域名命令 dig 命令使用详解

查询单个域名的 DNS 信息


dig 命令最典型的用法就是查询单个主机的信息。

linuxidc@linuxidc:~$ dig www.linuxidc.com

; < <>> DiG 9.11.3-1Ubuntu1.5-Ubuntu < <>> www.linuxidc.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 17774
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
www.linuxidc.com. 5 IN A 122.228.238.15
www.linuxidc.com. 5 IN A 106.42.25.203

;; Query time: 10 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 03 10:55:35 CST 2019
;; MSG SIZE  rcvd: 77

dig 命令默认的输出信息比较丰富,大概可以分为5 个部分

  • 第一部分显示 dig 命令的版本和输入的参数
  • 第二部分显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束
  • 第三部分中的 "QUESTION SECTION" 显示我们要查询的域名
  • 第四部分的 "ANSWER SECTION" 是查询到的结果
  • 第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等

默认情况下 dig 命令查询 A 记录,上图中显示的 A 即说明查询的记录类型为 A 记录。在尝试查询其它类型的记录前让我们先来了解一下常见的 DNS 记录类型。

常见 DNS 记录的类型


类型目的

A 地址记录,用来指定域名的 IPv4 地址,如果需要将域名指向一个 IP 地址,就需要添加 A 记录。
AAAA 用来指定主机名(或域名)对应的 IPv6 地址记录。

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

CNAME 通常称别名指向。您可以为一个主机设置别名。比如设置test.mydomain.com,用来指向一个主机www.rddns.com,那么以后就可以用test.mydomain.com来代替访问www.rddns.com了。

说明:

  • CNAME的目标主机地址只能使用主机名,不能使用IP地址
  • 主机名前不能有任何其他前缀,如:http://等是不被允许的
  • A记录优先于CNAME记录。即如果一个主机地址同时存在A记录和CNAME记录,则CNAME记录不生效


MX 如果需要设置邮箱,让邮箱能够收到邮件,需要添加 MX 记录。
NS 域名服务器记录,如果需要把子域名交给其他 DNS 服务器解析,就需要添加 NS 记录。
SOA SOA 这种记录是所有区域性文件中的强制性记录。它必须是一个文件中的第一个记录。
TXT 可以写任何东西,长度限制为 255。绝大多数的 TXT记录是用来做 SPF 记录(反垃圾邮件)。

查询 CNAME 类型的记录


除了A记录,常见的DNS记录还有CNAME,我们可以在查询时指定要查询的DNS记录类型: 

linuxidc@linuxidc:~$ dig m.linuxidc.com CNAME

; < <>> DiG 9.11.3-1ubuntu1.5-Ubuntu < <>> m.linuxidc.com CNAME
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 61349
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;m.linuxidc.com.   IN CNAME

;; Query time: 26 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 03 11:20:34 CST 2019
;; MSG SIZE  rcvd: 43

这样结果中就只有 CNAME 的记录。其实我们可以在查询中指定任何 DNS 记录的类型。

从指定的 DNS 服务器上查询


由于一些原因,希望从指定的 DNS 服务器上进行查询(从默认的 DNS 服务器上获得的结果可能不准确)。指定 DNS 服务器的方式为使用 @ 符号:

linuxidc@linuxidc:~$ dig @8.8.8.8 m.linuxidc.com

; < <>> DiG 9.11.3-1ubuntu1.5-Ubuntu < <>> @8.8.8.8 m.linuxidc.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 38966
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;m.linuxidc.com.   IN A

;; ANSWER SECTION:
m.linuxidc.com.  199 IN A 122.228.238.71
m.linuxidc.com.  199 IN A 113.107.238.155

;; Query time: 120 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Mar 03 11:21:48 CST 2019
;; MSG SIZE  rcvd: 75

从上图可以看到本次查询的 DNS 服务器为 8.8.8.8。 

如果不指定 DNS 服务器,dig 会依次使用 /etc/resolv.conf 里的地址作为 DNS 服务器:

linuxidc@linuxidc:~$ dig m.linuxidc.com

 上面查询的 DNS 服务器就变成了:

显示13个根域服务器


internet上有13个根域服务器,使用不加参数的dig命令显示这些服务器信息

linuxidc@linuxidc:~$ dig

; < <>> DiG 9.11.3-1ubuntu1.5-Ubuntu < <>>
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 41525
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;.    IN NS

;; ANSWER SECTION:
.   5 IN NS b.root-servers.net.
.   5 IN NS c.root-servers.net.
.   5 IN NS d.root-servers.net.
.   5 IN NS e.root-servers.net.
.   5 IN NS f.root-servers.net.
.   5 IN NS g.root-servers.net.
.   5 IN NS h.root-servers.net.
.   5 IN NS i.root-servers.net.
.   5 IN NS j.root-servers.net.
.   5 IN NS k.root-servers.net.
.   5 IN NS l.root-servers.net.
.   5 IN NS m.root-servers.net.
.   5 IN NS a.root-servers.net.

;; Query time: 8 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 03 11:37:11 CST 2019
;; MSG SIZE  rcvd: 239

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux中常用的域名解析命令包括: 1. nslookup:用于查询DNS服务器上的域名解析记录,可以查询A记录、MX记录、NS记录等。 2. dig:也是用于查询DNS服务器上的域名解析记录,可以查询更详细的信息,如TTL值、授权域名服务器等。 3. host:用于查询指定主机名或IP地址的解析结果,可以查询A记录、PTR记录等。 4. ping:用于测试网络连接和延迟,可以通过域名或IP地址进行测试。 5. traceroute:用于跟踪数据包在网络中的路径,可以通过域名或IP地址进行跟踪。 6. hostname:用于查看或设置主机名。 7. hostnamectl:用于查看或设置主机名和相关配置,如时区、静态主机名等。 ### 回答2: Linux域名解析命令主要用于查看主机与域名服务器之间的网络连接信息,以及查询特定域名的IP地址。这些命令包括nslookup、dig和host。 1. nslookup命令 nslookup是一种基于命令行的网络工具,用于查询DNS域名解析使用nslookup命令,可以便捷地查看域名转换为IP地址的过程,可以将该域名与多个DNS服务器进行查询,获取相应IP地址和MX(邮件交换)记录。可以使用以下命令格式: nslookup [域名] 例如,我们可以使用以下命令查询百度的IP地址: nslookup baidu.com 2. dig命令 dig是一个命令行工具,它可以用于执行DNS查询操作。与nslookup命令相比,dig命令的查询速度更快,查询结果也更全面。它支持多种查询类型,例如A、MX、TXT、PTR等等。可以使用以下命令格式: dig [查询类型] [域名] 例如,我们可以使用以下命令查询百度最新的MX(邮件交换)记录: dig mx baidu.com 3. host命令 host命令也是一种基于命令行的网络工具,用于查询DNS域名解析。与nslookup命令类似,它可以将域名转换为IP地址,还可以显示IP地址的反向DNS解析,以及查询其他DNS记录类型。可以使用以下命令格式: host [域名] 例如,我们可以使用以下命令查询GitHub的A记录: host github.com 总之,以上几种命令都可以在Linux系统中查询域名解析信息。了解并掌握这些命令,有助于更好地进行网络诊断和调试。 ### 回答3: Linux操作系统中有多种域名解析命令,以下是其中几种常用的: 1. ping命令 Ping命令可以测试网络的连通性和响应时间,同时也可以通过域名解析得到主机的IP地址。在终端输入“ping [域名或IP地址]”即可执行。例如,输入“ping www.baidu.com”会返回百度的IP地址103.235.46.39。 2. nslookup命令 nslookup命令可以查询DNS信息,并返回指定域名解析结果。在终端输入“nslookup [域名]”即可执行。例如,输入“nslookup www.baidu.com”会返回百度的IP地址103.235.46.39和其对应的DNS服务器信息。 3. host命令 host命令可以查询DNS信息,并返回指定域名解析结果,不同于nslookup的是,host命令会返回简洁的解析结果。在终端输入“host [域名]”即可执行。例如,输入“host www.baidu.com”会返回百度的IP地址103.235.46.39。 4. dig命令 dig命令可以查询DNS信息,能够返回更详细的结果信息,如DNS服务器的IP地址、DNS解析时间等,在调试DNS问题时十分有用。在终端输入“dig [域名]”即可执行。例如,输入“dig www.baidu.com”会返回更详细的解析结果信息。 这些命令Linux系统中非常常用,可以用来查询DNS解析结果、测试主机连通性等。域名解析命令的掌握对于网络管理员、运维人员等工作依赖于Linux系统的人员来说至关重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值