架設 DNS(DNS终结篇) (11)

2008-02-23 04:53:55来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


Tips﹕我知道許多所謂的動態 dns 服務﹐大都會於 server 上提供更新機制﹐我猜﹐只要透過簡單的 cgi 或 client 程式﹐就應該可以完成的。看完下面 Leo 兄的文章﹐您應該會有靈感的﹕


動態 DNS 設定技巧

除此之外﹐如果您還有興趣研究動態 DNS 技術的話﹐不妨到網路上找找 IXFR 的技術﹐也可以參考如下這些 RFC﹕1034﹐1995﹐1996﹐2136﹐2535﹐2694。

設定 master / slave

不管您是否有打算註冊自己的 domain 和管理自己的 DNS 主機﹐在您真正架設對外服務的 dns 伺服器之前﹐請先行在內部網路架設看看﹐直到您有信心之後才架設直接向 Internet 提供服務的 DNS 。而您需要練習的這些前置功夫中﹐其一就是 master 與 slave DNS 的設置。

假如您真的到網路上註冊過 domain﹐他們通常需要您提供最少兩台 NS 主機。為什麼呢﹖這是基於備援考量的。當一個註冊 domain 同時授權到兩台 ns 上面管理的話﹐那別人透過 DNS 查詢的時候﹐會獲得兩個 NS 記錄( root zone 就有 13 個 ns 之多﹗)。對方只需向其中一台進行查詢就可以了﹐如果第一台不能成功的話﹐則轉向下一台。究竟向哪一台 NS 查詢﹐其先後順序沒什麼關係﹐但關鍵的是資料的準確性﹗

在前面您已經知道如何在單一的主機上面進行 DNS 設定了﹐那麼﹐當有兩台主機需要為同一個 domain 提供 DNS 服務的時候又如何設定呢﹖您當然可以在兩台主機上各設定一次。但資料的同步呢﹖您總不能在一台 NS 查詢到一個 IP 位址﹑而在另一台 NS 得到另外一個位址吧﹖如果發生資料變更需求的時候﹐您也得同樣的在兩台機器上面進行修改﹐而且必須透過人為的觀測﹐以確定雙方的資料一致性。那~~ 是否有更好的辦法來做到這點呢﹖

當然有啦﹐這就是 master 和 slave DNS 的設定了。透過 master 和 slave 的架構﹐您日後要進行資料變更的時候﹐只需在 master 上面維護就好﹐然後 slave 會定期的自動過來將更新資料同步回去(還記得 SOA 那堆數字的嗎﹖您應該知道 Refresh 和 Serial 的作用吧﹖如果您忘記了﹐請回去溫習一下)。

如果您沒有理解錯誤﹐應該知道 slave 會在 refresh 時間到達的時候﹐就嘗試和 master 進行資料同步的動作﹐這在 DNS 系統裡面有一個專門術語﹐叫做“zone transfer”(區域轉移)﹐而在技術層面來說﹐則是 AXFR 查詢﹕


當 slave 需要進行 zone transfer 之前﹐它首先查詢 master 的 SOA 記錄之 serial 數值﹔
如果發現數值比 slave 上的 serial 要大﹐就送出 AXFR 查詢﹔
如果 master 允許 slave 的 zone transfer ﹐那就回應 AXFR 的查詢結果﹔
然後 slave 根據查詢結果更新自己的記錄檔。

從上面的流程來看﹐您不難發現 serial 在整個區域轉移過程中的重要性。所以﹐您每次修改了 master﹐一定要將增加 serial 數值。雖然﹐您可以依序的增加數值﹐但如果您的 Serial 號碼是依照“日期 修改次數”格式的話﹐那麼您只要修改日期部份﹐就肯定可以獲得一個更大的數值(除非您又碰到 Y2K 的問題 )﹔假如您的修改是在同一天發生的﹐那您可以修改最右邊的兩為數字(相信您一天之內不會修改 100 次吧﹖)。

要設定 slave DNS 其實非常簡單﹐簡單到或許您不相信﹗真的沒騙您﹐您只需在 slave 主機上面的 /etc/named.conf 增加這幾行就可以了﹕

zone "siyongc.domain" IN {
type slave;
masters { 192.168.100.23; };// 請不要漏了 masters 後面的 s ﹗
file "slave.siyongc.domain";
};

一點也沒錯﹗就這麼簡單~~~ 我們假設上面的設定在 10.0.1.130 ( lp64 ) 上面進行﹐而 master 則是 192.168.10.23 ( rh71 )。這裡﹐我再告訴您一個您非常樂意聽到的信息﹕您根本無需擔心如何建立 slave 的記錄檔﹐named 會自動幫您搞定﹗您只需確定 /var/named 這個目錄能夠被 named 寫入就行了。如果您不確定﹐那只需將目錄的 owner 改一改就行了﹕

chown -R named.named /var/named


這樣的話﹐只要 slave 的 refresh 時間到達﹐就會自動的幫您更新記錄資料了(當然了﹐底層的路由和連線必須是暢通無阻的)。但是﹐每次當您修改了 master 上面的設定並重新啟動 named 服務的時候﹐master 就會主動向資源記錄當中的所有 NS 主機送出 NOTIFY 信號(自己除外﹐但 master 的 NS 記錄必須是第一筆)。當 slave(s) 收到來自 master 的 NOTIFY 之後﹐會回復一個確認給 master ﹔然後根據 /etc/named.conf 檔案中的設定﹐嘗試向所定義的 masters 位址進行 zone transfer (是否要更新資料﹐當然還必須以 Serial 為依據)﹐就好像 refresh 到達了一樣。


Tips﹕假如您發現修改 master 後並不能及時同步 slave 上的資料﹐那可能是 slave 並沒寫在 NS 記錄上。如果您不願意修改 NS 記錄﹐那您可以在 master 的 named.conf 裡面的 zone 設定上加上這幾行﹕

zone "siyongc.domain" IN {
type master;
file "siyongc.domain";
notify yes;
also-notify { 192.168.100.26; };
};

這樣﹐master 在修改後同時還會通知名單中的 slave 主機。

事實上﹐如果有別的 slave DNS 被設定為指向該這台 master 的話﹐就算您這裡將 notify 設為 no ﹐當 slave 主機的 refresh 到期的時候﹐還是可以進行區域轉移 (zone transfer) 的。

當然了﹐為了防止別人任意的向 master 進行 zone transfer 而盜取 zone 資料﹐named 還允許您以 acl (Access Control List) 來控制哪些主機才能上來進行區域轉移(這個我們後面再談)﹐同時﹐還允許 zone transfer 的時候以加密的方式傳送資料。


除了上述的備援需求外﹐在其它情形也有可能需要 master / slave 的架構。比方說﹐您有一個很大型的網路﹐如果所有主機都集中向 master 進行 DNS 查詢﹐那勢必會增加 master 的工作負荷﹑而降低其效能﹐同時也產生額外的遠程網路流量。這時﹐您最好設定多台 slave 放置在不同的地點來分擔 master 的工作﹐同時也能提供備援服務。

設定 forwarder

我們除了能夠用 slave 來分擔 master 工作﹑減少網路流量之外﹐還可以透過另外一種 DNS 機制來減低網路流量的﹐那就是 forwarder 設定了。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:主要省份城市的DNS服务器地址

下一篇:如何增强网络排错技能