事實(shí)上DNS不僅僅是用來(lái)解釋地址用的而且還可以回答更多關(guān)於網(wǎng)路和主機(jī)的其它信息其中很重要的一個(gè)功能就是可以供郵件系統(tǒng)進(jìn)行路由。這些資料通常會(huì)以不同的“記錄”名稱出現(xiàn)在DNS的資料檔案中。
下面讓我們參考一個(gè)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.
我們姑且不理會(huì)開頭那幾行的意思那是給DNS系統(tǒng)本身使用的(我將會(huì)在“學(xué)習(xí)Linux”文章里面再詳細(xì)討論)這里我們只是看看幾個(gè)記錄名稱而已
類別名稱 代表意思
TXT 只是一些說明文字可以用來(lái)說明主機(jī)/網(wǎng)路環(huán)境設(shè)定
NS 名稱伺服器也就是該zone指定的DNS伺服器名稱
MX 郵件伺服器負(fù)責(zé)經(jīng)由DNS查詢進(jìn)行郵件傳遞的郵件伺服器。這樣的好處是如果您要更換郵件伺服器的話只需修改DNS記錄就可以了而對(duì)方的郵件伺服器則無(wú)需理會(huì)您要使用的究竟是哪一臺(tái)電腦來(lái)負(fù)責(zé)郵件交換。同時(shí)您也可以指定多臺(tái)郵件伺服器來(lái)分擔(dān)郵件交換工作在MX後面的號(hào)數(shù)用來(lái)指定伺服器的使用順序數(shù)字越低越優(yōu)先。
A 用來(lái)對(duì)應(yīng)主機(jī)名稱和其IP地址這個(gè)記錄最常用而且也是最重要的記錄之一
HINFO 和TXT差不多是回答“Host Information”查詢用的
CNAME 是一個(gè)“別名”記錄可以給A記錄使用另外一個(gè)(或多個(gè))名稱讓外面查詢。CNAME可以對(duì)應(yīng)一個(gè)A記錄但不鼓勵(lì)對(duì)應(yīng)另一個(gè)CNAME記錄。
AAAA 和A記錄一樣只不過對(duì)應(yīng)的是IP v6 格式
分擔(dān)DNS工作
Primary(master) DNS伺服器是架設(shè)在某一個(gè)網(wǎng)域下被主要授權(quán)并控制所有名稱記錄的主控制伺服器管轄著所有該網(wǎng)域的記錄資料這些記錄資料只有primary(master)可以修改。
但如果在一個(gè)比較大型的網(wǎng)路中DNS伺服器就會(huì)變得很繁忙了所以您可以設(shè)定多個(gè)DNS來(lái)分擔(dān)master的工作但您或許不愿意到每一個(gè)DNS伺服器去更新資料吧而且就算您愿意這樣做也容易出現(xiàn)錯(cuò)誤或資料不同步的情形。這樣您可以設(shè)定其它的伺服器為secondary (slave) DNS來(lái)master上面的記錄資料這樣其它的電腦可以被指定到不同的DNS做查詢既可以分擔(dān)master的工作而且資料也可以自動(dòng)進(jìn)行同步工作。您可以設(shè)定DNS資料同步的時(shí)間間隔在dns檔案中的Refresh設(shè)定就是了。同時(shí)您還會(huì)看到Serial當(dāng)slave的上面的serial數(shù)字少於它資料就會(huì)被否則會(huì)被忽略。
驗(yàn)DNS工作
當(dāng)您建立好一個(gè)DNS伺服器之後除了可以直接使用命令 ping (這個(gè)會(huì)在後面章節(jié)說明)直接ping一下上面的記錄之外最好還是使用“nslookup”這個(gè)命令進(jìn)行檢測(cè)或除錯(cuò)(Windows9x系統(tǒng)并不包含此命令)。下面讓我們?cè)贚inux中驗(yàn)一下當(dāng)您輸入nslookup之後您會(huì)看到您機(jī)器目前指定的DNS伺服器的回應(yīng)
Default Server: redhat52.siyongc.domain
Address: 192.168.0.17
然後您輸入欲查詢的主機(jī)或IP地址您會(huì)看到從DNS回來(lái)的結(jié)果
> 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
這是一個(gè)標(biāo)準(zhǔn)模式下面的查詢我們可以看到不是這臺(tái)DNS伺服器管理的查詢而且已經(jīng)在 cache 里面了會(huì)附加一個(gè)“Non-authoritative answer:”的回應(yīng)信息。但如果我們先將查詢模式設(shè)為any之後再輸入同樣的主機(jī)名稱
> 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地址等信息。假如您使用“除錯(cuò)模式”的話看到的資料還將更多
> 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 等模式來(lái)查詢特定的記錄也可以用 ls 後接 domain name 來(lái)查看某個(gè) domain 的所有主機(jī)記錄。善用 nslookup 我們可以找到許多 DNS 的信息而當(dāng)有問題發(fā)生的時(shí)候這個(gè)工具就變得非常有用了。
同時(shí)在設(shè)定 DNS 的時(shí)候需要比較慎密的設(shè)計(jì)以免不實(shí)資料的濫。管理好 DNS 系統(tǒng)是每一個(gè)網(wǎng)路管理員應(yīng)盡的義務(wù)來(lái)的。


