Dig 命令讲解

原文地址:https://www.jianshu.com/p/71f61652ec23
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

各个返回参数说明下:

  1. status: NOERROR 表示查询没有什么错误,Query time 表示查询完成时间
  2. SERVER: 10.202.72.116#53(10.202.72.116),表示本地 DNS 服务器地址和端口号
  3. QUESTION SECTION 表示需要查询的内容,这里需要查询域名的 A 记录
  4. ANSWER SECTION 表示查询结果,返回 A 记录的 IP 地址。600 表示本次查询缓存时间,在 600 秒本地 DNS 服务器可以直接从缓存返回结果
  5. AUTHORITY SECTION 表示从那台 DNS 服务器获取到具体的 A 记录信息。记住本地 DNS 服务器只是查询,而 AUTHORITY SECTION 返回的服务器是权威 DNS 服务器,由它来维护 rss.newyingyong.cn 的域名信息。返回的 DNS 记录类型是 NS,对应的名称是 dns10.hichina.com.,dns9.hichina.com.。
  6. 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 记录,相当于实现了域名负载均衡。

  1. 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 服务器,原因就是加速查询。

  1. 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 到某个特定的域名,那么修改域名信息的时候就会非常方便。

  1. 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
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值