DNS域名服務(wù)器的配置方法
前面所介紹的服務(wù)器服務(wù)大多是用在內(nèi)部網(wǎng)絡(luò)環(huán)境中的﹐不過﹐以現(xiàn)代的情況和未來的趨勢來看﹐每個網(wǎng)絡(luò)或多或少都需要 Internet 聯(lián)機以及向 Internet 提供服務(wù)。從這一章開始﹐我們將為大家陸續(xù)

前面所介紹的服務(wù)器服務(wù)大多是用在內(nèi)部網(wǎng)絡(luò)環(huán)境中的﹐不過﹐以現(xiàn)代的情況和未來的趨勢來看﹐每個網(wǎng)絡(luò)或多或少都需要 Internet 聯(lián)機以及向 Internet 提供服務(wù)。從這一章開始﹐我們將為大家陸續(xù)介紹一些在 Internet 環(huán)境中常用到的服務(wù)器之架設(shè)技巧。就算您目前還沒真的需要架設(shè) Internet 相關(guān)的服務(wù)器﹐但許多企業(yè)的 Intranet 環(huán)境中﹐也需要相類似的服務(wù)器來為企業(yè)內(nèi)部網(wǎng)絡(luò)提供服務(wù)。
前提條件
在眾多 Internet 服務(wù)器當(dāng)中﹐有一種服務(wù)是所有服務(wù)的基礎(chǔ)﹐就是 DNS 服務(wù)。DNS 可以說是一個不容易弄清楚的概念﹐尤其是其運作原理。如果您看過“學(xué)習(xí)網(wǎng)絡(luò)”中的“ DNS 協(xié)定”(我強烈建議您看看這篇文章﹗) ﹐相信應(yīng)該有一定概念了﹐否則﹐您在如下的閱讀中可能難以理解﹐也浪費您的時間。
無論如何﹐在您進一步閱讀下面文章之前﹐請您先確定能正確回答如下的問題﹕
? 什么是 DNS 的授權(quán)模式﹖是怎樣進行的﹖
? 請解釋 zone 和 domain 的差別。
? 什么是 DNS 正解和反解﹖
? 什么是 DNS 的查詢模式﹖查詢過程是怎樣進行的﹖
? 請解釋 DNS cache 的作用和它對查詢流程的影響。
如果您未能從上面的聯(lián)結(jié)網(wǎng)頁找到答案﹐那我再推薦您多看一篇文章﹕
忠告﹕請不必急著知道怎樣設(shè)定 DNS ﹐花點時間將 DNS 的原理弄明白非常重要﹐尤其是授權(quán)模式和查詢模式的正確理解。在日后的 DNS 架設(shè)和管理中﹐是否能正確理解這些 DNS 原理﹐往往是成敗的關(guān)鍵所在﹗
如果您在 NT 或 Win2K 下面設(shè)定過 DNS 服務(wù)器﹐相信您會覺得在 Linux 下面難多了。除了概念上要比較清楚外﹐另外對檔案的關(guān)聯(lián)也要有清晰的追蹤能力﹐這對于進行 debug 尤為重要。因為在 Windows 系統(tǒng)上面﹐您的所有設(shè)定都透過圖形界面進行﹐方便是方便﹐但也因為這個圖形界面﹐限制了您的設(shè)定靈活性﹐同時也阻隔了您對 DNS 系統(tǒng)的深入了解。當(dāng)您完成了這章的學(xué)習(xí)﹐而且成功在 Linux 架設(shè)出復(fù)雜的 DNS 環(huán)境之后﹐歡迎您再回到 Win2K 上嘗試做同樣的事情?;蛟S﹐您就會認(rèn)同我這里的觀點了... 好了﹐閑話休提﹑言歸正傳﹐聽百遍不如做一遍﹐那就讓我們開始動手吧﹗ ^_^ 探索 NAMED
在 Linux 上面﹐提供 DNS 服務(wù)的套件是叫 bind ﹐ 但執(zhí)行服務(wù)程序名稱則是 named 。請您確定系統(tǒng)上裝有 bind ﹑bind-utils ﹑以及 caching-nameserver 這幾個套件﹐同時用 ntsysv 確定 named 被選擇為開機服務(wù)。
首先﹐讓我們設(shè)定一個最重要的 dns 配置文件﹐它就是 /etc/named.conf 。我將我自己



