事實上DNS不僅僅是用來解釋地址用的而且還可以回答更多關於網路和主機的其它信息其中很重要的一個功能就是可以供郵件系統進行路由。這些資料通常會以不同的“記錄”名稱出現在DNS的資料檔案中。
下面讓我們參考一個Linux的DNS檔案看看這些記錄是如何表示的
;
; Zone file for siyongc.domain
;
; Then full zone file
;
$TTL 86400
@ IN SOA redhat52.siyongc.domain. netman.siyongc.domain. (
1999092801 ; serial
8H ; refresh
2H ; retry
1W ; expire
1D ) ; minimun
;
IN TXT "A test domain, created by Netman"
IN NS redhat52
IN NS debian.home.
IN MX 10 redhat52.siyongc.domain.
IN MX 20 debian.home.
;
localhost IN A 127.0.0.1
gw IN A 192.168.0.17
IN HINFO "Redhat" "MASQ"
IN TXT "The masquerade gateway to internet"
redhat52 IN A 192.168.0.17
IN MX 10 redhat52
IN MX 20 debian.home.
IN HINFO "Dell PII 266" "Linux RedHat"
www IN CNAME redhat52
mail IN CNAME redhat52
ftp IN CNAME redhat52
news IN CNAME redhat52
smtp IN CNAME redhat52
pii266 IN A 192.168.0.15
IN MX 10 redhat52.siyongc.domain.
IN MX 20 debian.home.
slware36 IN A 192.168.0.18
IN MX 10 redhat52.siyongc.domain.
IN MX 20 debian.home.
rhroute IN A 192.168.0.4
IN MX 10 redhat52.siyongc.domain.
IN MX 20 debian.home.
我們姑且不理會開頭那幾行的意思那是給DNS系統本身使用的(我將會在“學習Linux”文章裡面再詳細討論)這裡我們只是看看幾個記錄名稱而已
類別名稱 代表意思
TXT 只是一些說明文字可以用來說明主機/網路環境設定
NS 名稱伺服器也就是該zone指定的DNS伺服器名稱
MX 郵件伺服器負責經由DNS查詢進行郵件傳遞的郵件伺服器。這樣的好處是如果您要更換郵件伺服器的話只需修改DNS記錄就可以了而對方的郵件伺服器則無需理會您要使用的究竟是哪一台電腦來負責郵件交換。同時您也可以指定多台郵件伺服器來分擔郵件交換工作在MX後面的號數用來指定伺服器的使用順序數字越低越優先。
A 用來對應主機名稱和其IP地址這個記錄最常用而且也是最重要的記錄之一
HINFO 和TXT差不多是回答“Host Information”查詢用的
CNAME 是一個“別名”記錄可以給A記錄使用另外一個(或多個)名稱讓外面查詢。CNAME可以對應一個A記錄但不鼓勵對應另一個CNAME記錄。
AAAA 和A記錄一樣只不過對應的是IP v6 格式
分擔DNS工作
Primary(master) DNS伺服器是架設在某一個網域下被主要授權並控制所有名稱記錄的主控制伺服器管轄著所有該網域的記錄資料這些記錄資料只有primary(master)可以修改。
但如果在一個比較大型的網路中DNS伺服器就會變得很繁忙了所以您可以設定多個DNS來分擔master的工作但您或許不願意到每一個DNS伺服器去更新資料吧而且就算您願意這樣做也容易出現錯誤或資料不同步的情形。這樣您可以設定其它的伺服器為secondary (slave) DNS來master上面的記錄資料這樣其它的電腦可以被指定到不同的DNS做查詢既可以分擔master的工作而且資料也可以自動進行同步工作。您可以設定DNS資料同步的時間間隔在dns檔案中的Refresh設定就是了。同時您還會看到Serial當slave的上面的serial數字少於它資料就會被否則會被忽略。
驗DNS工作
當您建立好一個DNS伺服器之後除了可以直接使用命令 ping (這個會在後面章節說明)直接ping一下上面的記錄之外最好還是使用“nslookup”這個命令進行檢測或除錯(Windows9x系統並不包含此命令)。下面讓我們在Linux中驗一下當您輸入nslookup之後您會看到您機器目前指定的DNS伺服器的回應
Default Server: redhat52.siyongc.domain
Address: 192.168.0.17
然後您輸入欲查詢的主機或IP地址您會看到從DNS回來的結果
> pii266.siyongc.domain
Server: redhat52.siyongc
Address: 192.168.0.17
Name: pii266.siyongc.domain
Address: 192.168.0.15
> www.hinet.net
Server: redhat52.siyongc.domain
Address: 192.168.0.17
Non-authoritative answer:
Name: w3c2.hinet.net
Address: 168.95.1.84
Aliases: www.hinet.net
這是一個標准模式下面的查詢我們可以看到不是這台DNS伺服器管理的查詢而且已經在 cache 裡面了會附加一個“Non-authoritative answer:”的回應信息。但如果我們先將查詢模式設為any之後再輸入同樣的主機名稱
> set q=any
> pii266.siyongc.domain
Server: redhat52.siyongc.domain
Address: 192.168.0.17
pii266.siyongc.domain preference = 20, mail exchanger = debian.home
pii266.siyongc.domain preference = 10, mail exchanger = redhat52.siyongc.domain
pii266.siyongc.domain internet address = 192.168.0.15
siyongc.domain nameserver = debian.home
siyongc.domain nameserver = redhat52.siyongc.domain
debian.home internet address = 192.168.0.2
redhat52.siyongc.domain internet address = 192.168.0.17
您就可以看到更多的資料了例如MXNS和它們的IP地址等信息。假如您使用“除錯模式”的話看到的資料還將更多
> set debug
> www.hinet.net
Server: redhat52.siyongc.domain
Address: 192.168.0.17
;; res_nmkquery(QUERY, www.hinet.net, IN, ANY)
------------
Got answer:
HEADER:
opcode = QUERY, id = 3102, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 3, additional = 3
QUESTIONS:
www.hinet.net, type = ANY, class = IN
ANSWERS:
-> www.hinet.net
canonical name = w3c2.hinet.net
ttl = 76134 (21h8m54s)
AUTHORITY RECORDS:
-> hinet.net
nameserver = HNTP1.hinet.net
ttl = 162533 (1d21h8m53s)
-> hinet.net
nameserver = HNTP3.hinet.net
ttl = 162533 (1d21h8m53s)
-> hinet.net
nameserver = DNS.hinet.net
ttl = 162533 (1d21h8m53s)
ADDITIONAL RECORDS:
-> HNTP1.hinet.net
internet address = 168.95.192.1
ttl = 162533 (1d21h8m53s)
-> HNTP3.hinet.net
internet address = 168.95.192.2
ttl = 162533 (1d21h8m53s)
-> DNS.hinet.net
internet address = 168.95.1.1
ttl = 162533 (1d21h8m53s)
------------
Non-authoritative answer:
www.hinet.net
canonical name = w3c2.hinet.net
ttl = 76134 (21h8m54s)
Authoritative answers can be found from:
hinet.net
nameserver = HNTP1.hinet.net
ttl = 162533 (1d21h8m53s)
hinet.net
nameserver = HNTP3.hinet.net
ttl = 162533 (1d21h8m53s)
hinet.net
nameserver = DNS.hinet.net
ttl = 162533 (1d21h8m53s)
HNTP1.hinet.net
internet address = 168.95.192.1
ttl = 162533 (1d21h8m53s)
HNTP3.hinet.net
internet address = 168.95.192.2
ttl = 162533 (1d21h8m53s)
DNS.hinet.net
internet address = 168.95.1.1
ttl = 162533 (1d21h8m53s)
另外您還可以用 set q=mx 或 set q=ptr 等模式來查詢特定的記錄也可以用 ls 後接 domain name 來查看某個 domain 的所有主機記錄。善用 nslookup 我們可以找到許多 DNS 的信息而當有問題發生的時候這個工具就變得非常有用了。
同時在設定 DNS 的時候需要比較慎密的設計以免不實資料的濫。管理好 DNS 系統是每一個網路管理員應盡的義務來的。