DNS開源伺服器BIND最小配置詳解

2022-04-01 23:05:09 字數 3822 閱讀 8873

相對於儲存和大資料領域,cdn是乙個相對小的領域,但行行出狀元,bind就是cdn領域的蟬聯n屆的狀元郎。bind是一款非常常用的dns開源伺服器,全球有90%的dns用bind實現。值得一提的是,bind9.8.1用c語言實現,**量巨大,其設計實現幾乎涵蓋了伺服器程式設計的所有細節。

本文簡要介紹一下bind9.8.1最簡單配置,其中穿插介紹bind中的最基本概念,不涉及bind的安裝部署,不涉及bind架構等話題。

介紹最簡配置前需要明確兩個配置中的概念:zone和rr。

bind的配置檔案描述了乙個網域名稱伺服器的所有屬性,這些屬性bind的行為和功能。其中的zone檔案描述了網域名稱伺服器中包含的主機,所提供的服務型別等資訊,bind通過將zone檔案中的資訊載入到記憶體資料結構中並有效組織起來,然後對外部的dns請求提供驗證和查詢請求。需要注意的是,zone檔案的格式不是由bind制定的,而是dns標準文件制定的(見rfc1035)。

通常情況下,乙個zone檔案描述該dns伺服器服務的乙個授權伺服器域。例如我有乙個dns伺服器可以解析taobao.com的網域名稱和baidu.com的網域名稱,那麼我的dns伺服器的配置檔案中就可以設定兩個zone標籤,乙個描述taobao.com的網域名稱資訊,另乙個描述baidu.com的網域名稱資訊。

資源記錄resource record記錄了乙個域(domain)的屬性和特性,注意,屬性是指共有的特徵,特性指特有的特徵。例如中國特色社會主義就是乙個特性。

named.conf是bind的唯一的主配置檔案,當然你也可以自己編寫主配置檔案,但是需要在bind主程序named啟動的時候用-c選項指定主配置檔案的路徑。named.conf由乙個個子句組成,每個子句都有乙個頭跟一對大括號組成,大括號裡面是該子句中的因子和值(具體見下面的例子)。

下面的**是named.conf的乙個最簡配置。其中假設named.conf只負責解析授權網域名稱cobb.com。

其中的key是由rndc-confgen生成的。

key "rndc-key" ; 

controls

keys ;

}; options ;

zone "." in ;

//域cobb.com的zone檔案

zone "cobb.com" in ; //定義了允許向主zone檔案傳送動態更新的匹配列表

}; //反向解析

zone "1.168.192.in-addr.arpa" in ;

};

上面的**中,

controls子句定義了伺服器的控制通道的一些資訊,控制通道是named為外部提供的管理named伺服器的介面。通常情況下named都在本機的953埠上監聽控制資訊;allow表示允許本機上的rndc控制程式控制named伺服器,allow出了指定ip位址外,還可以指定acl中的使用者位址;keys表示rndc控制named時需要攜帶的金鑰,這個金鑰由rndc-gen生成,並在named.conf中包含。

接下來的options選項中包含一些全域性狀態描述,這些描述資訊在所有的zone檔案和view中可見(view後面的系列部落格會介紹),但如果zone檔案或view中重新定義這些描述資訊,則options中的資訊被覆蓋。上面例子中的directory和pid-file的含義見**注釋。

檔案cobb.com.zone檔案位於/usr/local/named/var中,其內容如下所示:

$ttl 86400

$origin cobb.com.

@ in soa ns1 root(

2013031901 ;serial

12h ;refresh

7200 ;retry

604800 ;expire

86400 ;mininum

)ns ns1.cobb.com.

ns ns2.cobb.net.

mx 10 mail.cobb.com.

ns1 in a 192.168.10.1

www in a 192.168.10.10

in a 192.168.10.11

mail in a 192.168.10.20

ljx in a 192.168.10.30

ftp in cname ljx

上面的配置表示:

1)該zone有兩個網域名稱伺服器,乙個是ns1.cobb.com,ip位址是192.168.10.1,另乙個是ns2.cobb.net(它不在本域內);