先讓我們了解這個檔案上面用來做批注的符號是“ // ”﹐而不是一般 shell script 的“#”﹔另外﹐“ /* ”與“ */ ”之間則批注一整段文字。同時﹐每一個完整的設(shè)定都以“ ﹔”結(jié)尾﹐請不要少了它﹗(初學(xué)者經(jīng)常會犯這個錯誤

)
上面的部份是在這個檔案開頭的 options 設(shè)定﹐首先用 directory 指定了 named 的資源記錄( RR - Resource Record ) 檔案目錄所在位置為﹕“/var/named”﹔也就是說﹐它會到這個目錄下面尋找 DNS 記錄檔案。所以﹐我們在這個檔案后面部份所指定的檔案﹐就無需使用絕對路徑了﹐但它們一定要放在這個目錄下面。
接下來﹐有一段文字﹐如果您仔細閱讀一下﹐它大致是說﹕如果您要設(shè)定的 DNS 服務(wù)器和 client 之間是隔著火墻的話﹐要將“// query-source address * port 53;”前面的批注符號“ // ”拿掉(當(dāng)然﹐您也必須要設(shè)定好您的火墻啦) 。不過﹐這只對早期的版本有影響﹐而在 bind 8.1 之后則無需擔(dān)心這個設(shè)定。
接下來再讓我們看下一段句子﹕
透過這幾行﹐我們?yōu)?named 定義了 DNS 系統(tǒng)中的根區(qū)域“ . ”(root zone) 的設(shè)定﹐同時它是一個 internet ( IN ) 的區(qū)域類別

( class ) 。這里還指定了root zone 的服務(wù)器種類( type ) 為“hint ”(也只有這個 zone 會使用這樣的種類) 。最后﹐用 file 指定這個區(qū)域記錄文件為﹕“named.ca”﹐也就是“/var/named/named.ca”檔案。雖然 named.ca 這個檔案中的‘ca’是 cache 的意思﹔但如果您了解 DNS 的運作﹐就應(yīng)該知道這個暫存盤的作用﹐同時﹐為什么我們會把 root zone 放在這里。(嗯﹖想想看﹖尤其是查詢非本機區(qū)域的時候﹖)
在 root zone 后面﹐您應(yīng)該還會看到如下這兩段﹕
,
這里是定義出關(guān)于本機名稱的 DNS 解釋﹕第一個 zone 是 localhost 的正解 zone ﹐其服務(wù)器種類是 master ﹐記錄文件名稱是 localhost.zone (在 /var/named 目錄下面) ﹐但這個 zone 不允許客戶主機(或服務(wù)器) 自行更新 DNS 的記錄(當(dāng)然﹐client 主機必須能支持 DNS submit 功能才行) 。
而第二個 zone 則是本機區(qū)域的反解 zone ﹐不過﹐這部份的解釋我想留到后面的真實例子中再作說明﹐請您留意就是了。
上面的句子﹐當(dāng)您安裝好 caching-nameserver 套件之后就被建立起來的﹐相信您不用勞什么心力。在檔案最后﹐您或許還看到下面這段設(shè)定﹕

