@ IN SOA localhost. root.localhost. ( 2006102001 28800 14400 720000 86400 ) ; 本領域的 DNS 伺服器的主機名稱與 IP 的對應 @ IN NS localhost. 1 IN PTR localhost. 反解通常只有一個需要注意的地方,那就是 PTR,這是啥? 關於反解的 RR 標誌 符號與 RR 說明 Pointer 的簡寫,他的參數是這樣寫的: [IP] IN PTR [主機名稱] 由於這個檔案的 zone 為 127.0.0 ,所以我們只要加一個數字 (最後一個 IP 的數字) 就可以啦!而那個 1 表示的就成為了 127.0.0.1 囉! 那麼萬一今天我們規劃的是 B Class 的 zone 呢?例如 127.0 這樣的 zone 呢?很簡單啦! 就填兩個數字即可!也就是 0.1 囉! 最重要的地方就是:後面的主機盡量使用完整 FQDN,亦即加上小數點 (.) !為什麼呢?因為反解的 zone 是 0.0.127.in-addr.arpa,所以如果你寫成 localhost 時,你的這個 IP 對應的主機名稱將會變成: localhost.0.0.127.in-addr.arpa 之類的怪異主機名稱啊! PTR 至於 192.168.1.0/24 這個網域的 DNS 反解則成為: [root@linux ~]# vi /var/named/chroot/var/named/named.192.168.1 $TTL 600 @ IN SOA linux.vbird.tsai. root.linux.vbird.tsai. ( 2006102001 28800 14400 720000 86400 ) ; 本領域的 DNS 伺服器的主機名稱與 IP 的對應 @ IN NS linux.vbird.tsai. @ IN NS slave.vbird.tsai. 254 IN PTR linux.vbird.tsai. 150 IN PTR slave.vbird.tsai. ; 其他 RR 可以加入的地方。 100 IN PTR winxp.vbird.tsai. 200 IN PTR sun.vbird.tsai. 反解很簡單吧!只要設定好 IP 對應的主機名稱即可!再次強調要使用 FQDN 在反解當中喔!
DNS 的啟動與觀察
DNS 的啟動也太簡單了吧?就直接利用系統提供的啟動 script 即可! [root@linux ~]# /etc/init.d/named start <==也可能是需要 restart 喔 但是這個啟動可不見得是成功的!你『務必』要去 /var/log/messages 觀察過才行! [root@linux ~]# tail -n 20 /var/log/messages | grep named named[28]: starting BIND 9.2.4 -u named -t /var/named/chroot # 由這個說明我們可以知道 chroot 的目錄與 named 啟動的參數等資料 named[28]: using 1 CPU named[28]: loading configuration from '/etc/named.conf' # 由這個說明,可知道主要的設定檔是由哪裡載入的!記得加上 chroot named[28]: listening on IPv4 interface lo, 127.0.0.1#53 named[28]: listening on IPv4 interface eth0, 192.168.1.254#53 named[28]: command channel listening on 127.0.0.1#953 named[28]: command channel listening on ::1#953 # 由這邊可以查出 DNS 相關的服務在哪幾個介面有提供! # 至於那個 command 我們將在後面再繼續說明。 named[28]: zone 0.0.127.in-addr.arpa/IN: loaded serial 2006102001 named[28]: zone 1.168.192.in-addr.arpa/IN: loaded serial 2006102001 named[28]: zone localhost/IN: loaded serial 2006102001 named[28]: zone vbird.tsai/IN: loaded serial 2006102001 # 記得要有這些 loaded serial 的資料,並且不能出現任何錯誤喔! named[28]: zone vbird.tsai/IN: sending notifies (serial 2006102001) named[28]: zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 2006102001) # 這個則是對於外部有其他 slave DNS 時,會發送注意訊息的說明。 Tips:
如果你在 /var/log/messages 裡面一直看到這樣的錯誤資訊:
couldn't add command channel 127.0.0.1#953: not found 那表示你還必需要加入 rndc key ,請參考本章後面的 利用 RNDC 指令管理 DNS 伺服器 的介紹,將他加入你的 named.conf 中!
在上述的輸出資料當中因為資訊太長了,所以鳥哥將時間與主機的欄位拿掉了!上面是順利啟動時的狀況, 如果出現問題怎辦?通常出現問題的原因是因為:
?
語法設定錯誤:
這個問題好解決,因為在 /var/log/messages 裡面有詳細的說明,按照內容去修訂即可;
邏輯設定錯誤:
這個就比較困擾了!為什麼呢?因為他主要發生在您設定 DNS 主機的時候,考慮不週所產生的問題!例如忘記加上 (.) , 系統不會顯示錯誤訊息,但是卻會造成查詢的誤判,而 MX 設定的主機名稱錯誤,也不會出現有問題的訊息,但是 mail server 就是會收不到信等等~這些錯誤都需要很詳細的 DNS client 的測試才能知道問題的所在。
?
我們這裡先就語法設定錯誤方面進行介紹,至於邏輯設定的問題,那個就需要多多的進行測試才能知道了~ 底下的錯誤訊息都會記錄在 /var/log/messages 裡面喔! named: /etc/named.conf:11: missing ';' before '}' # 注意到上面提到的檔案與數字嗎?說明的是 /etc/named.conf 的第 11 行, # 至於錯誤是因為缺少分號 (;) 所致!去修正一下即可。 dns_rdata_fromtext: named.vbird.tsai:5: near eol: unexpected end of input zone vbird.tsai/IN: loading master file named.vbird.tsai: unexpected end of input # 指的是 named.vbird.tsai 的第五行有問題,通常是 SOA 那五個數字沒有完全! # 趕緊去修訂一下即可啊! dns_rdata_fromtext: named.vbird.tsai:12: near 'linux': not a valid number zone vbird.tsai/IN: loading master file named.vbird.tsai: not a valid number # 說明第 12 行在 linux 附近需要有一個合法的數字!趕緊去瞧瞧改改即可! 通常最大的問題是....打錯字!為了避免讓您打錯字,上面幾個檔案鳥哥將他打包了, 你可以在下列的連結下載上述的檔案喔!
?
http://linux.vbird.org/linux_server/0350dns/master_dns.tar.gz
資料庫的更新
再來談一談,那如果你的資料庫需要更新時,應該做哪些舉動啊? 舉例來說,你的某個主機 IP 或者主機名稱要變更,也可能是新增某個主機名稱與 IP 的對應呢! 很簡單啦,通常這樣做就好了:
1. 先針對要更改的那個 zone 的資料庫檔案去做更新,就是加入 RR 的標誌即是! 2. 更改該 zone file 的序號 (Serial) ,就是那個 SOA 的第一個數字, 因為這個數字會影響到 master/slave 的判定更新與否喔! 3. 重新啟動 named ,或者是讓 named 重新讀取設定檔即可。
就這麼簡單啊!不過大家常常會忘記第二個步驟啦!就是將序號變大啊! 如果序號沒有變大,那 master/slave 的資料庫可能不會主動的更新, 會造成一些困擾喔!
測試
在上面的設定都搞定,並且啟動之後,你的 DNS 伺服器應該是已經妥當的在運作了。 那你怎麼知道你的設定是否合理?當然要作測試喔!測試有兩種方式,一種是藉由 client 端的查詢功能, 目的是檢驗你的資料庫設定有無錯誤;另外你也可以連上底下這個網站:
?
http://www.dnsreport.com/
這個網站可以幫你檢驗你的 DNS 伺服器的主要設定是否有問題!不過,這個網站的檢驗主要是以合法授權的 zone 為主,我們自己亂搞的 DNS 是沒有辦法檢查的啦!真是可惜~ 接下來,請查閱 在 Client 端的測試 吧!
Master/Slave 架構的詳細設定:
談完了 Master DNS 伺服器之後,接下來讓我們來瞭解一下 slave DNS 伺服器的架設方式吧! 在架設之前,你應該要曉得為何需要 slave DNS 呢?
? ? ? ? ?
為了不間斷的提供 DNS 服務,你的領域至少需要有兩部 DNS 伺服器來提供查詢的功能;
承上,這幾部 DNS 伺服器應該要分散在兩個以上的不同 IP 網域才好; 為方便管理,通常除了一部主要 Master DNS 之外,其他的 DNS 會使用 slave 的模式; slave DNS 伺服器本身並沒有資料庫,他的資料庫是由 master DNS 所提供的;
master/slave DNS 必需要可以相互傳輸 zone file 的相關資訊才行,這部份需要 /etc/named.conf 之設定輔助。
好了,那麼讓我們繼續上一個案例的延續吧!前一小節是在 192.168.1.254 那部 master DNS 上面設定的, 底下的設定大部分都是在 192.168.1.150 那部 slave DNS 主機上設定的喔!假設我這部 slave.vbird.tsai 僅需要取得 vbird.tsai 以及 192.168.1 這兩個領域,其他的例如 named.root, named.localhost 及 named.127.0.0 都需要自理喔!
master DNS 權限的開放
我們在 /etc/named.conf 設定檔當中的參數項目曾經設定過 allow-transfer ,並且設定所有人均不得使用 zone 的傳送 (transfer)。但是我們的 master DNS 必須要讓 slave DNS 可以進行 zone 的傳送啊,因此你必須要針對 vbird.tsai 及 192.168.1 這兩個 zone 來啟用 allow-transfer 的設定項目才行。整個過程很簡單: [root@linux ~]# vi /etc/named.conf ....前面省略.... zone \ type master; file \ allow-transfer { 192.168.1.150; }; }; zone \ type master; file \ allow-transfer { 192.168.1.150; }; }; ....後面省略.... 除此之外,在上頭所列示的那兩個資料庫檔案當中,你必須要填入所需要的 NS 標誌才行! 這部份我們已經在前一小節提過了,請你自行參考喔! 設定完畢後請重新啟動 named 啦!
slave DNS 的設定
基本上, slave DNS 的 /etc/named.conf 與 master DNS 幾乎一模一樣啊! 唯一的差異在於兩個 zone 的類型 (type) 而已。設定方式唯一的差異在這裡: [root@slave ~]# vi /etc/named.conf ....前面省略.... zone \ type slave; file \ masters { 192.168.1.254; }; }; zone \ type slave; file \ masters { 192.168.1.254; }; }; ....後面省略....
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库LIUNX 鸟哥的架设 DNS教程适合菜鸟从零开始(5)在线全文阅读。
相关推荐: