2012-10-09

DNS偵錯工具

DNS偵錯工具


在完成DNS的安裝及設定後,用戶端即可向伺服器提出名稱解析的要求。使用者可透過以下的應用程式來對DNS伺服器做測試

nslookup

輸入 nslookup 命令後,會看到 > 提示符號,之後就可輸入查詢指令。一般會輸入IP address或是domain name來做反向及正向的解析。而nslookup不僅提供上述2種解析,亦提供DNS中其他的資料記錄型態,例如MX、NS…等等,我們可在提示符號直接輸入”?”來獲得所有可以使用的參數或資料型態。以MX為例,輸入方式如下:

c:\>nslookup
Default Server:  suncc.ccu.edu.tw
Address:  140.123.1.2

> set type=MX
> mail.cs.ccu.edu.tw
Server:  suncc.ccu.edu.tw
Address:  140.123.1.2
mail.cs.ccu.edu.tw      MX preference = 10, mail exchanger = csmail.cs.ccu.edu.tw
cs.ccu.edu.tw   nameserver = dns.cs.ccu.edu.tw
csmail.cs.ccu.edu.tw    internet address = 140.123.101.2
dns.cs.ccu.edu.tw       internet address = 140.123.101.1

                     
dig

用法: dig [ @server ] [ -b address ] [ -c class ] [ -f file-name ] [ -k filename ] [ -p port# ] [ -t type ] [ -x addr ] [ -y name:key ] [ name ] [ type ] [ class ] [queryopt... ] (詳細說明請以"man dig"來查詢)

送出domain name的查詢封包至name server,後面參數可接IP address或domain name來獲得name server所提供的相關訊息,而同nslookup,dig也提供不同資料記錄型態,例如MX…等等。

c:\>dig www.twnic.net.tw

; <<>> DiG 9.2.2rc1 <<>> www.twnic.net.tw
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25859
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
                                                                               
;; QUESTION SECTION:
;www.twnic.net.tw.              IN      A
                                                                               
;; ANSWER SECTION:
www.twnic.net.tw.       57557   IN      A       210.17.9.228
                                                                               
;; AUTHORITY SECTION:
twnic.net.tw.           58295   IN      NS      dns.nic.net.tw.
twnic.net.tw.           58295   IN      NS      twnic.net.tw.
                                                                               
;; ADDITIONAL SECTION:
dns.nic.net.tw.         46825   IN      A       192.83.166.11
twnic.net.tw.           27868   IN      A       211.72.210.250
                                                                               
;; Query time: 2 msec
;; SERVER: 140.123.1.2#53(140.123.1.2)
;; WHEN: Thu Jun 12 04:23:39 2003
;; MSG SIZE  rcvd: 118

                      
host

host基本上也是dns的查詢,後面可接IP address或domain name來獲得對應的domain name或IP。

dnswalk

由name server檢查DNS zone information,後面接domain name,不過結束時需加上”.”。

dnslint

dnslint與前面指令最大的不同在於dnslint只能用於microsoft的作業系統上,不過後面同樣可接domain name或IP address並配合許多參數來的到DNS的資訊及紀錄。

DNS資源紀錄(Resource Record)介紹

 DNS server內的每一個網域名稱都有自己的檔案,這個檔案一般會稱為區域檔案 (zone file),例如之前所提到的”named.ca”或”named.local” 檔案…等等。區域檔案是由多個記錄組成的,每一個記錄稱為資源記錄(Resource Record,簡稱RR)。當在設定DNS名稱解析、反向解析及其他的管理目的時,您需要使用不同類型的RR,底下將介紹常用的RR類型及表示法。

類型

SOA

Start Of Authority,這種 record 放在 zone file 一開始的地方,每一個記錄檔只能有一個 SOA,而且一定是檔案中第一個“記錄”,它描述這個 zone 負責的 name server,version number…等資料,以及當 slave server 要備份這個 zone 時的一些參數。 緊接在 SOA 後面指定了這個區域的授權主機和管理者的信箱,這裡分別是 "school.edu.tw" 和" root.school.edu.tw",也就是school.edu.tw主機和 root 的信箱。這裡要注意的是我們以"root.school.edu.tw"代表"root@school.edu.tw"
e.g.

  @    IN      SOA          school.edu.tw. root.school.edu.tw.  (
                                    1999051401      ; Serial
                                    3600            ; Refresh
                                    300             ; Retry
                                    3600000         ; Expire
                                    3600 )          ; Minimum

                       

在兩個括號中間的選項表示SOA的設定內容,底下會有更詳細的說明。

NS

name server,用來指定操作的DNS伺服器主機名稱,需注意的是不可以IP位址表示。
e.g.
IN  NS   dns.twnic.net.tw.
                       

A

address,將DNS網域名稱對應到IPv4的32位元位址。
e.g.
server  IN  A  140.123.102.10
                       

AAAA

可將DNS網域名稱對應到IPv6的128位元位址。
e.g.
twnic.net.tw.  86400  IN  AAAA  3ffe: :bbb:93:5
                       

PTR

pointer,定義某個 IP 對應的 domain name,即將 IP 位址轉換成主機的FQDN。
e.g.
20   IN  PTR  mail.twnic.net.tw.
                       

CNAME

canonical name,可為同一部主機設定許多別名,例如 mix.twnic.net.tw的別名可為 www.twnic.net.tw和 ftp.twnic.net.tw,因此所設定的別名都會連至同一部伺服器。
e.g.
www  IN  CNAME  mix
                       

MX

mail exchanger,設定區域中擔任郵件伺服器的主機,所有要送往那部機器的 mail 都要經過 mail exchanger 轉送。而數字則是該主機郵件傳遞時的優先次序,此值越低表示有越高的郵件處理優先權。
e.g. 
server  IN   MX  10  mail.twnic.net.tw.   
                       

SOA設定內容說明

SOA record,以之前例子來看,其中 @ 這個符號是縮寫,代表 named.conf 中這個 zone file 所對應的 zone。 SOA 後面的兩個參數是指這個 zone file 是在哪部主機 (school.edu.tw)定義的,以及這個 zone file 的負責人 (注意是寫成 root.school.edu.tw),然後是用括號括起來的 5 個參數, 分別由底下說明。
Serial

代表這個 zone file 的版本,每當 zone file 內容有變動,name server 管理者就應該增加這個號碼,因為 slave 會將這個號碼與其 copy 的那份比對以便決定是否要再 copy 一次 (即進行 zone transfer)。
Refresh


slave server 每隔這段時間(秒),就會檢查 master server 上的 serial number。不過這裡會發生一個問題就是,在 master server 在 update data 完成到 slave server 來檢查時再 update 可能還有 好一段時間,因此這段期間 master/slave DNS server間 zone files 就可能出現不一致。所以在Bind較新的版本中便加入"notify"功能,使用者在 "named.conf" 設定中在需要的 zone 中加入"notify"的設定,則 master server在 update 完成某個 zone file 的 data 後便會主動發個訊息(NOTIFY),藉以通知該其它的 slave servers,因此如果 slave servers 也有支援這個"notify"功能時,接下來 slave servers 馬上就可以做 zone transfer 來update data。
e.g. 
zone "twnic.com.tw" {
    type master;
    file "twnic.hosts";
    notify yes;
    also-notify { 192.168.10.1; }; //指定slave server的IP位址
};
         
              

Retry
 
當 slave server 無法和 master 進行 serial check時,要每隔幾秒 retry 一次。

Expire

當時間超過 Expire 所定的秒數而 slave server 都無法和 master 取得連絡,那麼 slave 會刪除自己的這份 copy。

Minimum
代表這個 zone file 中所有 record 的內定的 TTL 值,也就是其它的 DNS server cache 這筆 record 時,最長不應該超過這個時間。