們暫時不必理會﹐除非您有興趣進行這個研究。
現(xiàn)在﹐我們暫時不要修改 named.conf 配置文件﹐請退出它﹐然后轉(zhuǎn)到 /var/named 目錄﹐看看里面有些什么東東﹖最起碼﹐您會看到如下三個檔案﹕
named.ca
localhost.zone
named.local
不知道您是否有靈感了﹖沒錯﹕剛纔在 named.conf 里面﹐每一個 zone 所指定的 file 都出現(xiàn)在這里﹗先讓我們看看 root zone 的檔案內(nèi)容吧﹕
; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache . "
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC registration services
; under anonymous FTP as
; file /domain/named.root
; on server FTP .RS.INTERNIC.NET
; -OR- under Gopher at RS.INTERNIC.NET
; under menu InterNIC Registration Services (NSI)
; submenu InterNIC Registration Archives
; file named.root
;
; last update: Aug 22, 1997
; related version of root zone: 1997082200
;
;
,; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ;
; formerly NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 ;
; formerly C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ;
; formerly TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ;
; formerly NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ;
; formerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 ;
; formerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ;
; formerly AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 ;
; formerly NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
,;
; temporarily housed at NSI (InterNIC)
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
;
; temporarily housed at ISI (IANA)
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
;
; housed in Japan, operated by WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
; End of File
在 /var/named 中的 RR 記錄文件里面的批注符號﹐和 /etc/named.conf 的批注符號不一樣哦﹕在 named.conf 中是用雙斜線“ // ”﹔而在這里則使用 “ ﹔”符號。無論如何﹐您都不能用 “ # ”來做批注符號就是了。(好混亂哦~~~ 這就是計算機﹗^_^ )
在上面這個 named.ca 檔案里面﹐您如果將所有的批注行拿掉﹐您會發(fā)現(xiàn)一共有 13 行是以‘ . ’開頭的﹐那就是所謂的 root zone 了﹗然后﹐第二欄都是‘ 3600000 ’﹐這是 TTL (Time To Live) 設(shè)定﹐也就是在 cache 中保留的時間﹐以秒為單位(所以這里是 100 小時) 。其后的‘ NS ’是“Name Server”的意思﹐是 DNS 記錄名稱之一﹐也就是負責(zé)這個記錄的 name server 是哪一臺主機(這里一共由 13 臺主機共同負責(zé) root zone 的 NS 服務(wù)) 。
雖然我們這里用 NS 指定了 name server 的主機名﹐但對計算機系統(tǒng)來說﹐這些名稱必須能解釋為 IP 地址才有用(呵~~ 這個正是 DNS 系統(tǒng)的功能) ﹐所以﹐這里分別用 13 個‘ A ’記錄﹐也就是 Address 的意思﹐解釋 [A-M].ROOT-SERVER.NET. 這些主機各自的 IP 地址所在。
如果您了解 DNS 的查詢模式﹐您會知道 DNS 服務(wù)器在查詢非自己管轄的 zone 的時候﹐首先會向 root 查詢下一級的 zone 在哪里﹐然后逐級查詢下去。但問題是﹕當(dāng) named 剛啟動的時候﹐在 cache 里面一片空白﹐它怎么知道 root zone 的 servers 在哪里呢﹖這不是一個矛盾嗎﹖所以﹐就必須靠這個檔案告訴 named 關(guān)于 root zone 的 servers 有哪些﹖以及在哪里﹖ --- 明白了嗎﹖
因為這個文件是以靜態(tài)的方式維護的﹐很難保證這個檔的內(nèi)容永遠都正確﹐如果 root zone 的記錄發(fā)生改變了怎么辦(雖然這機會不大) ﹖或許﹐您已經(jīng)在檔案的開頭批注那里得知﹐您可以在任何時候透過 ftp 或 gopher 取得這個檔案的最新版本。如果您還沒讀過那些批注﹐那就請帶著字典讀一下吧。如果您真的有需要更新這個 named.ca 檔﹐那可以按如下步驟進行﹕
,
除了剛才的 named.ca 之外﹐第二個 zone 的記錄文件是 localhost.zone ﹐從