2)該zone有乙個郵件伺服器,網域名稱是mail.cobb.com,ip位址是192.168.10.20;

3)該zone有兩個對外服務的全球資訊網伺服器,其網域名稱是www.cobb.com,ip位址是192.168.10.10和192.168.10.11;

4)該zone有乙個對外服務的ftp伺服器,其網域名稱是ftp.cobb.com,ip位址是192.168.10.30;

5)該zone有乙個主機,其網域名稱是ljx.cobb.com,ip位址也是192.168.10.30;

其中ttl和origin等標籤在bind中叫做指令。zone檔案中的所有指令都以乙個$開始,指令主要用來表示zone檔案中的一些控制資訊。$ttl指令表示乙個資源記錄在其他dns伺服器中(這個dns伺服器是請求本bind的伺服器,一般情況下是local dns)的快取時間,在這個快取時間內,local dns(暫且先這麼認為,好舉例)不會再請求bind,而是直接返回網域名稱對應的ip位址。$origin指令表示該zone檔案用來描述的域(domain)名稱。

soa(start of authority)資源記錄:它定義了乙個域的全域性特性,必須是出現在zone檔案中的第乙個資源記錄,而且乙個zone檔案中必須只有乙個soa資源記錄。其中soa後面的ns1與root分別是網域名稱伺服器和管理員郵箱([email protected]),其全寫分別是ns1.cobb.com.和root.cobb.com,因為$origin指明了網域名稱,所以這個地方可以略去。

ns(name server)資源記錄:它定義了為本域(domain)(這個例子中是cobb.com)服務的網域名稱伺服器。需要注意的是外部網域名稱伺服器(例子中的ns2)必須為zone cobb.com包含乙個zone檔案。

mx(mail exchanger)資源記錄:它定義了本域中的郵件伺服器。這個資源記錄是可選的,因為乙個域中不一定有郵件伺服器。

a(address)資源記錄:這是個很關鍵的記錄。它定義了zone檔案中提到的主機或服務的ipv4位址(ipv6位址叫aaaa記錄),而且這些ipv4位址必須是外部可見的。例如全球資訊網伺服器www.cobb.com的ipv4位址是192.168.10.10。

cname記錄:是乙個已經定義了ipv4位址的主機的別名記錄。通常用來為已經存在的主機分配乙個或多個服務。示例中的主機ljx.cobb.com既做主機又提供ftp服務。從上面的分析可以看出,我們也可以不用cname,只需要為不同的服務指定相同的ip位址即可。但是實際上兩種情況下必須用cname記錄:1)真是主機或別名主機在不同的域中,我們不知道外部域中的ip位址,所以必須要用cname,例如ftp.cobb.com是ftp.cobb.net的乙個別名,但是在域cobb.com中無法知道ftp.cobb.net的ip位址,只能用cname記錄;2)使用者希望訪問乙個站點時用cobb.com產生www.cobb.com的效果,這時我們需要有如下的cname定義:

; 定義乙個解析cobb.com的ip位址

in              a              cobb.com

; 為www.cobb.com建立別名cobb.com

www     in               a              cobb.com.

當然,上面介紹的只是乙個最小配置,但是已經包含了大部分情況下我們需要配置的選項。更多的配置選項請參見:

1,《pro_dns_and_bind》

2,3,

使用Bind服務配置DNS伺服器

bind是dns伺服器軟體 他的服務名稱是named 主程式 usr sbin named 主配置檔案 etc named.conf 區域配置檔案 etc named.rfc1912.zones yum install y bind vi etc named.conf listen on port ...

使用bind配置dns伺服器centos

1 yum install y bind 2 vi etc named.conf 修改檔案如下 options directory var named 存放zone檔案的路徑 var named chroot var named zone test.com type master file test...

Linux搭建基於BIND的DNS伺服器

實驗目標 通過本實驗掌握基於linux的dns伺服器搭建。實驗步驟 1 安裝bind 2 防火牆放通dns服務 3 編輯bind的主配置檔案 4 編輯bind的域管理檔案 5 編輯相應域的記錄檔案 6 開啟或重啟bind服務 7 在客戶端測試 1 安裝bind bind是linux平台最常用的dns...