dig(Domain Information Groper)是强大的DNS查询工具,其返回信息包含DNS解析的完整技术细节。下面通过一个查询示例(dig baidu.com)逐部分解析各字段含义
一、完整 dig 输出示例
; <<>> DiG 9.16.1-Ubuntu <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65333
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;baidu.com. IN A
;; ANSWER SECTION:
baidu.com. 600 IN A 39.156.66.10
baidu.com. 600 IN A 110.242.68.66
;; Query time: 48 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Oct 05 15:20:00 CST 2023
;; MSG SIZE rcvd: 70
二、逐字段解析
1. 头部信息(Header)
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65333
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
opcode: 操作类型(QUERY=标准查询)
status: 响应状态 NOERROR(成功)| NXDOMAIN(域名不存在)| SERVFAIL(服务器失败)
id: 请求ID(匹配请求与响应)
flags: 标志位 qr(1=响应) rd(递归请求) ra(递归可用)
aa(权威应答) ad(DNSSEC验证) cd(禁用验证)
QUERY: 查询问题数量
ANSWER: 回答记录数量
AUTHORITY: 权威记录数量(如域名NS服务器)
ADDITIONAL: 额外记录数量
2. EDNS扩展信息
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
EDNS: DNS扩展协议,支持更大数据包
udp: DNS服务器使用的UDP包大小(字节)
3. 查询问题(QUESTION SECTION)
;; QUESTION SECTION:
;baidu.com. IN A
域名: baidu.com.(末尾.表示FQDN绝对域名)
查询类型: IN(Internet类别)
记录类型: A(IPv4地址),其他常见类型:AAAA(IPv6)、CNAME(别名)、MX(邮件服务器)
4. 回答记录(ANSWER SECTION)
;; ANSWER SECTION:
baidu.com. 600 IN A 39.156.66.10
baidu.com. 600 IN A 110.242.68.66
域名(baidu.com): 应答的域名(与查询域名一致或重定向)
TTL: 600(缓存有效期,单位:秒)
记录类型: A(IPv4地址)
数据: 解析的IP地址(此处返回2个IP,实现负载均衡)
5. 权威/附加记录(若存在的话)
AUTHORITY SECTION: 域名的权威DNS服务器(未出现表示未返回)
ADDITIONAL SECTION: 额外信息(如NS服务器对应的IP)
6. 统计信息(Stats)
;; Query time: 48 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Oct 05 15:20:00 CST 2023
;; MSG SIZE rcvd: 70
Query time: 查询耗时(48毫秒)
SERVER: 使用的DNS服务器(127.0.0.53:53)
WHEN: 查询时间戳
MSG SIZE: 响应数据包大小(70字节)
三、关键场景解读
场景1:域名不存在(NXDOMAIN)
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
status: NXDOMAIN(域名不存在)
多说一句:可以通过dig一个不存在的域名判断dns是否被劫持
如:dig xdfejwiojfewiojq.com 正常应该返回NXDOMAIN,
但如果返回NOERROR(成功解析)说明dns已经被劫持了。
ANSWER: 0(无回答记录)
场景2:CNAME重定向
;; ANSWER SECTION:
www.google.com. 300 IN CNAME www.l.google.com.
www.l.google.com. 300 IN A 142.250.66.196
第一行为CNAME记录(别名指向 www.l.google.com)
第二行为最终A记录(解析到IP)
场景3:DNS劫持检测
;; ANSWER SECTION:
baidu.com. 0 IN A 1.2.3.4
异常IP(1.2.3.4 非真实百度IP)
对比公共DNS(如dig @223.5.5.5 baidu.com),若IP不一致则可能被劫持。
四、常用参数解析
dig +short baidu.com 仅输出IP(简洁模式)
dig baidu.com AAAA 查询IPv6地址(AAAA记录)
dig baidu.com MX 查询邮件服务器记录
dig +trace baidu.com 显示完整递归查询路径
dig @8.8.8.8 baidu.com 指定DNS服务器查询