們一起探討探討吧。
首先﹐第一行是一個 TTL 設(shè)定﹐目前是定義出這個記錄文件里面的各項記錄的默認(rèn) TTL 值為 86400 秒(剛好是一天) 。您的記錄文件或許沒有這行﹐事實上沒什么關(guān)系﹐您可以自己補上﹐否則﹐在啟動 named 的時候會碰到一些警告﹐無傷大雅的﹔但如果您的確在意那些警告﹐那就加上這行。您要知道﹐在記錄文件中宣告的所有資源記錄(RR - Resource Record)﹐都一定有一個 TTL 設(shè)定﹐如果沒有﹐則使用這里預(yù)設(shè)的值。
第二行是一個 ORIGIN 設(shè)定﹐說明下面的記錄源出何處(這里是源出 localhost . 的記錄) 。請您加倍留意最后的一個小數(shù)點“ . ”﹐少了它或多了它﹐記錄名稱完全不一樣﹗在 DNS 記錄中﹐我們稱這樣以小數(shù)點結(jié)尾的名稱為“ 全局名稱 ”即 FQDN ( Fully Qualified Domain Name ) 。如果缺少了這個點會怎樣呢﹖就會將所屬的 ORIGIN ( @ ) 附加在記錄名稱后面﹔而這 ORIGIN 就是上一個 $ORIGIN 宣告之后的名稱﹐如果在前面找不到 $ORIGIN 宣告﹐那就以 /etc/named.conf 中定義的 zone 名稱為基準(zhǔn)。以目前的例子來說﹐如果沒有這個小數(shù)點的話﹐“l(fā)ocalhost”會變成“l(fā)ocalhost.localhost”﹔但如果有小數(shù)點的話 “l(fā)ocalhost.”就只能是“l(fā)ocalhost.”。所以﹐這個小點“.”非常重要﹐在以后設(shè)定中一定要非常留神﹗﹗(這也初學(xué)者最常犯的錯誤之 一)
然后﹐第三行﹐是一個 SOA 記錄的設(shè)定﹐在這里我們看到一個特殊字符“ @ ”﹐它就是 ORIGIN 的意思﹐也就是剛纔所定義的 $ORIGIN localhost. 內(nèi)容﹐您可以寫成 localhost. 也可以用 @ 來代替。假如這個檔前面沒有定義 $ORIGIN 的話﹐那這個 @ 的值就以 named.conf 里的 zone 為準(zhǔn)。既然這樣﹐當(dāng)然是使用“@”啦﹐尤其對于像我這樣的懶惰鬼來說﹐巴不得少打一串字﹐同時還能避免因打字不準(zhǔn)所造成的失誤﹐何樂不為﹖ 在 @ 之后﹐是 TTL 的設(shè)定﹐這里是 1D ﹐也就是一天的意思﹐如果您喜歡﹐可以用
,86400 (秒) 來設(shè)定﹐如果這里的 TTL 沒有設(shè)定﹐則參考前面的 $TTL 值﹐如果前面沒有定義 $TTL﹐那就參考其后介紹的 minium ttl 設(shè)定。
Tips ﹕事實上﹐您可以為每一個 RR 記錄設(shè)定其自己的 TTL ﹐只要將數(shù)字寫在第二個字段﹐也就是‘IN’前面就可以了。
在 TTL 之后是一個 IN ﹐定義出目前的記錄類型是屬于 internet class 的 (奇怪﹐目前的 DNS 還有其它 class 嗎﹖) 。
在 IN 之后就是這行 RR 的記錄類別名稱﹐這里是 SOA ﹐也就是“Start Of Authority”的意思﹐表示目前區(qū)域的授權(quán)記錄開始。每一個記錄文件只能有一個 SOA ﹐不得重復(fù)﹐而且必須是所負責(zé)的 zone 中第一個“記錄”。
緊接 SOA 后面﹐指定了這個區(qū)域的授權(quán)主機和管理者的信箱﹐這里分別是“ @ ”和“ root ”﹐也就是 localhost. 主機和 root 信箱。這里要注意的是﹕SOA 的主機名必須能夠在 DNS 系統(tǒng)中找到一個 A 記錄 (以后會提到) ﹔另外﹐我們平時使用的信箱通常是“user@host”這樣的格式﹐但因為“@”在 DNS 記錄中是個保留字符(剛才已經(jīng)提過) ﹐所以在 SOA 中就用“.”來代替了“ @ ”。目前這個信箱是 root (并沒有主機地址) ﹐也就是本機﹐您可以寫成 “root.localhost.”但不能寫成“root@localhost.”。
接下來的 SOA 設(shè)定﹐是被括在“( )”之間的 5 組數(shù)字﹐主要作為和 slave 服務(wù)器同步 DNS 數(shù)據(jù)所使用的數(shù)據(jù)﹕
? Serial ﹕其格式通常會是“年月日 修改次序”(但也不一定如此﹐您自己能夠記得
就行) 。當(dāng) slave 要進行數(shù)據(jù)同步的時候﹐會比較這個號碼。如果發(fā)現(xiàn)在這里的號碼比它那邊的數(shù)值“大”﹐就進行更新﹐否則忽略。不過設(shè) serial 有一個地方您要留意﹕不能超過 10 位數(shù)字﹗
Tips ﹕關(guān)于

