①簡介 DNS就是Domain Name System,它能夠把形如www.21php.com這樣的域名轉換為211.152.50.35這樣的IP地址;沒有DNS,瀏覽21php.com這個網站時,就必須用211.152.50.35這麼難記的數字來訪問。提供DNS服務的就是DNS伺服器。DNS伺服器可以分為三種,高速緩存伺服器(Cache-only server)、主伺服器(Primary Name server)、輔助伺服器(Second Name Server)。
1、「hosts」文件,定義了主機名和ip地址的對應,其中也有將要運行dns這台電腦的ip地址和主機名。內容: 127.0.0.1 localhost.localdomain localhost 2、 「host.conf」文件[Boban註:原來誤寫成hosts.conf],"order hosts bind"語句,指定了對主機名的解析順序是先到hosts中查找,然後到dns伺服器的記錄里查找。「multi on」則是允許一個主機名對應多個ip地址。內容: order hosts, bind multi on nospoof on 3、 「resolv.conf」文件,「nameserver 10.0.0.211」指定了dns伺服器的地址。注意,這個文件對普通非dns伺服器的電腦(非windows的系統;Windows系統是在「網路屬性」中設置這項的)來說,是必不可少的。你如果沒有設置本機為dns伺服器,你又要能夠解析域名,就必須指定一個dns伺服器的地址。你可以最多寫上三個地址,作為前一個失敗時的候選dns伺服器。「domain zrs.com」指定默認的域。文件內容: domain 21php.com nameserver 11.0.0.1 4、「named.boot」文件是早期版本的bind軟體使用的配置文件,現在新版本中已經讓位於「named.conf」。named.conf是dns server配置的核心文件。下面我們一段一段的來解說。
# named.conf - configuration for bind # # Generated automatically by bindconf, alchemist et al. controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; }; };
include "/etc/rndc.key";options { directory "/var/named/"; }; zone "." { type hint; file "named.ca"; }; zone "0.0.127.in-addr.arpa" { type master; file "0.0.127.in-addr.arpa.zone"; }; zone "localhost" { type master; file "localhost.zone"; }; zone "21php.com" { type master; notify yes; file "21php.com"; };
zone "." { type hint; file "named.ca"; }; 指定named從 named.ca 文件中獲得Internet的頂層「根」伺服器地址 。
zone "0.0.127.in-addr.arpa" { type master; file "0.0.127.in-addr.arpa.zone"; }; 指定named作為127.0.0網段地址轉換主伺服器,named.local文件中包含了127.0.0.*形式的地址到域名的轉換數據(127.0.0網段地址是區域網介面的內部 loopback地址);
zone "localhost" { type master; file "localhost.zone"; }; 指定包含localhost的DNS文件數據存放在/var/named/localhost.zone中;
zone "21php.com" { type master; notify yes; file "21php.com.zone"; }; 以上語句表明域21php.com的DNS數據存放在/var/named/目錄下的21php.com.zone中;
我們可以用文本編輯器打開/var/named/21php.com.zone,其內容如下:
$TTL 86400 @ IN SOA @ root.localhost ( 2 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttl )
@ IN NS localhost
www IN A 11.0.0.233 www2 IN A 11.0.0.23 forum IN A 11.0.0.10 @ IN MX 5 mail.21php.com.
該文件的前部分是相應的參數設置,此部分不需要改動,後面的部分就是具體的DNS數據;
例如:
www IN A 11.0.0.233 將www.21php.com 解析到地址11.0.0.233;
www2 IN A 11.0.0.23 將www2.21php.com 解析到地址11.0.0.23;
club IN A 11.0.0.10 將club.21php.com 解析到地址11.0.0.10;
③配置輔助DNS伺服器
配置伺服器11.0.0.2為21php.com輔助dns伺服器
輔助DNS伺服器,可從主伺服器中轉移一整套域信息。區文件是從主伺服器中轉移出來的,並作為本地磁碟文件存儲在輔助伺服器中。在輔助伺服器中有域信息的完整拷貝,所以也可以可以回答對該域的查詢。這部分的配置內容如下: zone "21php.com" IN { type slave; file "21php.com.zone"; masters { 11.0.0.1; }; };
@ IN SOA linux.my.com. root.linux.my.com. ( 199511301 ; serial, todays date + todays serial # 28800 ; refresh, seconds 7200 ; retry, seconds 3600000 ; expire, seconds 86400 ) ; minimum, seconds NS linux.my.com. MX 10 support.my.com. localhost A 127.0.0.1 linux A 192.22.33.20 support2 A 192.22.33.102 hp712 A 192.22.33.160 support A 192.22.33.100 mail MX 10 support.my.com. MX 20 support2.my.com. www CNAME hp712.my.com. ftp CNAME hp712.my.com. ns CNAME linux.my.com.
其中第一行是 SOA 記錄,定義了域名數據的基本信息,依次是 DNS 伺服器名、DNS 管理員郵件地址, 括弧內的第一個數字是文件版本號,每次本文件內容修改後,必須更改此號。其餘數字與 DNS 伺服器直接 的數據交換有關,在這裡我們不需要改動。 括弧後面有一條 NS 記錄和一條 MX 記錄,定義了域名伺服器本身的域名和 username@my.com 形式郵 件地址所對應的郵件伺服器名字。
在此以下是各種域名/地址轉換數據,其中 A 記錄是 DNS 域名到 IP 地址的記錄,是必須有的,以 hp712.my.com 為例,在 A 記錄中域 my.com 被省略,只寫成 hp712,named 在處理時會根據 named.boot 中的定義自動加上 my.com,而其對應 IP 地址為 192.22.33.160。
如果企業網路不與外界 Internet 直接互連,DNS 伺服器就不必關心本企業域以外的域名,所以配置 named 的時候可以不理會 db.cache,我們可以將 /etc/named.boot 中的 cache 行去除。
(3)如果你聯入的公共網不能訪問 Internet
如果你的內部網接入的公共網只能訪問有限的範圍,如免費的169網、上海熱線等,那麼你的 DNS 服 務器就不能通過 Internet 的頂層伺服器(root server)進行地址解析,所以你必須用你直接能訪問到 的 DNS 伺服器來替代。具體辦法是用 forwarders 選項來指定上級 DNS 伺服器,以本文為例, named.boot 的內容為:
; ; boot file for name server ; directory /var/named primary my.com db.my primary 0.0.127.IN-ADDR.ARPA db.127.0.0 primary 33.22.192.IN-ADDR.ARPA db.192.22.33 primary 37.22.192.IN-ADDR.ARPA db.192.22.37 forwarders ... options forward-only
其中、等是你能直接訪問到的 DNS 伺服器的地址,通常就是你的 ISP (169、上海熱線等)的 DNS 伺服器的地址,至少要有一個。 通過 forwarders 和 options forward-only 參數的指定,你的企業 DNS 伺服器就工作在 forward-only 模式下,所有本地不能解決的名字都被傳送到 ISP 的 DNS 伺服器 上去解析。
九、建立後備 DNS 伺服器 (Secondary DNS Server)
通常有一台 DNS 主伺服器,網路即可正常工作,但根據 Internic 對域名的管理規範,一個獨立的 域名必須至少有兩台 DNS 伺服器,即一台 DNS 主伺服器 ( Primary Server )和一台後備 DNS 服務 器( Secondary Server ),這主要是為 DNS 服務的可靠性考慮,能使 Internet 的性能更為可靠。
現在仍以前面的例子,現在要加入一台運行 Linux 的機器 nspc.my.com,IP 地址為 192.22.33.60
(1)主伺服器上的修改
首先確認 DNS 主伺服器工作正常,然後,在主伺服器上的正向 DNS 數據文件 db.my 中,加入 nspc.my.com 的有關記錄,並增加一個NS記錄,使主伺服器上的 db.my 成為下列內容:
@ IN SOA linux.my.com. root.linux.my.com. ( 199511301 ; serial, todays date + todays serial # 28800 ; refresh, seconds 7200 ; retry, seconds 3600000 ; expire, seconds 86400 ) ; minimum, seconds NS linux.my.com. NS nspc.my.com. ; 必須增加的記錄 MX 10 support.my.com. localhost A 127.0.0.1 linux A 192.22.33.20 support2 A 192.22.33.102 hp712 A 192.22.33.160 support A 192.22.33.100 nspc A 192.22.33.60 ; 增加的記錄 mail MX 10 support.my.com. MX 20 support2.my.com. www CNAME hp712.my.com. ftp CNAME hp712.my.com. ns2 CNAME nspc.my.com. ; 增加的記錄 ns CNAME linux.my.com.
然後對主伺服器上的各個反向 DNS 數據文件做類似的修改,增加有關後備伺服器的 NS 記錄,然 后重新起動 named。 可見,其實在主 DNS 伺服器上的改動主要是增加了一條 NS 記錄,其餘的改動和增加一台普通節 點一樣,如果是用現有的節點做後備 DNS 伺服器,則增加 NS 記錄是唯一必須的步驟。
(2)後備 DNS 伺服器(secondary server)的配置
需要在後備 DNS 伺服器上創建的配置文件只有 named.boot 和 db.cache,格式與主伺服器相似, named.boot 內容為:
; ; boot file for secondary name server ; directory /var/named secondary my.com 192.22.33.20 db.my secondary 0.0.127.IN-ADDR.ARPA 192.22.33.20 db.127.0.0 secondary 33.22.192.IN-ADDR.ARPA 192.22.33.20 db.192.22.33 cache . db.cache
其中的三行 secondary 定義,使得 named 從 192.22.33.20,即主伺服器上獲得各種 DNS 數據, 並存在本地的各個數據文件中。本地的數據文件由 named 從主 DNS 伺服器的 named 下載後生成, 通常與主伺服器上的數據文件完全一樣,萬一後備伺服器與主伺服器失去連接而不能下載 DNS 數據, 後備伺服器可利用本地的數據文件工作。 而後備 DNS 伺服器的 db.cache 通常由系統管理員從主伺服器上拷貝過來即可。
通常,後備 DNS 伺服器可以建立在企業網內,也可利用外部的 DNS 伺服器充當,如讓 ISP 的 伺服器作為企業的後備 DNS 伺服器,這樣可以提高 DNS 服務的可靠性。注意,同一台 DNS 伺服器 可以同時成為多個 DNS 域的伺服器,而且可以既作某些域的主伺服器,同時又是另一些域的後備服 務器。