Linux下解析域名不仅使用nslookup之外linux dns 解析命令,开可以使用dig命令来解析域名,dig命令可以得到更多的域名信息。dig命令主要拿来从DNS域名服务器查询主机地址信息。dig的全称是(domaininformationgroper)域信息筛选器。它是一个拿来灵活侦测DNS的工具。它会复印出>DNSnameserver的回应。
查询单个域名的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则说明本次查询成功结束。
第三部份中的”QUESTIONSECTION”显示我们要查询的域名。
第四部份的”ANSWERSECTION”是查询到的结果。
第五部份则是本次查询的一些统计信息adobe air linux,例如用了多长时间,查询了那个DNS服务器,在哪些时间进行的查询等等。
默认情况下dig命令查询A记录,上图中显示的A即说明查询的记录类型为A记录。在尝试查询其它类型的记录前让我们先来了解一下常见的DNS记录类型。
常见DNS记录的类型
类型目的
A地址记录,拿来指定域名的IPv4地址,假如须要将域名指向一个IP地址linux多线程,就须要添加A记录。
AAAA拿来指定主机名(或域名)对应的IPv6地址记录。
CNAME假如须要将域名指向另一个域名,再由另一个域名提供ip地址,就须要添加CNAME记录。
MX假如须要设置邮箱,让邮箱才能收到电邮,须要添加MX记录。
NS域名服务器记录,假如须要把子域名交给其他DNS服务器解析,就须要添加NS记录。
SOASOA这些记录是所有区域性文件中的强制性记录。它必须是一个文件中的第一个记录。
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服务器linux dns 解析命令,dig会依次使用/etc/resolv.conf里的地址作为DNS服务器:
linuxidc@linuxidc:~$ dig m.linuxidc.com
里面查询的DNS服务器就弄成了:
反向查询
在上面的查询中我们指定了查询服务器为8.8.8.8,这是谁家的DNS服务器?虽然我们可以使用dig的-x选项来反向解析IP地址对应的域名:
linuxidc@linuxidc:~$ dig -x 8.8.8.8 +short google-public-dns-a.google.com.
好吧,应当是Google的,可以放心使用了。
控制显示结果
dig命令默认返回的结果展示详尽的信息,假如要获得精简的结果可以使用+short选项:
linuxidc@linuxidc:~$ dig +short m.linuxidc.com 122.228.238.15 106.119.182.141
这下显示的结果就清新多了。
虽然我们还可以通过更多选项来控制输出的内容,例如只想显示”ANSWERSECTION”的内容:
这个结果很不错,就是使用的选项太多了(dig命令有好多这样的选项,详情请参考使用指南)。我们可以换一种高贵一些的方法来实现和前面相同的结果:
linuxidc@linuxidc:~$ dig m.linuxidc.com +noall +answer ; < > DiG 9.11.3-1ubuntu1.5-Ubuntu < > m.linuxidc.com +noall +answer ;; global options: +cmd m.linuxidc.com. 5 IN A 113.107.238.212 m.linuxidc.com. 5 IN A 122.228.238.15
跟踪整个查询过程
假如你好奇dig命令执行查询时都经历了什么过程,你可以尝试使用+trace选项。它会输出从根域到最终结果的所有信息:
linuxidc@linuxidc:~$ dig sohu.com @202.102.134.68 -p 53 -t MX +trace ; < > DiG 9.11.3-1ubuntu1.5-Ubuntu < > sohu.com @202.102.134.68 -p 53 -t MX +trace ;; global options: +cmd . 482761 IN NS f.root-servers.net. . 482761 IN NS a.root-servers.net. . 482761 IN NS c.root-servers.net. . 482761 IN NS b.root-servers.net. . 482761 IN NS j.root-servers.net. . 482761 IN NS d.root-servers.net. . 482761 IN NS k.root-servers.net. . 482761 IN NS e.root-servers.net. . 482761 IN NS h.root-servers.net. . 482761 IN NS i.root-servers.net. . 482761 IN NS m.root-servers.net. . 482761 IN NS g.root-servers.net. . 482761 IN NS l.root-servers.net. ;; Received 239 bytes from 202.102.134.68#53(202.102.134.68) in 40 ms com. 172800 IN NS d.gtld-servers.net.
上图中显示的并不是一个完整的结果,感兴趣的同学可以自己尝试。
显示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
总结
dig是一个很给力DNS查询工具,本文仅介绍了其常见用法,更多的命令选项及使用方式请查看manpage。
原文来自:Linuxdig命令使用解读_Linux教程_Linux公社-Linux系统门户网站
本文地址:Linux下解析域名命令-dig命令使用解读|《Linux就该如此学》编辑:骗人小妖精,初审员:逄增宝
Linux命令大全:Linux命令大全(指南)–真正好用的Linux命令在线查询网站
Linux系统大全:Linux系统下载网-帮技术人员找到合适的系统!