Refresh ﹕這里是是告訴 slave 要隔多久要進行數(shù)據(jù)同步(是否同步要看 Serial 的比較結(jié)果) 。
? Retry ﹕如果 slave 在進行更新失敗后﹐要隔多久再進行重試。
? Expire ﹕這是記錄逾期時間﹕當(dāng) slave 一直未能成功與 master 取得聯(lián)絡(luò)﹐那到
這里就放棄 retry ﹐同時這里的數(shù)據(jù)也將標(biāo)識為過期( expired )。
? Minimum ﹕這是最小預(yù)設(shè) TTL 值﹐如果您在前面沒有用“$TTL”來定義﹐就會以
此值為準(zhǔn)。
以上的數(shù)字都是以秒為單位﹐但您也可以用 H(小時) ﹑D(天) ﹑W(星期) 來做單位﹐如﹕3H 和 259200 是一樣的。但要值得一提的是﹕我在 RH6.2 版本中曾測試過使用 netconf 這工具來設(shè)定 DNS ﹐發(fā)現(xiàn)只能使用“秒”來設(shè)定。否則 netconf 會自動的把英文字母刪除掉﹐那就不是我所預(yù)期的設(shè)定值了。無論您用什么單位來設(shè)定﹐都要遵守下面的規(guī)則﹕
expire >= refresh retry ?
,expire >= 10 * retry
Tips ﹕請注意﹕SOA 記錄中這對 “ ( ) ”符號之第一個 “ (”括號一定要和 SOA 寫在同一行﹐而不能用 Enter 斷行到下一行去(有時候您在書本的范例中看到這個符號排在下一行去了﹐那是因為版面的關(guān)系而已) ﹐而且其左邊最好有一個空格鍵或 tab 建。而最后一個 “ ) ”括號也不能寫在批注符號 “ ﹔”的右邊。
設(shè)定 DNS 的 RR 記錄文件﹐其格式要求非常嚴(yán)格﹐我們絲毫不能掉以輕心。比方說﹕如果句子不是以空格鍵﹑Tab 鍵﹑ 或批注符號 ( ; )開頭﹐也不在 SOA 的 “ ( ) ”之內(nèi)﹐ 則表示要定義一個“新記錄項 (Entry) ”﹔如果句子是以空格鍵或 tab 鍵開始的話﹐其設(shè)定被視為上一個“記錄項”的內(nèi)容。所以﹐如果您要為“同一個記錄項”定義多個記錄設(shè)定﹐而不想重復(fù)打字﹐您倒可以偷懶﹕在接著它的后面幾 行用空白或 Tab 來縮排就可以了。所以﹐最后這兩行還是關(guān)于 localhost. 的設(shè)定﹐因為上一個“數(shù)據(jù)項”為 “ @ ”﹐也就是 localhost. 。當(dāng)然﹐您如不喜歡﹐這兩行句子也可以這樣寫﹕
;; 修改前﹕
1D IN NS @
1D IN A 127.0.0.1
;; 修改后﹕ @ 1D IN NS @
@ 1D IN A 127.0.0.1
;; 或﹕
localhost. 1D IN NS localhost.
localhost. 1D IN A 127.0.0.1
這兩行的意思是說﹕負責(zé) localhost. 這個記錄的 name server ( NS ) 是 localhost. 這臺機器﹔而 localhost. 的 IP Address ( A ) 是 127.0.0.1 。DNS 里面的 A 記錄應(yīng)該是最常見的記錄類型之一﹐如果在 IPv6 版本中﹐地址記錄名稱則改為 AAAA 。
Tips ﹕關(guān)于更多的記錄名稱﹐請參閱“”中的“”。
最后﹐讓我們檢查剩下的 named.local 檔案吧。如果您還沒忘記 /etc/named.conf 的內(nèi)容的話﹐應(yīng)知道這個檔案是 zone "0.0.127.in-addr.arpa" 的‘反解’記錄文件﹐它的內(nèi)容也很簡單﹕

