架設 DNS(DNS终结篇) (3)
2008-02-23 04:53:55来源:互联网 阅读 ()
$TTL 86400
$ORIGIN localhost.
@1D IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
1D IN NS @
1D IN A 127.0.0.1
內容很簡單﹐但您是否真的了解每一行的設定意思呢﹖如果不清楚或不確定﹐那就讓我們一起探討探討吧。
首先﹐第一行是一個 TTL 設定﹐目前是定義出這個記錄檔裡面的各項記錄的預設 TTL 值為 86400 秒(剛好是一天)。您的記錄檔或許沒有這行﹐事實上沒什麼關係﹐您可以自己補上﹐否則﹐在啟動 named 的時候會碰到一些警告﹐無傷大雅的﹔但如果您的確在意那些警告﹐那就加上這行。您要知道﹐在記錄檔中宣告的所有資源記錄(RR - Resource Record)﹐都一定有一個 TTL 設定﹐如果沒有﹐則使用這裡預設的值。
第二行是一個 ORIGIN 設定﹐說明下面的記錄源出何處(這裡是源出 localhost. 的記錄)。請您加倍留意最後的一個小數點“ .”﹐少了它或多了它﹐記錄名稱完全不一樣﹗在 DNS 記錄中﹐我們稱這樣以小數點結尾的名稱為“ 全域名稱 ”即 FQDN ( Fully Qualified Domain Name ) 。如果缺少了這個點會怎樣呢﹖就會將所屬的 ORIGIN ( @ ) 附加在記錄名稱後面﹔而這 ORIGIN 就是上一個 $ORIGIN 宣告之後的名稱﹐如果在前面找不到 $ORIGIN 宣告﹐那就以 /etc/named.conf 中定義的 zone 名稱為基準。以目前的例子來說﹐如果沒有這個小數點的話﹐“localhost”會變成“localhost.localhost”﹔但如果有小數點的話“localhost.”就只能是“localhost.”。所以﹐這個小點“.”非常重要﹐在以後設定中一定要非常留神﹗﹗(這也初學者最常犯的錯誤之一)
然後﹐第三行﹐是一個 SOA 記錄的設定﹐在這裡我們看到一個特殊字符“ @ ”﹐它就是 ORIGIN 的意思﹐也就是剛纔所定義的 $ORIGIN localhost. 內容﹐您可以寫成 localhost. 也可以用 @ 來代替。假如這個檔前面沒有定義 $ORIGIN 的話﹐那這個 @ 的值就以 named.conf 裡的 zone 為準。既然這樣﹐當然是使用“@”啦﹐尤其對於像我這樣的懶惰鬼來說﹐巴不得少打一串字﹐同時還能避免因打字不準所造成的失誤﹐何樂不為﹖
在 @ 之後﹐是 TTL 的設定﹐這裡是 1D﹐也就是一天的意思﹐如果您喜歡﹐可以用 86400 (秒) 來設定﹐如果這裡的 TTL 沒有設定﹐則參考前面的 $TTL 值﹐如果前面沒有定義 $TTL﹐那就參考其後介紹的 minium ttl 設定。
Tips﹕事實上﹐您可以為每一個 RR 記錄設定其自己的 TTL ﹐只要將數字寫在第二個欄位﹐也就是‘IN’前面就可以了。
在 TTL 之後是一個 IN﹐定義出目前的記錄類型是屬於 internet class 的 (奇怪﹐目前的 DNS 還有其它 class 嗎﹖)。
在 IN 之後就是這行 RR 的記錄類別名稱﹐這裡是 SOA ﹐也就是“Start Of Authority”的意思﹐表示目前區域的授權記錄開始。每一個記錄檔只能有一個 SOA ﹐不得重複﹐而且必須是所負責的 zone 中第一個“記錄”。
緊接 SOA 後面﹐指定了這個區域的授權主機和管理者的信箱﹐這裡分別是“ @ ”和“ root ”﹐也就是 localhost. 主機和 root 信箱。這裡要注意的是﹕SOA 的主機名稱必須能夠在 DNS 系統中找到一個 A 記錄 (以後會提到)﹔另外﹐我們平時使用的信箱通常是“user@host”這樣的格式﹐但因為“@”在 DNS 記錄中是個保留字符(剛才已經提過)﹐所以在 SOA 中就用“.”來代替了“ @ ”。目前這個信箱是 root (並沒有主機位址)﹐也就是本機﹐您可以寫成 “root.localhost.”但不能寫成“root@localhost.”。
接下來的 SOA 設定﹐是被括在“( )”之間的 5 組數字﹐主要作為和 slave 伺服器同步 DNS 資料所使用的數據﹕
Serial﹕其格式通常會是“年月日 修改次序”(但也不一定如此﹐您自己能夠記得就行)。當 slave 要進行資料同步的時候﹐會比較這個號碼。如果發現在這裡的號碼比它那邊的數值“大”﹐就進行更新﹐否則忽略。不過設 serial 有一個地方您要留意﹕不能超過 10 位數字﹗
Refresh﹕這裡是是告訴 slave 要隔多久要進行資料同步(是否同步要看 Serial 的比較結果)。
Retry﹕如果 slave 在進行更新失敗後﹐要隔多久再進行重試。
Expire﹕這是記錄逾期時間﹕當 slave 一直未能成功與 master 取得聯絡﹐那到這裡就放棄 retry﹐同時這裡的資料也將標識為過期( expired )。
Minimum﹕這是最小預設 TTL 值﹐如果您在前面沒有用“$TTL”來定義﹐就會以此值為准。
以上的數字都是以秒為單位﹐但您也可以用 H(小時)﹑D(天)﹑W(星期)來做單位﹐如﹕3H 和 259200 是一樣的。但要值得一提的是﹕我在 RH6.2 版本中曾測試過使用 netconf 這工具來設定 DNS ﹐發現只能使用“秒”來設定。否則 netconf 會自動的把英文字母刪除掉﹐那就不是我所預期的設定值了。無論您用什麼單位來設定﹐都要遵守下面的規則﹕
expire >= refresh retry
expire >= 10 * retry
Tips﹕請注意﹕SOA 記錄中這對 “ ( ) ”符號之第一個 “ (”括號一定要和 SOA 寫在同一行﹐而不能用 Enter 斷行到下一行去(有時候您在書本的範例中看到這個符號排在下一行去了﹐那是因為版面的關係而已)﹐而且其左邊最好有一個空白鍵或 tab 建。而最後一個 “ )”括號也不能寫在註解符號 “ ﹔”的右邊。
設定 DNS 的 RR 記錄檔﹐其格式要求非常嚴格﹐我們絲毫不能掉以輕心。比方說﹕如果句子不是以空白鍵﹑Tab 鍵﹑ 或註解符號 ( ; )開頭﹐也不在 SOA 的 “ ( ) ”之內﹐ 則表示要定義一個“新記錄項 (Entry) ”﹔如果句子是以空白鍵或 tab 鍵開始的話﹐其設定被視為上一個“記錄項”的內容。所以﹐如果您要為“同一個記錄項”定義多個記錄設定﹐而不想重複打字﹐您倒可以偷懶﹕在接著它的後面幾行用空白或 Tab 來縮排就可以了。所以﹐最後這兩行還是關於 localhost. 的設定﹐因為上一個“資料項”為 “ @ ”﹐也就是 localhost. 。當然﹐您如不喜歡﹐這兩行句子也可以這樣寫﹕
;; 修改前﹕
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
這兩行的意思是說﹕負責 localhost. 這個記錄的 name server ( NS ) 是 localhost. 這台機器﹔而 localhost. 的 IP Address ( A ) 是 127.0.0.1 。DNS 裡面的 A 記錄應該是最常見的記錄類型之一﹐如果在 IPv6 版本中﹐位址記錄名稱則改為 AAAA 。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:主要省份城市的DNS服务器地址
下一篇:如何增强网络排错技能
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
