前一篇文章形象了解 DNS 介绍了 DNS 的基本知识,本文介绍查问 DNS 的一个最通用工具 dig,通过它能够更好的了解 DNS,把握这个工具后,遇到和 DNS 无关问题时,就不会大刀阔斧了。
DNS 命令输入格局
输出 dig rss.newyingyong.cn 命令,通常返回
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49814
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 17
;; QUESTION SECTION:
;rss.newyingyong.cn. IN A
;; ANSWER SECTION:
rss.newyingyong.cn. 600 IN A 139.129.23.162
;; AUTHORITY SECTION:
newyingyong.cn. 86398 IN NS dns10.hichina.com.
newyingyong.cn. 86398 IN NS dns9.hichina.com.
;; ADDITIONAL SECTION:
dns9.hichina.com. 3490 IN A 140.205.81.15
dns9.hichina.com. 3490 IN A 140.205.81.25
;; Query time: 5 msec
;; SERVER: 10.202.72.116#53(10.202.72.116)
;; WHEN: Sat Jul 01 11:00:38 CST 2017
;; MSG SIZE rcvd: 369
各个返回参数阐明下:
status: NOERROR 示意查问没有什么谬误,Query time 示意查问实现工夫
SERVER: 10.202.72.116#53(10.202.72.116),示意本地 DNS 服务器地址和端口号
QUESTION SECTION 示意须要查问的内容,这里须要查问域名的 A 记录
ANSWER SECTION 示意查问后果,返回 A 记录的 IP 地址。600 示意本次查问缓存工夫,在 600 秒本地 DNS 服务器能够间接从缓存返回后果
AUTHORITY SECTION 示意从那台 DNS 服务器获取到具体的 A 记录信息。记住本地 DNS 服务器只是查问,而 AUTHORITY SECTION 返回的服务器是权威 DNS 服务器,由它来保护 rss.newyingyong.cn 的域名信息。返回的 DNS 记录类型是 NS,对应的名称是 dns10.hichina.com.,dns9.hichina.com.。
ADDITIONAL SECTION 示意 NS 服务器对应的 IP 地址,这些 IP 地址对应的服务器装置了 BIND 软件。
DNS 服务器记录类型
默认 dig rss.newyingyong.cn 返回的是 A 记录类型,其余类型还包含 MX、NS、SOA 等,咱们能够应用 dig -t a/mx/soa/mx rss.newyingyong.cn 进行查问。
(1)dig -t a www.weibo.com +noall +answer
;; global options: +cmd
www.weibo.com. 21 IN A 180.149.134.142
www.weibo.com. 21 IN A 180.149.134.141
其中 +noall +answer 示意返回简短信息,这里示意查问 A 记录。
留神,这里返回 2 个 A 记录,这相当于 DNS 平衡,比方浏览器客户端查问 www.weibo.com 域名失去两个 A 记录,而后连贯其中的一个 IP 地址对应的 WEB 服务器,如果发现连贯不上,能够应用另外一个地址连贯。
比方在万网域名治理后盾,能够给同一个域名增加两条 A 记录,相当于实现了域名负载平衡。
(2)dig -t ns weibo.com
留神如果用户输出 dig -t ns www.weibo.com 是查问不出 NS 任何记录的,起因在于只有一级域名(或者顶级域名)才有 NS 记录,通过 FQDN 是查问不出 NS 信息的,所以要输出 dig -t ns weibo.com,返回:
;; ANSWER SECTION:
weibo.com. 9962 IN NS ns3.sina.com.cn.
weibo.com. 9962 IN NS ns2.sina.com.cn.
weibo.com. 9962 IN NS ns1.sina.com.cn.
weibo.com. 9962 IN NS ns4.sina.com.
weibo.com. 9962 IN NS ns4.sina.com.cn.
weibo.com. 9962 IN NS ns3.sina.com.
;; ADDITIONAL SECTION:
ns1.sina.com.cn. 14162 IN A 202.106.184.166
ns2.sina.com.cn. 14906 IN A 61.172.201.254
ns3.sina.com. 26496 IN A 61.172.201.254
ns3.sina.com.cn. 9714 IN A 123.125.29.99
ns4.sina.com. 24154 IN A 123.125.29.99
ns4.sina.com.cn. 9733 IN A 121.14.1.22
微博的权威服务器是微博本人建设的,有 6 个名称和 IP 地址:
有这么多地址,次要是避免单点问题,比方某个 NS 服务器连贯不上,能够连贯其余 NS 服务器
上述的 NS IP 地址属于不同的运营商,不同的运营商可能会查问对应的 NS 服务器,起因就是减速查问。
(3)dig -t a www.baidu.com
;; ANSWER SECTION:
www.baidu.com. 691 IN CNAME www.a.shifen.com.
www.a.shifen.com. 271 IN A 115.239.211.112
www.a.shifen.com. 271 IN A 115.239.210.27
这里返回的 CNAME 示意查问 www.baidu.com 的信息其实是 www.a.shifen.com 返回的 A 记录。
CNAME 的存在起因:
某个域名(A)可能会下线,然而这些域名可能还是被拜访到,为了防止不敌对的提醒,能够将这个域名 cname 到另外个域名(B),这样拜访 B 相当于返回 A。
很多公司我的项目可能有很多个域名,然而指定的 IP 地址可能每几个,一旦 IP 地址变动,可能要批改每个域名的 DNS 信息。如果这些域名 cname 到某个特定的域名,那么批改域名信息的时候就会十分不便。
(4)dig -t mx newyingyong.cn
;; QUESTION SECTION:
;newyingyong.cn. IN MX
;; ANSWER SECTION:
newyingyong.cn. 600 IN MX 10 mx.sina.net.
返回 MX 记录,留神这里不能输出 dig -t mx rss.newyingyong.cn,因为 MX 记录个别配置在一级域名下。
DNS 迭代查问的具体流程
对于客户端(比方浏览器)查问本地域名 DNS 信息的时候,是递归查问的形式。而本地 DNS 服务器为了获取到某个域名的 DNS 信息,会应用迭代的形式(一步步询问)。通过 dig +trace blog.newyingyong.cn 来进行理解
;; global options: +cmd
. 18535 IN NS h.root-servers.net.
. 18535 IN NS m.root-servers.net.
. 18535 IN NS i.root-servers.net.
. 18535 IN NS d.root-servers.net.
. 18535 IN NS a.root-servers.net.
. 18535 IN NS b.root-servers.net.
;; Received 1097 bytes from 10.202.72.118#53(10.202.72.118) in 53 msec
cn. 172800 IN NS d.dns.cn.
cn. 172800 IN NS e.dns.cn.
cn. 172800 IN NS b.dns.cn.
cn. 172800 IN NS a.dns.cn.
cn. 172800 IN NS c.dns.cn.
;; Received 646 bytes from 192.36.148.17#53(i.root-servers.net) in 150 msec
newyingyong.cn. 86400 IN NS dns10.hichina.com.
newyingyong.cn. 86400 IN NS dns9.hichina.com.
;; Received 589 bytes from 203.119.29.1#53(e.dns.cn) in 37 msec
blog.newyingyong.cn. 600 IN A 139.129.23.162
;; Received 64 bytes from 106.11.211.55#53(dns9.hichina.com) in 19 ms
本地 DNS 服务器首先查问根域名服务器(10.202.72.118),失去 13 组根域名服务器中的一个,并返回对应某个根域名的 NS 服务器。
根域名 NS 服务器(192.36.148.17)说并不知道 blog.newyingyong.cn 顶级域名的具体信息,你去问 .cn 顶级域名服务器去把,并返回 .cn 域名服务器的 NS 记录。
.cn 域名服务器(203.119.29.1)说,我也不晓得 blog.newyingyong.cn 的信息,然而我晓得是阿里云治理的,并返回阿里云服务器的 NS 地址。
阿里云 DNS 服务器(106.11.211.55)说,这个域名的确是我治理的,最终返回 blog.rss.newyingyong.cn 的 A 记录(139.129.23.162)。
DNS 缓存
如果 DNS 服务器每次都须要迭代或递归查问上一级的 DNS 服务器,那么 DNS 可能就不堪重负,思考到域名的 DNS 信息不会频繁的批改,所以每一级中的 DNS 服务器都会缓存后果(包含浏览器这样的客户端也会缓存 DNS 后果)。
缓存带来的弊病可能就是 DNS 信息可能不是最新的,比方某个域名管理员批改了某个域名的 A 记录,因为每一级的 DNS 服务器都有缓存,所以最初客户端拿到的后果不是最新的,为了获取到最新的后果,能够间接向权威域名服务器进行信息查问。
比方 blog.rss.newyingyong.cn 的域名是由 dns9.hichina.com.(106.11.211.55)治理的,能够间接通过 dig @106.11.211.55 -t a newyingyong.cn 或者 dig @dns9.hichina.com -t a newyingyong.cn 获取最新 A 记录。
另外你也能够不查问本地 DNS 服务器获取信息,比方能够应用 8.8.8.8 Google Public DNS 进行查问,dig @8.8.8.8 -t a newyingyong.cn。
参考链接:
3 Ways to check DNS server IP in Linux