用BIND建立DNS服務器

DNS (域名解析服務) 是將 IP 地址與 FQDN(fully qualified domain name,全稱域名) 相互轉換的一種 Internet 服務。通過DNS,人們可以無需記憶 IP 地址。運行 DNS 的計算機稱作 域名服務器。DNS是網絡服務的基礎,感覺即簡單又繁瑣,有點琢磨不透的感覺。

一、DNS域名解析簡要過程
比如客戶機clinet向本地域名服務器ns請求解析www.abc.com.cn的簡要過程:
1、clinet向ns請求解析www.abc.com.cn 。
2、ns收到請求後,先查詢本地的緩存。如果有對應的信息記錄,則直接返回結果給client.如果沒有該記錄,ns就向根域名服務器發起請求。 
3、根域名服務器就把cn這個頂級域名服務器的地址返回給ns。 
4、ns再向cn發送請求。 
5、接着cn域名服務器把com的域名服務器地址發回給ns。 
6、ns再向com發送請求。 
7、接着com域名服務器把abc 的域名服務器地址發回給ns。 
8、最後,由abc的域名服務器把對應的IP地址發回給ns,然後ns將返回的結果發給客戶機。並保存到緩存中以便下次再次接到請求可以快速反應。

二、安裝BIND服務套件
在終端提示符後輸入以下命令來安裝 dns:
sudo apt-get install bind9

三、相關配置文件
安裝完BIND後,在/etc/bind目錄存儲配置文件,主要有以下三個以及其他域名對應的資源記錄文件:
/etc/bind/named.conf
/etc/bind/named.conf.options
/etc/bind/named.conf.local
其中主配置文件是/etc/bind/named.conf。

四、主配置文件/etc/bind/named.conf
該文件包含有根區域的欄目,該欄目裏面用file指定的/etc/bind/db.root文件裏面存有世界上的13處根域名服務器的信息。這是域名服務器很重要的信息。另外,也包括了localhost等本地區域信息。 
該文件除了包含這些必要的、不必更改的區域欄目外,還用include行包含了其他的配置文件。比如: 
include "/etc/bind/named.conf.options"; 
該行加載的配置文件,包括directory、forwarders、query-source等常用的參數,我們可以在這個文件裏更改這些配置。 

include "/etc/bind/named.conf.local"; 
該行加載的配置文件用來讓我們配置個性化的DNS。
如果我們要修改部分選項參數,可以只修改options文件,如果要添加區域則可以只修改local文件。這樣感覺比較有層次感、比較清晰、明朗,在修改的時候比較不會顯得雜亂。

五、選項參數文件/etc/bind/named.conf.options
比如裏面的    directory "/var/cache/bind"; 
指出了默認的工作目錄是/var/cache/bind目錄。這個目錄是存放區域資源記錄文件的默認目錄。也就是說,如果你在區域塊裏面的file關鍵字指定的文件名如果沒有包含文件的絕對地址的話,那就默認該文件存放在這裏了。

六、本地區域配置文件/etc/bind/named.conf.local
如果我們要添加區域,可以直接在這個文件添加相應的區域塊,比如:
zone "zkw.com" { 
type master; 
file "/etc/bind/db.zkw.com"; 
}; 

zone "cassati.com" { 
type master; 
file "/etc/bind/db.cassati.com"; 
}; 
這樣就添加了zkw.com、和cassati.com這兩個域名了。其中這倆域名的資源記錄文件都存放在/etc/bind目錄底下,並沒有存放到工作目錄/var/cache/bind底下,這完全取決於個人愛好。

七、資源記錄文件/etc/bind/db.zkw.com
這個文件需要我們手工添加,當然我們可以從db.local中複製過來修改就可以。需要注意的是這個文件的文件名就是我們在named.conf.local裏面的file關鍵字指定的。
以下是該文件的內容:
$TTL    604800 
@    IN    SOA    fh root.zkw.com. ( 
2010053110         ; Serial 
60        ; Refresh 
86400        ; Retry 
2419200        ; Expire 
604800 )    ; Negative Cache TTL 
;定義域名服務器
@    IN    NS    fh 

;定義A記錄和別名記錄
fh    IN    A       192.168.56.1 
www    IN    CNAME    fh 

;定義A記錄和別名記錄
server    IN    A    192.168.56.3 
www1    IN    CNAME    server 

;定義A記錄
fedora    IN    A    192.168.56.5 

@    IN    AAAA    ::1 

