歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

BIND常見問題集

  Berkeley Internert Name Domain(BIND)是我們所熟知的域名軟件,它具有廣泛的使用基礎,Internet上的絕大多數 DNS服務器都是基於這個軟件的。BIND目前由ISC(Internet Software Consortium)負責維護,具體的開發由 Nominum(www.nominum.com)公司來完成。下面編譯的這個常見問題集就是由該公司所發布的(同時也見於 http://www.isc.org/bind),可以說,它具有較強的針對性和實用性。 1) 哪裡可以找到BIND? BIND以源碼的格式發布。當前的版本為BIND 9,不過BIND 8.2.2-P5仍然是廣泛發布的版本。考慮到早期版本的安全問 題,如果您還在運行比8.2.2-P5更早的版本,那麼我們強烈推薦您升級軟件。 以下的URL包括了源碼和其他相關資源的鏈接,你可能會覺得很有用處: http://www.isc.org/prodUCts/BIND/ 源碼也可以使用FTP從ftp://ftp.isc.org/isc/bind/src/8.2.2-P5/bind-src.tar.gz 獲得。 鏡像BIND的ftp服務器列表和其它ISC維護的開發源碼軟件可以在ftp://ftp.isc.org/isc/MIRRORS上找到。 2) 怎樣安裝BIND? 下載源碼到一個空的目錄。如果你需要的話,你也可以下載文檔和捆綁的包。 接下來,你需要解壓(unzip)和解包(untar)發布的包。 gunzip < bind-src.tar.gz tar xf - 然後,你需要編譯和安裝軟件。常見src/INSTALL以獲知指令。在安裝之前請備份系統,因為安裝可能會覆蓋舊的二進制 代碼;這是依賴於系統的。 如果你是從BIND 4轉過來的,那麼你需要將配置文件named.boot轉成新的語法。這裡包含了一個轉換程序。 named-bootconf < /etc/named.boot > /etc/named.conf 同時,如果你正從BIND 4轉換而來,那麼系統啟動腳本需要進行修改,以使之查找/etc/named.conf,而不是 /etc/named.boot。 接著,你需要終止老的named並啟動新的。 kill -TERM ndc start 檢查系統日志(在大多數Unix系統上,錯誤都存放在/var/adm/messages中),因為當前的版本比先前的版本容錯性會差 一些。 3) 哪裡有基於NT的BIND? 最新的基於NT的BIND可以從ftp://ftp.isc.org/isc/bind/src/8.2.2-P5/bind-src.tar.gz上的8.2.2p5源碼中找 到。你應該能夠使用WinZip來解壓/解包8.2.2p5文件。一旦解壓了源碼,你會在src/port/winnt目錄下找到NT的移植程 序。你需要Visual C++ 6.0來編譯它。 4) 哪裡可以找到有關BIND的信息? 先從http://www.isc.org/products/BIND/開始。 對於BIND用戶,有一個可用的郵件列表。使用http://www.isc.org/services/public/lists/bind-lists.Html上的表 單訂閱。在你提交你的問題到郵件列表之前,請檢查郵件列表的檔案以查看是否你的問題已經回答過了。可搜索的 bind-users郵件列表檔案位於http://www.isc.org/ml-archives/bind-users/。


Bind-users郵件列表同時指向了中等的Usenet新聞組comp.protocols.dns.bin.你可以在http://www.deja.com/上搜 索該新聞組。 BIND的"聖經"是DNS and BIND,Third Edition,作者:Paul Albitz和Cricket Liu。 5) 為什麼我應該升級BIND到最新的版本? 最新的BIND版本解決了在以前版本中發現的bug和/或安全漏洞。 6) 我現在使用的是BIND的什麼版本? 有幾種方法可用來確定你正在使用什麼版本的BIND。請注意有一些是針對於特定操作系統的,而其它一些不能在早於 4.9.5的BIND版本上工作。我們會在下面的描述中指明這些限制。 ● 最簡單的告知版本號的方法是查找named啟動時寫到系統日志文件中的消息。例如: Jul 14 12:54:21 ns named[15677]: starting. named 8.2.2-P5 Jul 14 12:54:21 [email protected]:/usr/sbin/named ● named帶"-v"開關會顯示版本: # named -v named 8.2.2-P5 Thu Jul 20 17:19:57 PDT 2000 [email protected]:/usr/sbin/named ● 當使用更新版本的BIND時,BIND的name後台守護程序的控制接口程序可以提供版本信息: ndc status ● 源代碼控制系統(SCss)的"what"命令提供了文件的標示信息。 what /named 以下命令當在運行BIND 4.9.5及以上版本的服務器上檢查時會起作用。這兩個程序都包括在BIND的發布版本中。 ●nslookup # nslookup Default Server: ns.yourco.bogus Address: 333.333.333.333 > set class=chaos > set type=txt > version.bind Server: ns.yourco.bogus Address: 333.333.333.333 VERSION.BIND text = "8.2.2-P5" 〉 ●dig dig version.bind txt chaos @ server name 或者 dig @ server name txt chaos version.bind 7) 我得到一個錯誤提示:No default TTL set using SOA minimum instead.為什麼會這樣?怎麼辦? 從BIND 8.2開始,你需要一條$TTL指示來設置域的默認TTL。可在域的SOA記錄之前添加一條'$TTL XXXXXX'指示。 (XXXXXX表示計算到秒的默認TTL.) 8) 主機名可使用哪些有效字符? 主機名可以包括字母,數字以及連字符,但不能以連字符開頭。下劃線(_)在主機名中不是有效的字符。盡管有一些DNS 服務軟件包可以允許下劃線在主機名中出現,但大多數是不行的。使用一個帶有下劃線的域或者主機名會導致大多數 Internet上的名字服務器不能識別相關的主機/IP地址。 9) 為什麼當我在本域中的一台主機上使用nslookup時會得到non-authoritative的答復? 這通常發生在域(zone)文件中有錯誤出現的時候。檢查系統日志文件'messages'以查證錯誤。 10) 我已經修改了自己的域,但是在Internet上的其它地方看不到這種改變,為什麼? 每當你修改了你的域文件,例如當你添加或者修改了主機記錄的時候,你也必須更新域的SOA記錄的文件版本,或者是 "serial number",因為名字服務器從你的服務器檢索信息時需要知道發生了修改。如果從上次查詢之後版本號沒有修 改,就不會執行更新。舉例如下: ; foo.com. $TTL 14400 @ IN SOA someplace.foo.com. admin.foo.com. ( 1 ; this file's version -- change 43200 ; refresh twice a day 1800 ; retry refresh every 15 minutes 604800 ; eXPire after 1000 hours (over week) 259200 ) ; minimum TTL of 3 day 顯而易見,帶'file's version'的行是我們想要修改的。版本序號可以為任何數字;1,2,3,4或者2001,2002, 2003,等等。唯一的限制是版本號不能多於10位。在這個示例中,如果你對域文件作了修改,你需要將版本序號改為 '2'。 11) 為什麼沒有IP地址?

在/etc/resolv.conf中沒有名字服務器記錄。 12) 在我的日志文件中出現的"lame server"錯誤是什麼? "lame server"指的是不能確信其是否具有域的授權的服務器。如果你有lame server,或者是授權給了lame server的 域,那麼"lame server"消息很有用。如果你寧願不看到"lame server"消息,你可以使用logging語句丟棄它們: logging { category lame-servers{ null; }; }; 13) Microsoft windows 2000和BIND的關系怎樣? BIND默認會檢查所有記錄以確保只在需要主機名的地方使用了主機名,這能夠防止意外的一致性問題。 Microsoft Windows 2000使用一個稱為"_msdcs"來存放動態目錄數據。盡管這種子域不會與合法的主機名產生不一致, 但是也使得在子域中存放非法的主機名成為可能。這種主機名的使用默認是被BIND拒絕的。 動態目錄希望在_msdcs中有"全局目錄(global catalog)"(例如,gc._msdcs.example.com),這默認是拒絕的。為了解 決此問題,我們推薦動態目錄設為獨立的域(例如,"_msdcs.example.com")並配置成不檢查非法的主機名。這應該是合理 的,因為Window 2000服務器創建這些數據,而且不應該會與其它希望訪問這些數據的Windows 2000機器產生不一致問 題。 例如, zone "_msdcs.example.com" { type master; file "_msdcs.example.db"; check-names ignore; allow-update { localnets; }; }; 14) 什麼是TSIG key? TSIG key提供了一種鑒別和驗證交換的DNS數據有效性的方法,它在解析器和服務器之間或者兩台服務器之間使用一個密 鑰。 15) 我怎樣使用TSIG key來動態更新我的DNS? 首先你需要使用以下命令生成一個TSIG密鑰(我們將使用tsig-key作為密鑰文件名): dnskeygen -H 128 -h -n tsig-key。 這會生成一對密鑰文件: 'Ktsig-key.+157+00000.key',這是一個ASCII文件,它包括以下行: tsig-key. IN KEY 513 3 157 awwLOtRfpGE+rRKF2+DEiw== 和 'Kvip-key.+157+00000.private' ,這包括: Private-key-format: v1.2 Algorithm: 157 (HMAC) Key: awwLOtRfpGE+rRKF2+DEiw== 你將需要獲取base64編碼的密鑰awwLOtRfpGE+rRKF2+DEiw== 並在配置你的服務器命名設置中使用它。例如: key tsig-key. { algorithm hmac-md5; secret "awwLOtRfpGE+rRKF2+DEiw=="; }; zone "ddns.dregis.com" { ... ... allow-update { key tsig-key. ; }; } 記得在這之後重啟named。 然後,你需要復制這兩個密鑰文件到客戶系統的某個位置(例如使用/var/named/tsig)。最後,你需要運行以下命令: nsupdate -k /var/named/tsig:tsig-key。 16) 在named.conf中的'forwarder'選項有何作用? forwarder行告訴服務器轉發所有查詢,因為它對另一個域名服務器沒有授權或緩沖的數據。



zone "ddns.dregis.com" { ... ... allow-update { key tsig-key. ; }; } 記得在這之後重啟named。 然後,你需要復制這兩個密鑰文件到客戶系統的某個位置(例如使用/var/named/tsig)。最後,你需要運行以下命令: nsupdate -k /var/named/tsig:tsig-key。 16) 在named.conf中的'forwarder'選項有何作用? forwarder行告訴服務器轉發所有查詢,因為它對另一個域名服務器沒有授權或緩沖的數據。



forwarder行告訴服務器轉發所有查詢,因為它對另一個域名服務器沒有授權或緩沖的數據。



Copyright © Linux教程網 All Rights Reserved