dig命令,可以用来分析dns解析过程。最简单的使用方式: dig your domain。
例如使用dig www.baidu.com,会输出如下信息:
dig www.baidu.com
; <<>> DiG 9.14.7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3296
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 131 IN CNAME www.a.shifen.com.
www.a.shifen.com. 84 IN A 61.135.169.121
www.a.shifen.com. 84 IN A 61.135.169.125
;; Query time: 6 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: 二 11月 05 23:35:03 CST 2019
;; MSG SIZE rcvd: 90
返回内容解析
- 第一部分
; <<>> DiG 9.14.7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3296
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
dig返回内容的第一部分,主要包括dig的版本信息,以及本次命令执行结果的摘要。
>opcode:QUERY,表示执行查询操作。
status:NOERROR。解析成功。
- QUESTION SECTION
;; QUESTION SECTION:
;www.baidu.com. IN A
展示发起的DNS 请求参数。其中A表示我们默认查询A类型的记录。
-
ANSWER SECTION
这一部分展示DNS服务的响应流程。
;; ANSWER SECTION:
www.baidu.com. 131 IN CNAME www.a.shifen.com.
www.a.shifen.com. 84 IN A 61.135.169.121
www.a.shifen.com. 84 IN A 61.135.169.125
其格式解读如下:
- 对应的域名,这里是baidu.com.,'.'代表根域名,com顶级域名,baidu二级域名
- TTL,time to live,缓存时间,单位秒。600,代表该记录可以缓存的时间,超过改时间则需要重新获取刷新。
- class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于现在都是互联网,所以其它基本不用。
- type,要查询的记录类型,A记录,代表要查询ipv4地址。后边会专门解释dns中记录的类别。
- 域名对应的ip地址。
对于dns返回记录的type,主要包括的类型如下:
type | 描述 | 说明 |
---|---|---|
A | Adress,域名所对应的ipv4地址 | - |
AAAA | 域名所对应的ipv6地址 | - |
NS | name server,域名服务器,代表该域名需要到哪个域名服务器去解析 | - |
SOA | SOA叫做起始授权机构。NS可能会记录多台域名解析服务器,而SOA则标识应该将哪一台作为主解析服务器。同时SOA也记录了域名服务器所有人的email联系地址 | - |
CNAME | Canonical name record,该域名的别名。通过CNAME,可以将多个域名映射到一个域名上,然后在将该域名和ip绑定起来。这样,如果服务器ip变更,其他域名无需感知,只需要该域名和ip进行重新映射即可 | - |
使用说明
使用 dig url +trace,可以看到更详细的域名解析过程,便于更方便定位问题。
nslookup也可以进行dns分析。
参考文献
https://ns1.com/blog/decoding-dig-output
https://en.wikipedia.org/wiki/List_of_DNS_record_types
网友评论