這樣,通過www.zkw.com就可以訪問到192.168.56.1,通過www1.zkw.com可以訪問到192.168.56.3,而通過fedora.zkw.com則可以訪問到192.168.56.6。該文件的各個條目的詳解請參考接下來的“bind中DNS的記錄詳解”。
其中的:
fh    IN    A       192.168.56.1 
www    IN    CNAME    fh 
這兩條記錄我們可以寫成:
fh.zkw.com.    IN    A       192.168.56.1 
www.zkw.com.  IN    CNAME    fh.zkw.com.
也就是相對域名與絕對域名的差別。

八、bind中DNS的記錄詳解
以下轉自中國開源項目http://www.opensourceproject.org.cn/article.php?id=682
A記錄
A記錄代表"主機名稱"與"IP"地址的對應關係, 作用是把名稱轉換成IP地址
DNS使用A記錄來回答"某主機名稱所對應的IP地址是什麼?"
主機名必須使用A記錄轉譯成IP地址,網絡層才知道如何選擇路由,並將數據包送到目的地

CNAME記錄
某些名稱並沒有對應的IP地址,而只是一個主機名的別名。
CNAME記錄代表別名與規範主機名稱(canonical name)之間的對應關係
如管理員可能公告他們網站的主機名稱爲www.a.com, 但其實www.a.com只是一個指向server1.a.com的CNAME記錄而已。而在server1.a.com維護期間,可以臨時將www.a.com指向server2.a.com

MX記錄
MX記錄提供郵件路由信息
提供網域的"郵件交換器"(Mail Exchanger)的主機名稱以及相對應的優先值
當MTA要將郵件送到某個網域時,會優先將郵件交給該網域的MX主機
同一個網域可能有多個郵件交換器, 所以每一個MX記錄都有一個優先值,供MTA作爲選擇MX主機的依據

PTR記錄
PTR記錄代表"IP地址"與"主機名"的對應關係,作用剛好與A記錄相反
DNS系統使用PTR記錄來回答"某IP地址所對應的主機名是什麼?"
RFC 882構想,A記錄與PTR記錄應是互逆的,也就是說
從A記錄可以查到域名到IP, 從PTR可以查到從IP到域名
但當多個域名對應同一個IP時,PTR記錄應指向該IP地址的規範主機名
某些網絡使用PTR記錄來檢驗客戶端的主機名稱是否可信 

=====================================
DNS資源記錄語法:
{name}  {TTL}  addr-class   record-type   record-specific-data

name
域記錄的名字
通常只有第一個DNS資源記錄設置name欄
對於區域文件中其他的資源記錄,name也可能是空白,這種情況下,其他的資源記錄接受先前的資源記錄的名字

TTL
Live欄可選擇的時間
它指定該數據在數據庫中保管多長時間
此欄爲空表示默認的生存週期在授權資源記錄開始中指定

addr-class
地址類
大範圍用於Internet地址和其他信息的地址類爲IN

record-type
記錄類型
常爲A  NS  MX  CNAME        

record-specific-data
記錄類型的數據

=============================================
.對於每個Internet域或區域,需要兩個配置文件
1) 主機名到IP的轉換設置域
;主域
;如果希望名字服務器是特定域的授權名字服務器,應設置主要的區域
;這裏名字服務器配置爲abc.com域的主要的名字服務器
;file用來指定區域或域特有的配置文件名, 如果這裏指定的文件名和服務器的工作目錄有關係,它必須在工作目錄裏
zone  "abc.com"{
type  master;
file  "abc.db";
};

;從域
;
;如果爲特定的域設置多個名字服務器,可以使用type master選項只設置其中一個爲主要的或授權名字服務器
;其它的名字服務器(個數不限)必須設置爲從名字服務器
;
;這裏當前名字服務器設置爲abc.com域的從名字服務器
;主要的名字服務器列表指定一個或多個IP地址
;從名字服務器可以用來與這些IP地址聯繫更新其區域拷貝
;如果指定file選項,則區域配置的拷貝寫在此文件中,推薦使用file可以加速服務器啓動
zone  "abc.com"{
type slave;
masters  {206.171.50.10; 206.171.50.12; };
file     path_name;
};

;用來指定一組根名字服務器
;當名字服務器啓動時,它使用此列表(暗示)來發現一個根名字服務器,得到根名字服務器的最近列表
zone  "."{
type  hint;
file  path_name;
};

;
;把域名服務器設置爲206.171.50.0網絡的主要的域名服務器
;所有對此206.171.50.0網絡的IP到主機名的轉換(即反向DNS)都由此域名服務器處理
zone  "50.171.206.in-addr.arpa"{
type  master;
file  "db.206.171.50";
};