前面的部份應(yīng)該不用多解釋了(如果您還不清楚﹐那就必須重讀前面的文章) 。最后一行我們看到一個“ PTR ”記錄﹐它是“Pointer”的意思。 PTR 通常用于反記錄當(dāng)中﹐將 IP 指向主機名(剛好和 A 記錄相反) 。您或許還不是很清楚這個句子為什么是這樣設(shè)定的吧﹖
,或許您會這樣問﹕您不是說 PTR 是從 IP 反查詢主機名的嗎﹖為什么這里是 1 而不是 127.0.0.1 ?
哦﹐如果您有這樣的問題﹐那證明您對 DNS 的查詢模式還不是了解得很透徹﹐不過也不用緊張﹐在后面的實作例子中﹐您將獲得更進一步的感性認(rèn)識。這里﹐我暫時簡單解釋上面這行就是了﹕
我們知道 127.0.0.1 所對應(yīng)的主機名就是 localhost ﹐因為這里是反向查詢﹐所以 IP 順序是掉過來寫的﹐于是這個反查詢 IP 就是﹕“ 1.0.0.127.in -addr.arpa. ”﹐由于我們這里的 ORIGIN ( @ ) 是“ 0.0.127.in -addr.arpa." ”﹐因為在記錄文件中﹐如果名稱不帶小數(shù)點﹐則被補上 $ORIGIN 或 zone 的名稱﹐所以這個 “ 1 ”就成了 1.0.0.127.in-addr.arpa. ”。同樣道理﹐后面的“ localhost. ”如果漏了最后的小點的話﹐則會成為“ localhost.0.0.127.in -addr.arpa. ”﹐這顯然是不對的。假如您喜歡﹐可以將這行句子

嗯~~ DNS 的設(shè)定看起來真的蠻傷腦筋的﹐或許您到這里已經(jīng)被搞得亂七八糟了。假如真的如此﹐我建議您先休息一下﹐然后回來重讀上面的內(nèi)容﹐直到您能理解之后﹐才繼續(xù) 下面的。否則﹐越往后﹐您的問題越像滾雪球那樣越來越大﹐這更浪費時間啦~~~ Okay? Take it easy ... ^_^
前面所看到的設(shè)定﹐事實上已經(jīng)足夠讓您的 DNS 主機跑起來了﹗因為它能夠透過 root 查詢其他 DNS 的緣故﹐您無須在再加設(shè)任何設(shè)定﹐您就可以利用這臺主機為大家提供 Internet 的 DNS 查詢服務(wù)。只是﹐這樣的 DNS 主機﹐我們稱之為 cache only name server 而已。如果您了解 DNS 的查詢流程﹐您應(yīng)該知道 DNS 的 cache 作用和它的效益。所以﹐就算您不打算設(shè)定自己的 domain name 服務(wù) ﹐我也建議您至少可以將 cache only NS 跑起來。
設(shè)定 NAMED
當(dāng)您對 /etc/named.conf 檔案和 /var/named 目錄的設(shè)定有初步了解之后﹐下面﹐讓我們用一個實際例子來看看如何設(shè)定自己的 domain name 服務(wù)吧。我個人的習(xí)慣是先將網(wǎng)域和主機的數(shù)據(jù)整理出來﹐并列成一個表格﹕


