?? dns-howto-4.html
字號:
<P>注意,在 <CODE>named.boot</CODE> 檔案里領域名稱的結尾還是沒有 '<CODE>.</CODE>' 符號.
<P>在這個 <CODE>linux.bogus</CODE> 區域檔案里我們將會放入一些完全虛擬的資料:
<P>
<HR>
<PRE>
;
; Zone file for linux.bogus
;
; Mandatory minimum for a working domain
;
@ IN SOA linux.bogus. hostmaster.linux.bogus. (
199511301 ; serial, todays date + todays serial #
28800 ; refresh, seconds
7200 ; retry, seconds
3600000 ; expire, seconds
86400 ) ; minimum, seconds
NS ns.linux.bogus.
NS ns.friend.bogus.
MX 10 mail.linux.bogus ; Primary Mail Exchanger
MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
localhost A 127.0.0.1
ns A 127.0.0.2
mail A 127.0.0.4
</PRE>
<HR>
<P>關於 SOA 記錄有兩件事需要注意.首先 <CODE>ns.linux.bogus</CODE> <EM>必須</EM> 是一臺具有 A 記錄的真正機器.
在 SOA 記錄中用 CNAME 記錄為名稱的機器是不合法的.它的名字不一定要是 <CODE>ns</CODE>,它可以是任何合法的主機名稱.
再來,<CODE>hostmaster.linux.bogus</CODE> 應該被視為 <CODE>hostmaster@linux.bogus</CODE>,這應該是一個郵件位址或別名,
是維護這個 DNS 的人經常讀信的位址.任何關於此領域的信件會被送到這個位址.
它的名字不一定要是 <CODE>hostmaster</CODE>,它可以是任何合法的電子郵件位址,然而這個位址 `<CODE>hostmaster</CODE>' <EM>應該</EM>能工作正常.
<P>在這個檔案里有一種新的資源記錄型態,即 MX 型態,或是郵件交換者資源記錄(Mail eXchanger RR).
這種資源記錄型態告訴郵遞系統地址 <CODE>someone@linux.bogus</CODE> 的郵件要寄送到哪里,
換句話說也就是應該寄送到 <CODE>mail.linux.bogus</CODE> 或是 <CODE>mail.friend.bogus</CODE>.
在每個機器名稱前面的數字是 MX 資源記錄的優先權,數字比較低 (10) 的資源記錄是郵件主要應該寄往的機器.
如果失敗可以把它寄往數字比較高的機器,一臺次要的郵件處理者,也就是在這里具有優先權 20 的 <CODE>mail.friend.bogus</CODE>.
<P>用 <CODE>ndc restart</CODE> 重新起始 <CODE>named</CODE>.以 <CODE>nslookup</CODE> 檢驗結果:
<BLOCKQUOTE><CODE>
<PRE>
$ nslookup
> set q=any
> linux.bogus
Server: localhost
Address: 127.0.0.1
linux.bogus
origin = linux.bogus
mail addr = hostmaster.linux.bogus
serial = 199511301
refresh = 28800 (8 hours)
retry = 7200 (2 hours)
expire = 604800 (7 days)
minimum ttl = 86400 (1 day)
linux.bogus nameserver = ns.linux.bogus
linux.bogus nameserver = ns.friend.bogus
linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
linux.bogus preference = 20, mail exchanger = mail.friend.bogus
linux.bogus nameserver = ns.linux.bogus
linux.bogus nameserver = ns.friend.bogus
ns.linux.bogus internet address = 127.0.0.2
mail.linux.bogus internet address = 127.0.0.4
</PRE>
</CODE></BLOCKQUOTE>
<P>小心地檢驗你將會發現一個錯誤.這一行
<BLOCKQUOTE><CODE>
<PRE>
linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
</PRE>
</CODE></BLOCKQUOTE>
全都錯了.它應該是
<BLOCKQUOTE><CODE>
<PRE>
linux.bogus preference = 10, mail exchanger = mail.linux.bogus
</PRE>
</CODE></BLOCKQUOTE>
<P>我故意犯了個錯誤所以你可以藉此學習:-) 仔細看看該區域檔案我們會發現這一行
<BLOCKQUOTE><CODE>
<PRE>
@ MX 10 mail.linux.bogus ; Primary Mail Exchanger
</PRE>
</CODE></BLOCKQUOTE>
遺漏了一個句點.或是說多了個 `<CODE>linux.bogus</CODE>'.
在區域檔案里如果一個機器名稱不是以句點結尾那麼會在其結尾加入基點.所以不論是
<P>
<HR>
<PRE>
@ MX 10 mail.linux.bogus. ; Primary Mail Exchanger
</PRE>
<HR>
<P>或是
<P>
<HR>
<PRE>
@ MX 10 mail ; Primary Mail Exchanger
</PRE>
<HR>
<P>都是正確的.我比較喜歡後面這種形式,它需要的打字比較少.
在一個區域檔案里領域名稱應該要不就是寫出來并以 `<CODE>.</CODE>' 結尾或者就是一點都不要包含進去,
而在這種情況下其領域預設為基點.其它人也許喜歡采用另一種方式.
<P>我必須強調的是在 <CODE>named.boot</CODE> 檔案里領域名稱後面<EM>不應該</EM>有 `<CODE>.</CODE>' 的存在.
你不知道有多少次因為多了或少了一個 `<CODE>.</CODE>' 而搞砸了并且對許多人造成困擾.
<P>所以在加入我強調的重點後得到一份新的區域檔案,其中還包含一些額外的資訊:
<P>
<HR>
<PRE>
;
; Zone file for linux.bogus
;
; Mandatory minimum for a working domain
;
@ IN SOA linux.bogus. hostmaster.linux.bogus. (
199511301 ; serial, todays date + todays serial #
28800 ; refresh, seconds
7200 ; retry, seconds
604800 ; expire, seconds
86400 ) ; minimum, seconds
NS ns ; Inet Address of name server
NS ns.friend.bogus.
MX 10 mail ; Primary Mail Exchanger
MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
localhost A 127.0.0.1
ns A 127.0.0.2
mail A 127.0.0.4
;
; Extras
;
@ TXT "Linux.Bogus, your DNS consultants"
ns MX 10 mail
MX 20 mail.friend.bogus.
HINFO "Pentium" "Linux 1.2"
TXT "RMS"
richard CNAME ns
www CNAME ns
donald A 127.0.0.3
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "i486" "Linux 1.2"
TXT "DEK"
mail MX 10 mail
MX 20 mail.friend.bogus.
HINFO "386sx" "Linux 1.0.9"
ftp A 127.0.0.5
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "P6" "Linux 1.3.59"
</PRE>
<HR>
<P>你也許會想要移動前面三個 A 記錄以便讓它們靠近其它的相關記錄,而不是像這樣放在最前端.
<P>這里有幾個新的資源記錄: 主機資訊(HINFO: Host INFOrmation) 包括兩個部份,
使用引號涵括每個部份是個好習慣.第一個部份是機器上的硬體或是中央處理單元,
而第二個部份是機器上的軟體或是作業系統.<CODE>ns</CODE> 有一顆 Pentium CPU 并且執行 Linux 1.2 系統.
TXT 記錄是個隨意的文字記錄,你可以用它來記錄任何事情.
正式名稱(CNAME: Canonical NAME)可以用來給每臺機器數個名稱.
所以 <CODE>richard</CODE> 以及 <CODE>www</CODE> 都是 <CODE>ns</CODE> 的一個別名.
很重要的一點是 A, MX, CNAME, 以及 SOA 記錄<EM>永遠不該</EM>參照 CNAME 記錄設定的別名,
它們只應該參照 A 記錄所設定的名稱,所以像這樣的記錄是錯的
<P>
<HR>
<PRE>
foobar CNAME richard ; NO!
</PRE>
<HR>
<P>不過這樣是對的
<P>
<HR>
<PRE>
foobar CNAME ns ; Yes!
</PRE>
<HR>
<P>還有一點也很重要的是注意正式名稱所設定的對電子郵遞位址而言不是合法主機名稱:
<CODE>webmaster@www.linux.bogus</CODE> 以上面的設定而言是一個不合法的電子郵遞位址.
即使它在你的系統上可以運作,可以預料的是很少有電子郵件管理者會去實行這項規則.
避免這個問題的方法是使用 A 記錄(或者也可能是一些其它的,像是 MX 記錄)來取代之:
<P>
<HR>
<PRE>
www A 127.0.0.2
</PRE>
<HR>
<P>Paul Vixie, 主要的 <CODE>named</CODE> 專家,建議<EM>不要</EM>使用 CNAME 這個設定.
所以應該考慮不要<EM>很</EM>認真地去使用它.
<P>藉由執行 <CODE>ndc reload</CODE> 載入新的資料庫,這會使 <CODE>named</CODE> 再一次讀取其檔案.
<BLOCKQUOTE><CODE>
<PRE>
$ nslookup
Default Server: localhost
Address: 127.0.0.1
> ls -d linux.bogus
</PRE>
</CODE></BLOCKQUOTE>
<P>這意指應該列出所有的記錄
<BLOCKQUOTE><CODE>
<PRE>
[localhost]
linux.bogus. SOA ns.linux.bogus hostmaster.linux.bogus. (199511301 28800 7200 604800 86400)
linux.bogus. NS ns.linux.bogus
linux.bogus. NS ns.friend.bogus
linux.bogus. MX 10 mail.linux.bogus
linux.bogus. MX 20 mail.friend.bogus
linux.bogus. TXT "Linux.Bogus, your DNS consultants"
localhost A 127.0.0.1
mail A 127.0.0.4
mail MX 10 mail.linux.bogus
mail MX 20 mail.friend.bogus
mail HINFO 386sx Linux 1.0.9
donald A 127.0.0.3
donald MX 10 mail.linux.bogus
donald MX 20 mail.friend.bogus
donald HINFO i486 Linux 1.2
donald TXT "DEK"
www CNAME ns.linux.bogus
richard CNAME ns.linux.bogus
ftp A 127.0.0.5
ftp MX 10 mail.linux.bogus
ftp MX 20 mail.friend.bogus
ftp HINFO P6 Linux 1.3.59
ns A 127.0.0.2
ns MX 10 mail.linux.bogus
ns MX 20 mail.friend.bogus
ns HINFO Pentium Linux 1.2
ns TXT "RMS"
linux.bogus. SOA ns.linux.bogus hostmaster.linux.bogus. (199511301 28800 7200 604800 86400)
</PRE>
</CODE></BLOCKQUOTE>
<P>很好.讓我們檢查它對於單獨的 <CODE>www</CODE> 會說什麼:
<BLOCKQUOTE><CODE>
<PRE>
> set q=any
> www.linux.bogus.
Server: localhost
Address: 127.0.0.1
www.linux.bogus canonical name = ns.linux.bogus
</PRE>
</CODE></BLOCKQUOTE>
<P>...換句話說,<CODE>www.linux.bogus</CODE> 真正的名稱是 <CODE>ns.linux.bogus</CODE>.
<BLOCKQUOTE><CODE>
<PRE>
linux.bogus nameserver = ns.linux.bogus
linux.bogus nameserver = ns.friend.bogus
ns.linux.bogus internet address = 127.0.0.2
</PRE>
</CODE></BLOCKQUOTE>
<P>而 <CODE>ns.linux.bogus</CODE> 擁有 127.0.0.2 這個位址.看起來也很好.
<P>
<H2><A NAME="ss4.3">4.3 繼續深入</A>
</H2>
<P>當然,這個領域是高度虛擬的,里面所有的位址也都是,而這或許會讓你有些混淆.
真實領域的一個真實例子請見下一節.
<P>
<HR>
<A HREF="DNS-HOWTO-5.html">Next</A>
<A HREF="DNS-HOWTO-3.html">Previous</A>
<A HREF="DNS-HOWTO.html#toc4">Contents</A>
</BODY>
</HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -