DNS常見故障排查


問題
DNS故障排查

解決方案
DNS常見故障排查
DNS是虛擬主機系統服務的基礎服務,也是常見的故障發生點。DNS不能解析的常見原因有:

l 域名本身已經過期或被停止;

l 域名的DNS服務器記錄不正確;

l 域名的DNS服務器記錄本身沒有作解析;

l 域名的DNS服務器上named服務沒有啟動;

l 域名的DNS服務器上未解析;

l 域名的多個DNS服務器上的解析不一致;

l 域名的DNS服務器網絡設置禁止了53端口TCP/UDP協議;

l 本地DNS cache未更新,與DNS服務器上的記錄不同步。

 

DNS的解析過程:

1) 首先查找本地DNS的cache,如果cache里有,且未超過服務器或域名本身定義的生存時間,則返回cache中的記錄;

2) 如果cache中沒有,或已過期,首先查詢互聯網根服務器(如a.gtld-servers.net),找出該域名的DNS服務器是哪幾個,如果查不到,返回錯誤;

3) 隨機地從域名的DNS服務器中挑出一個,查出其IP地址,如果查不到,返回錯誤;

4) 連接到該IP地址的53端口(UDP或TCP協議),查詢域名,如果連接不上,或服務器未返回結果,則返回錯誤。

 

如何判斷域名本身已經過期或被停止

通過whois

在Linux/Unix上,可以使用whois工具,查詢域名注冊記錄,如:

查詢.com域名:

_______________________________________________________________

whois abc.com

_______________________________________________________________

查詢.cn域名:

_______________________________________________________________

whois -h whois.cnnic.net.cn abc.com.cn

_______________________________________________________________

如果查詢不到該記錄,或記錄中域名狀態不正常,或記錄中過期日已到,則說明該域名未注冊或過期被停止。

 

也可以直接到www.internic.net查詢國際域名,以及www.cnnic.net.cn查詢國內域名。

 

 

如何判斷域名的DNS服務器記錄不正確

在Linux/Unix上,可以使用dig工具,在win2000上,可以使用nslookup工具,從互聯網根服務器上查詢域名的DNS服務器。

以dig為例:

_______________________________________________________________

dig @a.gtld-servers.net abc.com

_______________________________________________________________

結果:

_______________________________________________________________

; <<>> DiG 9.2.1 <<>> @a.gtld-servers.net abc.com

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1625

;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 4

 

;; QUESTION SECTION:

;abc.com. IN A

 

;; AUTHORITY SECTION:

abc.com. 172800 IN NS sens01.dig.com.

abc.com. 172800 IN NS sens02.dig.com.

abc.com. 172800 IN NS orns01.dig.com.

abc.com. 172800 IN NS orns02.dig.com.

 

;; ADDITIONAL SECTION:

sens01.dig.com. 172800 IN A 199.181.134.16

sens02.dig.com. 172800 IN A 199.181.135.199

orns01.dig.com. 172800 IN A 63.70.44.44

orns02.dig.com. 172800 IN A 63.70.47.44

 

;; Query time: 580 msec

;; SERVER: 192.5.6.30#53(a.gtld-servers.net)

;; WHEN: Tue Jul 8 14:43:10 2003

;; MSG SIZE rcvd: 177

_______________________________________________________________

錯誤結果:

_______________________________________________________________

; <<>> DiG 9.2.1 <<>> @a.gtld-servers.net abcnotexists.com

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 35479

;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

 

;; QUESTION SECTION:

;abcnotexists.com. IN A

 

;; AUTHORITY SECTION:

com. 172800 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 2003070701 1800 900 604800 86400

 

;; Query time: 405 msec

;; SERVER: 192.5.6.30#53(a.gtld-servers.net)

;; WHEN: Tue Jul 8 14:44:44 2003

;; MSG SIZE rcvd: 107

_______________________________________________________________

可以看到,只有Question,沒有Answer。或者可以用whois工具:

whois abc.com

[whois.crsnic.net]

 

Whois Server Version 1.3

 

Domain names in the .com and .net domains can now be registered

with many different competing registrars. Go to http://www.internic.net

for detailed information.

 

Domain Name: ABC.COM