======================================
;SOA授權的開始
;
;SOA或授權的開始記錄用來表示區域的啓動
;每個區域必須只有一個SOA記錄
;從名字服務器,在不能和主服務器通信的情況下,將提供12小時DNS服務, 在指定的時間後停止爲那個區域提供DNS服務;不過經仍要嘗試和主服務器通信
;
@  IN  SOA   nameserver.      contact-email-address(
serial_number;  
refresh_number;   //以秒爲單位, 從名字服務器與主名字服務器比較才決定是否要更新
retry_number;       //以秒爲單位, 由於外部原因,   從服務器重新傳輸一個失敗的區域前要等多長時間
expire_number;    //以秒爲單位, 是從名字服務器使用區域數據有效期的上限值
minimum_number; //以秒爲單位, 是指在區域文件中沒有指定生存期的資源記錄上生存期TTL的限制,如果在一些區域的資源記錄上有TTL值,則這裏的minimum_number也是最低限度
)

@
是名字
並且總是被設置爲@
在同一文件中別的資源記錄不能重複

nameserver
指定當前域名服務器的主機名

contact-email-address
指定系統管理員的email

;
;名字服務器主機名爲ns.abc.com
;電子郵件地址是[email protected]   (在SOA記錄中郵件的@被換成.)

@    IN    SOA  ns.abc.com.    kdent.abc.com.  (
1049310513     ;serial
10800              ;refresh
3600                ;retry
604800           ;expire
900                  ;ttl
)            

==========================================
NS
名字服務器
用來爲域指定名字服務器

IN   NS   name-server-hostname
注意:沒有指定name和TTL, 因爲名字僅需要使用@字符在SOA記錄中指定 ;  TTL使用SOA記錄中的minimum

IN   NS   ns.abc.com.               //說明ns.abc.com.是當前區域文件的名字服務器,  可以指定多個NS記錄

;
; Nameservers
;
abc.com.       IN   NS   ns.abc.com.

===================================

A記錄
Address記錄
用來爲特定主機指定IP地址
語法:  hostname   IN   A   IP-Address
A記錄把主機名指定爲IP地址
完整的主機名後應有一個點.
每個主機至少應有一個A記錄
可以使用縮寫, 此時縮寫被增加到短名上  www    IN   A   206.171.50.51  ;將指定 www.abc.com

;
; Host Addresses
;
abc.com.                    IN   A  192.168.100.50
www                            IN   A  192.168.100.50
server1.abc.com.     IN   A  192.168.100.200
ns.abc.com.              IN   A   192.168.100.5
mail1.abc.com.        IN   A   192.168.100.6
mail2.abc.com.        IN   A   192.168.100.50
mail3.abc.com.        IN   A   192.168.100.123

===================================

PTR記錄
域名指針
PTR記錄代表"IP地址"與"主機名"的對應關係,作用剛好與A記錄相反
DNS系統使用PTR記錄來回答"某IP地址所對應的主機名是什麼?"
RFC 882構想,A記錄與PTR記錄應是互逆的,也就是說
從A記錄可以查到域名到IP, 從PTR可以查到從IP到域名
但當多個域名對應同一個IP時,PTR記錄應指向該IP地址的規範主機名

某些網絡使用PTR記錄來檢驗客戶端的主機名稱是否可信

格式
ip      IN   PTR   hostname.
206.171.50.51   IN   PTR   www.abc.com.

可也以使用縮寫
206.171.50.51   IN   PTR   www      //同樣也是指定www.abc.com.


===================================
CNAME
規範命名
指定規範(正式)主機名的別名
格式:        
Alias   IN   CNAME    Canonical-hostname

;       
; CNAME  Records
;
pop.abc.com.    IN  CNAME   mail1.abc.com.
www.abc.com.    IN  CNAME   server1.abc.com.

也可使用縮寫如下
pop    IN  CNAME   mail1.abc.com.
www    IN  CNAME   server1.abc.com.

===================================
MX
郵件交換
用來指定設置爲域的SMTP服務器的主機名
格式:
IN   MX  preference-value    mail-server-hostname.

;
; Mail  Exchanger
;
IN   MX   0    mail.abc.com.
IN   MX  10   mail1.abc.com.
IN   MX  20   mail2.abc.com.
IN   MX  30   mail3.abc.com.


===================================

[註釋]
IN              表示這些資源都在Internet上

發佈了66 篇原創文章 · 獲贊 8 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章