當(dāng)所有的主機名和 IP 整理出來之后﹐再看看我們這里需要設(shè)定哪些 domain ﹖ 從上面的數(shù)據(jù)中﹐我們不難發(fā)現(xiàn)有兩個正解 zone 和兩個反解 zone 需要設(shè)定﹐分別是﹕
,
因為這些 IP 和 domain 都在內(nèi)部網(wǎng)絡(luò)使用﹐所以我們省卻了注冊這關(guān)﹐同時也不必擔(dān)心授權(quán)的問題。但這些信息也只能在內(nèi)部網(wǎng)絡(luò)使用﹐無論如何是不能設(shè)定在對外的 DNS 上面的 (為什么﹖除了安全的考慮之外﹐private IP 的使用本來就有這樣的規(guī)定﹐就算您真的對外散布這些 DNS 信息﹐在 IP 的路由上還是有問題﹐所以﹐內(nèi)部的信息﹐只能內(nèi)部使用) 。
一般來說﹐我會先設(shè)定“反查詢區(qū)域(revers zone)”﹐當(dāng)然﹐這是個人習(xí)慣而已。所以﹐我首先在 /etc/named.conf 上面補上兩個反解 zone 的設(shè)定﹕
zone "100.168.192.in-addr.arpa" IN { // 定義反解區(qū)域名稱
type master; // 定義服務(wù)器類型
file "192.168.100.rev"; // 指定記錄文件名稱
}; // 結(jié)束區(qū)域設(shè)定
zone "1.0.10.in-addr.arpa" IN {
type master;
file "10.0.1.rev";
};
注意哦﹕如果您要設(shè)定外部 DNS 的反解﹐那就先獲得 ISP 的授權(quán)才能自己設(shè)定﹔否則反解部份就不用自己擔(dān)心了﹐但一定要請 ISP 幫忙。
Tips ﹕假如您是 hinet 的固定制 ADSL 用戶﹐可以到 hinet 的網(wǎng)站填寫表格﹐請他們幫忙設(shè)定反解﹕
其它 ISP 的用戶﹐請自行接洽 ISP 的客服部門。無論如何﹐如果沒有取得授權(quán)﹐那就不要自己設(shè)﹗
這里﹐我們再一次碰到反解區(qū)域的識別標(biāo)志﹕“ .in-addr.arpa ”﹐同時﹐我們解釋一下上次關(guān)于本機反解還沒說明的地方﹕如果您了解 DNS 的授權(quán)和查詢過程(這章一開始的時候﹐我就已要求您一定要學(xué)習(xí)的) ﹐您會知道反解查詢是先從 root 開始(正解也是一樣) ﹐然后到 arpa ﹑到 in-addr ﹑到第一組 IP ﹑到第二組 IP ﹑...... 這樣查詢下來的。所以﹐在設(shè)定反區(qū)域的時候﹐您一定要將您的 net ID 部份反過來寫﹐例如﹕我的網(wǎng)絡(luò)為 192.168.100.0/24﹐它的反查詢區(qū)域名則是﹕“100.168.192.in-addr.arpa”﹔假如我將 netmask 改為 16 bit ﹐即變成 192.168.0.0/16﹐它的反解區(qū)域名就會變成﹕“168.192.in-addr.arpa”。如果您還搞不懂如何區(qū)分 Net ID 和 Host ID ﹐請立即去看一看“”中的“”。
同時﹐我將這些 zone 都設(shè)定為“主 DNS 服務(wù)器”(即﹕master ﹐也有人稱之為 primary dns )。
在每個 zone 的最后部份﹐我分別指定了它們各自的記錄文件名稱。它們都存放在 /var/named 這個目錄下面(也就是前面 options 指定的 directory 啦) 。檔案的名稱隨您喜歡﹐不致做成混亂則可。
完成上面的設(shè)定之后﹐我們就可以到 /var/named 目錄去建立相應(yīng)的記錄檔案了。說實在﹐在 named.conf 里面如何定義文件名沒一定的標(biāo)準(zhǔn)﹐只要您能正確指定哪個記錄文件給哪個 zone 使用﹐而且文件名能夠一致就行。首先﹐根據(jù)第一個 zone 的 file 設(shè)定