导读 | Linux下解析域名除了使用nslookup之外,开可以使用dig命令来解析域名,dig命令可以得到更多的域名信息。dig 命令主要用来从 DNS 域名服务器查询主机地址信息。dig的全称是 (domain information groper )。它是一个用来灵活探测DNS的工具。它会打印出>DNS name server的回应。 |
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 命令的版本和输入的参数。
第二部分显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束。
第三部分中的 “QUESTION SECTION” 显示我们要查询的域名。
第四部分的 “ANSWER SECTION” 是查询到的结果。
第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等。
默认情况下 dig 命令查询 A 记录,上图中显示的 A 即说明查询的记录类型为 A 记录。在尝试查询其它类型的记录前让我们先来了解一下常见的 DNS 记录类型。
A 地址记录,用来指定域名的 IPv4 地址,如果需要将域名指向一个 IP 地址,就需要添加 A 记录。
AAAA 用来指定主机名(或域名)对应的 IPv6 地址记录。
CNAME 如果需要将域名指向另一个域名,再由另一个域名提供 ip 地址,就需要添加 CNAME 记录。
MX 如果需要设置邮箱,让邮箱能够收到邮件,需要添加 MX 记录。
NS 域名服务器记录,如果需要把子域名交给其他 DNS 服务器解析,就需要添加 NS 记录。
SOA SOA 这种记录是所有区域性文件中的强制性记录。它必须是一个文件中的第一个记录。
TXT 可以写任何东西,长度限制为 255。绝大多数的 TXT记录是用来做 SPF 记录(反垃圾邮件)。
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 记录的类型。
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。
linuxidc@linuxidc:~$ dig m.linuxidc.com
linuxidc@linuxidc:~$ dig -x 8.8.8.8 +short google-public-dns-a.google.com.
好吧,应该是Google的,可以放心使用了。
linuxidc@linuxidc:~$ dig +short m.linuxidc.com 122.228.238.15 106.119.182.141
这下显示的结果就清爽多了。
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
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.
上图中显示的并不是一个完整的结果,感兴趣的朋友可以自己尝试。
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 查询工具,本文仅介绍了其常见用法,更多的命令选项及使用方法请查看 man page。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/119759.html