導讀]Nslookup 是一個監測網絡中DNS服務器是否能正確實現域名解析的命令行工具。它在 Windows NT/2000/XP(在以後的windows系統也均可以用的,好比win7,win8等) 中都可使用,但在Windows 98中卻沒有集成這一個工具。 Nslook... 數據庫
Nslookup 是一個監測網絡中DNS服務器是否能正確實現域名解析的命令行工具。它在 Windows NT/2000/XP(在以後的windows系統也均可以用的,好比win7,win8等) 中都可使用,但在Windows 98中卻沒有集成這一個工具。 Nslookup 必需要安裝了TCP/IP 協議的網絡環境以後才能使用。 如今網絡中已經架設好了一臺 DNS 服務器,主機名稱爲TEST ,它能夠把域名 www.1234.com 解析爲 192.168.0.1 的IP地址,這是咱們平時用得比較多的正向解析功能。 檢測步驟以下: 在 Windows 2000 中單擊「開始」->「程序」->「附件」->「命令提示符」,在 C:\> 的後面鍵入 Nslookup www.123.com ,「回車」以後便可看到以下結果: Server: TEST Address: 192.168.0.5 Name: www.123.com Address: 192.168.0.1 以上結果顯示,正在工做的 DNS 服務器的主機名爲TEST ,它的 IP 地址是192.168.0.5 ,而域名www.1234.com 所對應的 IP 地址爲 192.168.0.1 。那麼,在檢測到 DNS 服務器TEST 已經能順利實現正向解析的狀況下,它的反向解析是否正常呢? 也就是說,可否把IP地址192.168.0.1反向解析爲域名www.123.com ?咱們在命令提示符C:\>的後面鍵入 Nslookup 192.168.0.1 ,獲得結果以下: Server:TEST Address: 192.168.0.5 Name: www.123.com Address: 192.168.0.1 這說明,DNS 服務器 TEST 的反向解析功能也正常。 然而,有的時候,咱們鍵入Nslookup www.123.com ,卻出現以下結果: Server:TEST Address: 192.168.0.5 *** TEST can't find www.123.com: Non-existent domain 這種狀況說明網絡中DNS服務器TEST 在工做,卻不能實現域名 **www.123.com的正確解析。此時,要分析DNS服務器的配置狀況,看是否 www.1234.com 這一條域名對應的 IP 地址記錄已經添加到了DNS的數據庫中。 還有的時候,咱們鍵入Nslookup www.123.com ,會出現以下結果: *** Can't find server name for domain: No response from server *** Can't find www.1234.com : Non-existent domain 這時,說明測試主機在目前的網絡中,根本沒有找到可使用的 DNS 服務器。此時,咱們要對整個網絡的連通性做全面的檢測,並檢查DNS服務器是否處於正常工做狀態,採用逐步排錯的方法,找出 DNS 服務不能啓動的根源。 配置好DNS服務器,添加了相應的記錄以後,只要IP地址保持不變,通常狀況下咱們就再也不須要去維護DNS的數據文件了。不過在確認域名解釋正常以前咱們最好是測試一下全部的配置是否正常。許多人會簡單地使用ping命令檢查一下就算了。不過Ping指令只是一個檢查網絡聯通狀況的命令,雖然在輸入的參數是域名的狀況下會經過DNS進行查詢,可是它只能查詢A類型和CNAME類型的記錄,並且只會告訴你域名是否存在,其餘的信息一律欠奉。因此若是你須要對DNS的故障進行排錯就必須熟練另外一個更強大的工具nslookup。這個命令能夠指定查詢的類型,能夠查到DNS記錄的生存時間還能夠指定使用那個DNS服務器進行解釋。 查詢IP地址 nslookup最簡單的用法就是查詢域名對應的IP地址,包括A記錄和CNAME記錄,若是查到的是CNAME記錄還會返回別名記錄的設置狀況。其用法是: nslookup 域名 如下是A記錄的返回狀況。 nslookup命令會採用先反向解釋得到使用的DNS服務器的名稱,因爲我這裏使用的是一個內部的DNS服務器因此沒有正確的反向記錄,致使結果的前面幾行出錯。你們能夠沒必要理會。重點看的是最後的兩行這裏看到的是www.oray.net的IP地址是61.145.112.212。注意即便www.oray.net的主機沒有在線一樣可以返回結果。 若是目標域名是一個別名記錄(CNAME),nslookup就開始顯示出和ping命令不一樣的地方了,請看查詢CNAME記錄的結果。因爲CNAME和A記錄最後都是活的IP地址,因此通常狀況下二者是等同看待的,命令的格式相同。 注意此次nslookup返回了三行信息,前兩行顯示這是一個CNAME記錄,對應的域名和IP地址。最後顯示的就是目標域名, 並註明Alias(別名)。若是域名不存在會怎樣呢? 看得懂最後以行的英文嗎,不懂不要緊記住形狀就能夠了。若是一個指定類型的域名不存在對應的記錄一樣也是這種結果。 查詢其餘類型的域名 前面兩個命令咱們沒有加任何參數,因此默認狀況下nslookup查詢的是A類型的記錄。若是咱們配置了其餘類型的記錄但願看到解釋是否正常。這時候ping就無能爲力了。好比咱們配置了MX記錄,可是郵件服務器只能發信不能收信,究竟是域名解釋問題仍是其餘的問題Ping命令的檢查只能讓你誤入歧途。nslookup 這時候能夠模擬你的其餘碰見服務器進行域名解釋的狀況。咱們須要在nslookup上加上適當的參數。指定查詢記錄類型的指令格式以下: nslookup –qt=類型 目標域名 注意qt必須小寫。 類型能夠是一下字符,不區分大小寫: A 地址記錄(Ipv4) AAAA 地址記錄(Ipv6) AFSDB Andrew文件系統數據庫服務器記錄(不懂) ATMA ATM地址記錄(不是自動提款機) CNAME 別名記錄 HINFO 硬件配置記錄,包括CPU、操做系統信息 ISDN 域名對應的ISDN號碼 MB 存放指定郵箱的服務器 MG 郵件組記錄 MINFO 郵件組和郵箱的信息記錄 MR 更名的郵箱記錄 MX 郵件服務器記錄 NS 名字服務器記錄 PTR 反向記錄(從IP地址解釋域名) RP 負責人記錄 RT 路由穿透記錄(不懂) SRV TCP服務器信息記錄(將有大用處) TXT 域名對應的文本信息 X25 域名對應的X.25地址記錄 看看oray.net的郵件服務器記錄吧。 看看,nslookup把服務器的名稱和地址都給出來了,注意preference就是前面所說的優先級,該數值越小則優先級越高。 我再看看名字服務器記錄是怎麼樣的。 看起來和MX記錄的格式差很少,通常狀況下服務器會同時返回對應的地址。不過也有不返回的狀況。 在這裏我但願你們注意一行顯示「Non-suthoritativeanswer:」,這一行在前面的例子中都沒有顯示過。它的出現表明這個結果是從服務器的緩存中獲得的。因此提醒你這不是一個受權的答案。前面咱們進行的幾回查詢過程當中192.168.1.104這臺機器就採用了咱們第一篇文章中描述的過程查詢了oray.net的域名。在這個過程當中不但緩存了www.oray.net、test.oray.net以及oray.net的MX記錄等最終結果。也包括獲取的名字服務器等中間結果。隱含的查詢了oray.net的NS記錄。後面咱們還會介紹這個過程。 指定使用的名字服務器 在默認狀況下nslookup使用的是咱們在本機TCP/IP配置中的DNS服務器進行查詢,但有時候咱們須要指定一個特定的服務器進行查詢試驗。這時候咱們不須要更改本機的TCP/IP配置,只要在命令後面加上指定的服務器IP或者域名就能夠了。這個參數在咱們對一臺指定服務器排錯是很是必要的,另外咱們能夠經過指定服務器直接查詢受權服務器的結果避免其餘服務器緩存的結果。命令格式以下: nslookup [-qt=類型] 目標域名 指定的DNS服務器IP或域名 咱們可看看如下的命令結果: 這個命令直接從頂級域名服務器查詢oray.net的NS記錄。全部的二級域名的NS記錄都存放在頂級域名服務器中,這是最權威的解釋。注意此次沒有非受權結果的提示。對於二級域名的NS記錄查詢來講這確定是受權結果。頂級域名服務器的名稱是a到j.gtld-servers.net共十臺服務器。(gtld是Global Top Level Domain的縮寫)。當咱們修改域名的NS記錄的時候能夠經過上述查詢知道修改的結果是否是已經在頂級域名服務器上生效。不過即便已經生效也可能不能正常解釋,注意我在上一篇文章中提到的緩存時間的問題。 那麼到底緩存多久呢? 檢查域名的緩存時間 檢查域名的緩存時間須要咱們使用一個新的參數:-d 格式以下: nslookup –d [其餘的參數] 目標域名 [指定的服務器地址] 請看範例 咱們忽略其餘的看看Got answer後面幾行,包括了一個ttl數值。這個數值就是域名記錄的生存時間。 這種查詢將整個DNS數據包的全部部分都揭示出來,你們能夠看到DNS實際上並非想象中那麼簡單的東西。具體的各部分解釋你們能夠去看看相關的標準文檔。須要提醒你們的是必定要找到ANSWER:的內容,其餘的東西都不是描述最終的結果。上面就不止一個地方又TTL數值 域名解釋過程的模擬 咱們如今來模擬一下一臺DNS服務器接到一個不是本身管理的域的域名解釋過程。回憶一下第一篇文章的過程: 首先咱們會詢問根服務器,而後根服務器會讓咱們去找對應的頂級服務器。若是查詢的是oray.net,就會要求咱們去找net的服務器。 看看下面的範例: 這裏咱們讓21cn.com的服務器解釋www.oicp.net的域名,很顯然這臺服務器不用有這個域,須要詢問根服務器。通常狀況下DNS服務器會幫咱們完成所有的過程。這種解釋方式咱們稱之爲遞歸解析,爲了讓你們看到這個過程我家了一個參數讓21cn.com的服務器不要這樣作。這個參數是-norecurse。這樣理論上21cn.com會讓咱們去問根服務器,不過因爲它已經緩存了頂級服務器的記錄,因此直接返回了管理net的頂級服務器記錄。實際上大部分的查詢都不須要從根服務器開始。你們看到了全部的頂級域名服務器的地址都被返回。 咱們隨便選擇一個在進行查詢。 此次頂級服務器就返回了oicp.net的服務器地址記錄的。而後咱們就向這些記錄之一進行查詢,必定可以獲得答案。多是一個地址、一個CNAME記錄或者告訴你不存在。 nslookup的命令就介紹到這裏,其實nslookup還有許多其餘參數。不過經常使用的就俄這麼幾個,另外若是你們不喜歡命令行方式的話。還有幾個圖形界面的nslookup功能的工具。不過你們仍是須要了解域名解釋都有些什麼纔可以正確使用這些工具。