由於Linux出色的可靠性,我們可以放心地在Linux上運行當今Internet時代所必需的各種重要服務程式。由此,Linux最普遍的一些用途包括用作郵件伺服器、Web伺服器以及DNS伺服器。
下面我們將研究怎樣在Red Hat Linux上使用BIND建立一個DNS伺服器。BIND(Berkeley Internet Name Domain)是一個在UNIX/Linux系統上實現的網域名稱解析服務軟體包。我們將學習在Linux上建立和運行一個DNS伺服器所需的安裝、初始配置以及系統設定等步驟。
在本文中我們用Red Hat作為樣本,所以你也許希望使用BIND的RPM版本,可以通過搜尋www.rpmfind.net找到它,因為使用RPM形式的發行包是安裝 BIND最簡便的方法。下載了BIND的RPM之 後,比如bind-9.1.0-10.i386.rpm,需要以超級使用者的身份執行rpm -ivh bind-9.1.0-10.i386.rpm命令。在RPM安裝BIND時要注意檢查任何能夠導致安裝失敗的缺失的依賴關係。
如果你更願意從源碼包安裝的話,在下載如bind- 9.1.3.tar.gz這樣的檔案之後需要以超級使用者身份運行tar xvfz bind-9.1.3.tar.gz命令對它進行解壓。就本例而言會產生一個名為bind-9.1.3的目錄,它包含了進行安裝所必需的所有檔案。下一 步,進入這個新建立的目錄然後執行./configure命令,在指令碼程式完成所有配置工作後,運行make,接著運行make install完成安裝過程。現在在你的系統中應該已經安裝好了基本配置的BIND,接下來要根據需要對它進行調整。
配置BIND
當系統中安裝好BIND之後,你就可以把它配置成多種方式。最常用的兩種之一是使用ISP類型的設定,DNS伺服器接受並解析來自任何人的請求 (或者一組預先定義的使用者);另一種是Web主機方式,伺服器只解析對服務網域名稱的請求。當伺服器的用途改變時,你也可以隨時改變更配置置的類型。
DNS伺服器既可以是主控伺服器也可以是次要伺服器。主控伺服器也稱為主伺服器,是判定網域名稱的最終來源。主控伺服器同時也是傳送到次要伺服器的 區傳送(zone transfer)的源頭。次要伺服器接收所有來自主控伺服器的區資訊。一個常見的錯誤是試圖改變二級伺服器上的區資料庫檔案而沒有改變主控伺服器上的區 資料庫檔案(zone file)。為什麼要兩個伺服器呢?在任何配置中使用冗餘都是一個好主意,這是BIND和DNS的一個原生部分。幸運的是,在機房中增加第二台Linux 機器作為輔助DNS伺服器一般來說不會影響你的預算。
要記住當有兩種類型的伺服器時,主控伺服器也可以同時擔當其他域的次要伺服器。在大多數ISP環境當中都可以看到這種情形,客戶擁有自己的主控 DNS伺服器,同時又出於備份的目的把ISP當作二級伺服器。這種類型的配置以及BIND中幾乎所有的其他配置項都是通過named.conf檔案完成 的。這個檔案以純文字的形式存放各伺服器資訊和區資訊。如表A所示。
named.conf 檔案樣本
- options {
- notify-source 10.0.0.2;
- pid-file "/var/run/named.pid";
- };
- zone "." {
- type master;
- file "root.db";
- };
- zone "example.com" {
- type master;
- file "/var/named/sample.com.zone";
- };
DNS伺服器有多種可用的選項,如果你需要某種特殊的安裝方式,我建議你通讀一遍附帶的文檔。上面的例子中notify-source指明服務 器把區變動通知(NOTIFY)訊息發送到什麼地方,當主控伺服器檢測到區資料庫檔案發生變動時就會向次要伺服器發出這樣的訊息。pid-file選項只 是告訴守護進程(daemon)伺服器寫入ID資訊的路徑,通常是/var/run/named.pid,但如果你重新設定了目錄的布局的話也可以根據需 要對其變更。
上面的例子中第一個區登記項用來通知BIND在何處定位根伺服器的資訊。伺服器發送和接收的不僅是你自己的域資訊同時也包括Internet上所有的域信 息。並不是每個伺服器上都有每個網域名稱的登記項,但每個伺服器都知道怎樣擷取資訊。當然,由於列表會定期更新,所以也應當定期作記錄。
在named.conf樣本檔案中第二個區登記項是一個"主控"域項,意思是這個DNS伺服器儲存著example.com的有效資訊, Internet上其他所有的DNS伺服器都將用它來參照任何與這個域相關的資訊。Example.com項引用/var/named /sample.com.zone這個檔案。這是一個純文字檔案,它告訴DNS伺服器所有有關example.com的資訊,包括serial值、重新整理 率、所有的DNS紀錄以及其他一些項目。表B顯示了這個區資料庫檔案的樣本。
DNS區資料庫檔案樣本
- @ IN SOA ns1.sample.com. (
- 200101111 ;serial
- 14400 ;refresh after 4 hours
- 3600 ;retry after 1 hour
- 604800 ;expire after 1 week
- 86400) ;minimum TTL of 1 day
- ;
- ;Nameservers
- ;
- IN NS ns1.sample.com. ;
- IN NS ns2.sample.com. ;
- ;
- ;Domain Mail Handlers
- ;
- sample.com. IN MX 10 mail
- ;
- ;Hosts in order
- ;
- www IN A 212.204.219.71
- ftp IN A 212.204.219.71
- mail IN A 212.204.219.71
- pop IN CNAME mail
SOA是Start of Authority的縮寫,所有區檔案都要以它打頭。順序號(serial)使伺服器能夠紀錄所進行過的各次更新,守護進程最近一次啟動後只要數字出現了 增長,它就會重新把資訊讀入到資料庫中去。舉例來說,你可以從0開始然在每次更新之後加讓一個數字,也可以使用日期項如200101111。這很有用,因 為它讓你能夠看最近的一次更新的發生並且看出一天是否發生過多次更新。接下來的四行以秒的形式處理重新整理和逾時周期,如果BIND資料庫沒有發生過人工或者 伺服器範圍的重新整理,伺服器會自動的重新讀入資訊。不需要經常改變此處所列出的數值,只有由於某種原因域非常頻繁地改變它們的資訊時才需要對這些數值進行更 改。接著列出的是網域名稱,這樣BIND就會知道是誰控制整個域。
接著列出的是MX紀錄,,它使伺服器知道當有郵件資訊請求sample.com時應當發出什麼資訊,在本例中,mail.samle.com的優先順序是 10。你可以列出多個MX紀錄作為郵件伺服器的備份。數字越小優先順序越高。要注意的是還有一個相應的A紀錄給出了mail.sample.com的IP地 址,這是必不可少的,這樣DNS伺服器就可以知道怎樣根據域直接把郵件請求發往何處。一個A紀錄僅僅是把IP地址賦給一個子域項,如www、mail、 ftp或者ns,這些都必須用上面的格式錄入,而且必須與一個IP地址相關聯。比如說,當某個使用者請求www.sample.com時,他將會被指向該域所在的Web伺服器的IP地址 212.104.219.71。
上面的例子中還有一個CNAME項,CNAME是指canonical name,用於指定IP地址的別名,使用這些別名時還是要回過頭參考已經使用過的A紀錄。
次要伺服器部分看過name.conf中的主控伺服器部分後我們再來看看次要伺服器部分:
- zone "sample2.com" {
- type slave;
- file "/var/named/sample2.com.zone";
- master { 10.0.0.1; };
最主要的兩個區別一是type項,它既可以是master也可以使slave,二是IP地址指定的是主控DNS伺服器。其他的都和Master 項相同。
啟動BIND
用於啟動DNS服務的程式是named,讀作"name D"。你可以通過執行/etc/rc.d/init.d/named start命令來運行這個程式。如果伺服器已經處於運行狀態,你可以用restart命令。這個指令碼程式應該是在安裝時放進正確的目錄中的,它在啟動時運 行以初始化伺服器。你總是應當用ps aux命令檢查一下named是否已經運行,這個命令會列出當前所有進程的清單。
本文來源已不可考,如果您是本文作者或知道本文作者是誰,請郵件聯絡本文編輯,謝謝!