DNS 解析除錯(dig & nslookup)

candyleer發表於2019-02-23

背景

最近在進行 dns 除錯(比如開發了一個 dns 的 server,就需要除錯dns 解析是否符合預期)的時候接觸了一些基本工具.此處做個筆記,備查.

DNS型別

比較常用的是ACNAME

A:檢視主機的IPv4地址
AAAA:檢視主機的IPv6地址
ANY:檢視關於主機域的所有資訊
CNAME:查詢與別名對應的正式名字
HINFO:查詢主機的CPU與作業系統型別
MINFO:查詢郵箱資訊
MX:查詢郵件交換資訊
NS:查詢主機域的域名伺服器
PTR:查詢與給定IP地址匹配的主機名
RP:查詢域負責人記錄
SOA:查詢域內的SOA地址
UINFO:查詢使用者資訊
複製程式碼

工具

nslookup

nslookup命令,是Linux裡非常常用的網路命令,簡而言之就是“查DNS資訊用的”,如果沒有此命令,通過yum install bind-utils進行安裝.

nslookup是一個能夠查詢網際網路域名伺服器資訊的程式。他有兩種工作模式,即“互動模式”和“非互動模式”。

在“互動模式”下,使用者可以向域名伺服器查詢各類主機、域名的資訊,或者輸出域名中的主機列表。

而在“非互動模式”下,使用者可以針對一個主機或域名僅僅獲取特定的名稱或所需資訊。

簡單說下非互動模式

正常情況

~ nslookup  www.baidu.com  8.8.8.8 -port=53
Server:		8.8.8.8 //dns server
Address:	8.8.8.8#53 //server+port

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com. // 別名
Name:	www.a.shifen.com 
Address: 180.97.33.107  //地址
Name:	www.a.shifen.com
Address: 180.97.33.108
複製程式碼

錯誤情況

~ nslookup  www.baidu.com1  8.8.8.8 -port=53
Server:		8.8.8.8
Address:	8.8.8.8#53

** server can't find www.baidu.com1: NXDOMAIN
複製程式碼

互動模式功能更加強大.

dig

dig 全稱Domain Information Groper,傳言此工具非常強大. 廢話不多說,直接上個例子,查詢www.baidu.com8.8.8.8伺服器的53埠解析結果,當然如果要制定埠,增加-p 53 或者你的埠即可.

正常結果

 ~ dig @8.8.8.8 www.baidu.com A

; <<>> DiG 9.10.6 <<>> @8.8.8.8 www.baidu.com A
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12823
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.baidu.com.			IN	A

;; ANSWER SECTION:
www.baidu.com.		80	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	112	IN	A	180.97.33.108
www.a.shifen.com.	112	IN	A	180.97.33.107

;; Query time: 58 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon May 07 23:14:21 CST 2018
;; MSG SIZE  rcvd: 101
複製程式碼

錯誤結果

~ dig @8.8.8.8 www.baidu.com1 A

; <<>> DiG 9.10.6 <<>> @8.8.8.8 www.baidu.com1 A
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 44290
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.baidu.com1.			IN	A

;; AUTHORITY SECTION:
.			86392	IN	SOA	a.root-servers.net. nstld.verisign-grs.com. 2018050700 1800 900 604800 86400

;; Query time: 49 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon May 07 23:16:30 CST 2018
;; MSG SIZE  rcvd: 118
複製程式碼

從命令的返回結果看,dig返回的資訊更加豐富,除錯中需要的可能還有+trace 選項,用於追蹤 dns 解析的全過程.比如

~ dig +trace  @8.8.8.8 www.baidu.com A

; <<>> DiG 9.10.6 <<>> +trace @8.8.8.8 www.baidu.com A
; (1 server found)
;; global options: +cmd
.			243623	IN	NS	e.root-servers.net.
.			243623	IN	NS	h.root-servers.net.
.			243623	IN	NS	l.root-servers.net.
.			243623	IN	NS	i.root-servers.net.
.			243623	IN	NS	a.root-servers.net.
.			243623	IN	NS	d.root-servers.net.
.			243623	IN	NS	c.root-servers.net.
.			243623	IN	NS	b.root-servers.net.
.			243623	IN	NS	j.root-servers.net.
.			243623	IN	NS	k.root-servers.net.
.			243623	IN	NS	g.root-servers.net.
.			243623	IN	NS	m.root-servers.net.
.			243623	IN	NS	f.root-servers.net.
.			243623	IN	RRSIG	NS 8 0 518400 20180518170000 20180505160000 39570 . NEoKyFHHEdXvMg1bip/9XeAQhV22bQa04O5tUH/g2SN/9AcYb0vbkLP/ 1ur6HNU8K57rUWZl94Zmbh7NA4gGQ7SarA9OvG9wz4YrdLkWEV9Up+JI JvvH9d+IlFQdlsV9XGwZ9xJRAnz2KflsOlFO8/vbRIQyLSJXANaNp/NV KYkOaWgjghVzN8x5qbsErU9P5G/UUQ6BZdis03rGLOMkchRggV9y7+/G 5JlPtyXoNBczvDS5j29yTV0F3P3Tf5cmtiK2DfwD4Lk6thTymBcf7qfL Ga9amC4QdfvDUhXVzPOFTARvST7yzIDCqwqbuW8s7imw2Z23Q2TqTqwq 6RDhbQ==
;; Received 525 bytes from 8.8.8.8#53(8.8.8.8) in 53 ms

com.			172800	IN	NS	a.gtld-servers.net.
com.			172800	IN	NS	b.gtld-servers.net.
com.			172800	IN	NS	c.gtld-servers.net.
com.			172800	IN	NS	d.gtld-servers.net.
com.			172800	IN	NS	e.gtld-servers.net.
com.			172800	IN	NS	f.gtld-servers.net.
com.			172800	IN	NS	g.gtld-servers.net.
com.			172800	IN	NS	h.gtld-servers.net.
com.			172800	IN	NS	i.gtld-servers.net.
com.			172800	IN	NS	j.gtld-servers.net.
com.			172800	IN	NS	k.gtld-servers.net.
com.			172800	IN	NS	l.gtld-servers.net.
com.			172800	IN	NS	m.gtld-servers.net.
com.			86400	IN	DS	30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.			86400	IN	RRSIG	DS 8 1 86400 20180520050000 20180507040000 39570 . GiCsdUG5kyf5edT12Gdr/DT6dNUqILHfdqZ2t1vS0VY8YErVjoXRwNlr SoufI39JoZ6ChuMA3wLCo+Q9uTtRoqDKHKJU8MS7MXWyhitbQeL1cdSW insHZZVMltOH4lblQgSSPm4rte4fW+4J9lissWSPNW4d1JnHTTVtDPo+ A6jx6aYpapREv69eE89CfZ8lWBxyr788PDLw/bpwQYX5FuwzpmVZeRCQ G5j/ujt2wGn1NGs/EX3cOXpX4+0RS6fTo4YhTDZ2IIOoMg3ISz55w8Ai FczfOxxW35Gy6dhf6pV1VX943AepsYTUHjDVnK6aHTiwUcrShBtvDmXb Otk2Vg==
;; Received 1173 bytes from 193.0.14.129#53(k.root-servers.net) in 222 ms

baidu.com.		172800	IN	NS	dns.baidu.com.
baidu.com.		172800	IN	NS	ns2.baidu.com.
baidu.com.		172800	IN	NS	ns3.baidu.com.
baidu.com.		172800	IN	NS	ns4.baidu.com.
baidu.com.		172800	IN	NS	ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A  NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20180512044510 20180505033510 36707 com. ojEZ8Iv1J7vE5QEfjJM1YQSdFLvHhVqppd6HA3cZDZff+TdX5YSsNPf1 gVepdTn0W03LMHSmQhtZJKWE7TzTpQfJUF+UZz/Nj8CPOvRJ+hdDfoPw CIAg5ZVfzfYNSrdsOGFbkxGQ6drlE/Os5tnTcQnrDJktwBilZcohoAkn ioY=
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN NSEC3 1 1 0 - HPVVP23QUO0FP9R0A04URSICJPESKO9J  NS DS RRSIG
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN RRSIG NSEC3 8 2 86400 20180514043320 20180507032320 36707 com. LkMylF9BfM38jxtdq02EKZMU5fb3BMrs5vnJl94V1eJOKXTPdJxxpU91 sSnDBhA1FXzeMFEN4yVkUu3mYXmsJ42FHShqoKkvpueRnB0ympU83Tb8 8iVA2FLX8M6227JZLss5TEqgW8maqAxLb5/ly8lQs5zPk2WY7c5UdqdV 1BQ=
;; Received 697 bytes from 192.52.178.30#53(k.gtld-servers.net) in 317 ms

www.baidu.com.		1200	IN	CNAME	www.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns2.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns4.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns1.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns3.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns5.a.shifen.com.
;; Received 239 bytes from 220.181.38.10#53(ns4.baidu.com) in 54 ms
複製程式碼

簡化輸出

dig 普通的輸出內容比較多,不便於檢視,提供了幾個簡化的命令輸出 +nocmd +short +nocomment +nostat

參考

  1. 《nslookup通往DNS的橋樑》-linux命令五分鐘系列之三十三
  2. 《dig挖出DNS的祕密》-linux命令五分鐘系列之三十四

相關文章