Registrar: NETWORK SOLUTIONS, INC.

Whois Server: whois.networksolutions.com

Referral URL: http://www.networksolutions.com

Name Server: SENS01.DIG.COM

Name Server: SENS02.DIG.COM

Name Server: ORNS01.DIG.COM

Name Server: ORNS02.DIG.COM

Status: REGISTRAR-LOCK

Updated Date: 13-aug-2003

Creation Date: 22-may-1996

Expiration Date: 23-may-2005

 

 

>>> Last update of whois database: Tue, 8 Jun 2004 20:06:03 EDT <<<

 

以win2000 nslookup為例,

nslookup

? server a.gtld-servers.net

? set type=NS

? abc.com

 

互聯網根服務器通常每天刷新一次,新注冊的域名需要24~48小時,才能在根服務器中出現,修改DNS服務器情況類似。

 

如何判斷域名的DNS服務器記錄本身有沒有解析

域名的DNS服務器記錄是一組特殊的主機名。這些DNS主機名必須要在Internic注冊之后,才能用於域名注冊。注冊之后,通過whois能夠查到,而且在互聯網根服務器上會為注冊的DNS服務器作解析。

以abc.com為例,他的dns服務器

Name Server: SENS01.DIG.COM

Name Server: SENS02.DIG.COM

Name Server: ORNS01.DIG.COM

Name Server: ORNS02.DIG.COM

都可以通過whois以及dig @a.gtld-servers.net查到。

 

為了保險起見,所有注冊過的DNS服務器,同時也要在它本身的域名服務器上作A紀錄的解析。否則,有的客戶端可能不能正常工作。

如SENS01.DIG.COM本身在其自身的DNS服務器上也作了解析。這個情況可以用下面的圖來理解:

 

example.com other.com

| |

|----------------------à dns.other.com (10.0.0.1) ?---------- -----|

 

如果您注冊了DNS服務器,但沒有為DNS服務器做解析,可能會出現解析不穩定的情況。

 

如何判斷域名的DNS服務器上named服務有沒有啟動

可以用ps aux命令察看系統進程,如果中間沒有named的進程,則用

/etc/init.d/named start

啟動named服務,用

chkconfig --list named

檢查named服務有沒有被設成自動啟動,如果沒有,執行:

chkconfig --level 345 named on

將named設成自動啟動。

 

如何判斷域名的DNS服務器上未解析

登陸到域名的DNS服務器上,執行:

dig @localhost abc.com

如果沒有結果,可以看/etc/named.conf中有沒有該域名的記錄,以及記錄中的zone文件是否存在,如果都存在,可以執行:

rndc reload abc.com

然后,

tail /var/log/messages

看log中有沒有報錯,有沒有zone文件格式的問題。

 

如何判斷域名的多個DNS服務器上的解析不一致

依次查詢該域名的每個DNS服務器,看結果是否一致。在所有的服務器中,如果有的服務器沒有返回結果,不會影響到域名的正常解析,因為此時解析客戶端會嘗試其他的服務器,只有當所有的服務器都沒有結果才會報錯。但是如果A服務器上和B服務器上的解析不一致,則會出現域名解析時對時不對的故障。

Dig @dns1.yourname.com abc.com

Dig @dns2.yourname.com abc.com

如果不一致,通常是服務器之間的同步問題。

 

如何判斷域名的DNS服務器網絡設置是否正確

可以從其他機器分別以tcp和udp協議連接,如:

dig +tcp @dns1.yourname.com abc.com

dig +notcp @dns1.yourname.com abc.com

如果不能連接,而且服務器上named服務已經啟動,多半是軟件或硬件防火牆的原因。在服務器上檢查/etc/sysconfig/ipchains或iptable中是否允許domain(53端口)的tcp及udp連接。或暫時停止ipchains/iptable服務,看外部是否能夠連接。如果軟件防火牆配置正確或根本未啟動,則檢查硬件防火牆有沒有打開53端口。

 

如何判斷本地DNS cache未更新

可以查出域名的DNS服務器,檢查這些服務器上解析是否正確,如果服務器上正確,而本地解析不正確,則說明使用的本地DNS服務器沒有刷新,需要等到它刷新之后。通常需要4到12個小時左右。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM