<b>在一台</b><b>linux</b><b>伺服器上安裝配置</b><b>DNS</b><b>伺服器</b>
<b>第一部分:了解DNS</b>
<b>1.BIND</b><b>軟體介紹</b>
BIND最新的版本我們可通過官方站點(https://www.isc.org/)中下載下傳到。在RHEL5系統中,與BIND域名服務相關的幾個主要軟體包和作用如下:
Bind——提供了域名服務的主要程式及相關檔案
Bind-utils——提供了對DNS伺服器的測試工具程式(如nslookup、dig等)
Bind-chroot——為bind提供一個僞裝的根目錄以增強安全性
Caching-nameserver——為配置BIND作為緩存域名伺服器提供必要的預設配置檔案
<b>2.BIND</b><b>服務控制</b>
BIND軟體包安裝完畢以後,提供的主程式預設位于“/usr/sbin/named”,系統中會自動增加一個名為named的系統服務,通過腳本檔案“/etc/init.d/named”或service指令都可以控制域名服務的運作。下面是常用的關于DNS服務的指令:
啟動服務:/etc/init.d/named start或service named start
重新加載:service named reload
停止服務:service named restart
檢視狀态:service named status
<b>3.BIND</b><b>的主配置檔案</b>
Named服務的主配置檔案為named.conf,一般位于“/etc/”目錄中,如果使用了bind-chroot功能,則可能位“/var/named/chroot/etc/”目錄中
下面是全局配置部分最常見的配置項及其注解:
options {
listen-on port 53 { 1.1.1.1; }; //設定named服務監聽的端口及IP位址
directory "/var/named"; //設定區域資料庫檔案的預設存放位置
allow-query { 192.168.1.0/24; 172.16.16.0/24; }; //允許DNS查詢的用戶端
recursion yes; //設定允許遞歸查詢
dump-file "/var/named/data/cache_dump.db"; //設定緩存資料庫檔案位置
statistics-file "/var/named/data/named_stats.txt"; //設定狀态統計檔案位置
};
在以上配置内容中,除了directory項通常保留以外,其他的配置項都可以省略,若不指定listen-on配置項,named預設在所有可用的IP位址上監聽服務。伺服器處理用戶端的DNS解析請求時,如果在named.conf檔案中找不到相比對的區域,将會向根域伺服器或者由forwarders項指定的其他DNS伺服器送出查詢。
以下是區域配置部分常見的配置項:
zone "." IN { //設定根區域
type hint; //設定區域類型(hint表示根域、masters表示主域、slave表示從域)
file "named.ca"; //設定對應的根域位址資料庫檔案
zone "doubao.com" IN { //設定正向DNS區域
type master;
file "doubao.zone"; //設定對應的正向區域位址資料庫檔案
allow-transfer { 200.200.200.1; }; //設定允許下載下傳區域資料庫資訊的從名伺服器
allow-update { none; }; //設定允許動态更新的用戶端位址(none為禁止)
zone "1.168.192.in-addr.arpa" IN { //設定反向DNS區域名稱
type master;
file "192.168.1.arpa"; //設定對應的反向區域位址資料庫檔案
在以上配置中,需要注意的地方如下:
每個zone區域都是可選的,具體根據實際需要而定;
zone配置部分的“IN”關鍵字可以省略;
反向區域的名稱由倒序的網絡位址和“.in-addr.arpa”組合而成,例如對于192.168.1.0/24網段,其反向域名為“1.168.192.in-addr.arpa”;
區域設定中的一部配置設定置内容(如allow-transfer、allow-update等)也可發放在全局配置中。
<b>4.</b><b>區域資料庫配置檔案</b>
區域資料庫配置檔案位于“/var/named/”目錄中,如果使用了bind-chroot功能,則可能位于“/var/named/chroot/var/named”目錄中。
全局TTL配置項及SOA記錄
$TTL 600
@ IN SOA doubao.com. admin.doubao.com. ( //設定SOA标記、域名、域管理郵箱
1997022700 ; Serial //更新序列号,用于标記位址資料庫的變化
28800 ; Refresh //重新整理時間,從域名伺服器更新該位址資料庫檔案的間隔時間
14400 ; Retry //重試延時,是重新整理時間的補充
3600000 ; Expire //失效時間,超過此時間仍無法更新,則放棄
86400 ) ; Minimum //設定無效位址解析記錄的預設緩存時間
@ IN NS ns1.doubao.com.
IN MX 10 mail.zpp.com.
ns1 IN A 172.16.16.1
mail IN A 172.16.16.1
www IN A 172.16.16.1
ftp IN CNAME www
在上述配置項中,時間參數的預設機關為秒,也可以使用以下機關:M(分)、H(時)、W(周)、D(天);從域名伺服器根據更新序列号決定是否需要重新下載下傳位址資料庫,如果發現序列号與上一次的相同,則不會下載下傳位址資料庫,檔案中的@表示目前的DNS區域名,相當于“zpp.com”,“admin.zpp.com.”表示管理者的電子郵件位址(由于“@”符号已有其他含義,是以将郵件位址中的“@”用“.”代替。
從上面可以看到在區域資料配置檔案中有以下幾種常用的位址解析記錄:
NS域名伺服器(name server)記錄,用于設定目前域的DNS伺服器的域名位址。
MX郵件交換(Mail Exchange)記錄,用于設定目前域的郵件伺服器域名位址。
CNAME别名(Canonical Name)記錄,用于設定别名
<b>5.</b><b>位址資料庫檔案的特殊應用</b>
1>.基于DNS解析的負載均衡
當同一個域名對應有多個不同IP位址的伺服器時,可以通過DNS區域資料庫檔案實作簡單的輪詢負載均衡,隻需要在位址資料庫中添加相應的多條A記錄即可。
2>.泛域名解析
當同一個IP位址的伺服器對應有相同域内大量不同的域名時(如:51cto的部落格域名解析服務),可以通過DNS區域資料檔案使用泛域名解析,隻需要添加一條主機位址為“*”的A位址記錄即可(作用類似于通配符)。
<b>例如</b>:51cto部落格使用同一台Web伺服器提供虛拟主機服務,IP位址為173.16.16.173,對應的各虛拟主機名均屬于51cto.com域,如2009.blog.51cto、xxx..blog.51cto等,在DNS區域“51cto.com”的位址資料庫最後一行可添加如下圖的泛域名解析記錄。
* IN A 192.168.1.1
3>.子域授權(或委派)
當DNS區域内層次較多,域名數量巨大時,就可以使用子域授權,将某個子域内各域名的解析工作交給另外一台伺服器來完成。
<b>例如:</b>在DNS區域“.doubao.com”的位址資料庫檔案中設定子域授權,将“abc.doubao.com”子域授權給abc公司的DNS伺服器(IP位址為192.168.1.1)如下面的設定即可.
好了,在進行了上述的了解後,我們來進行下列的實驗:
<b>實驗部分:</b>
<b>1、 </b><b>規劃</b><b>:</b>
我們假設在網際網路上建立了主機為doubao.com;IP位址網段為172.16.111.0/24這個網段;
ns 172.16.111.1 //ns伺服器的位址
www 172.16.111.1,172.16.111.3
mail 172.16.111.2 //郵件伺服器
ftp www //ftp為www的别名
<b>1、</b><b>BIND</b><b>的安裝:</b>
首先要注意的是當用yum list all | grep “^bind”時,要注意安裝的bind版本需要一緻
<a target="_blank" href="http://blog.51cto.com/attachment/201304/130655699.jpg"></a>
由于我的bind已經安裝好,我大緻說下需要的步驟(涉及到解除安裝以前的版本這裡不再去進行安裝)rpm –e bin-libs bin-utils //解除安裝以前的舊版本
yum install bind97-libs bind97-utils //安裝libs和utils 其中的libs檔案是bind需要依賴的庫檔案,安裝時要一同安裝:
yum install bin97 –y //安裝bind97
rpm –ql bin97-utils //可以檢視一下utils包給我們提供的工具,其中的前四個是用戶端非常重要的指令行工具,
<a target="_blank" href="http://blog.51cto.com/attachment/201304/130730302.jpg"></a>
dig //到域名伺服器中查找其相關資訊
-t 指定資源記錄類型并指明通過哪個伺服器來查詢能得到很多
<b>2</b><b>、配置相關的檔案</b>
配置named.conf檔案
mv /etc/named.conf /etc/named.conf.org //備份下原來的檔案,
vim /etc/named.conf //配置自己的named.conf
options { //注意花括号前要有空格
directory “/var/named”; //每個語句後邊都要有分号
};
zone “.” IN { //定義根
type hint;
file “named.ca”
zone “localhost” IN { //定義正向DNS區域
type hint;
file “named.localhost”;
zone “0.0.127.in-addr.arpa” IN { //定義反向DNS區域
type master;
file “named.loopbak;
};
:wq //儲存退出
注意:基本上這樣一個檔案就定義好緩存伺服器的配置了!
接下來我們來改變其屬組屬主和其檔案權限
chown root:named /etc/named.conf
chmod 640 /etc/named.conf
named-checkconf //檢查文法錯誤
named-checkzone ‘.’ /var/named/named.ca //檢查zone配置
named-checkzone ‘localhost’ /var/named/named. localhost
named-checkzone ‘0.0.127.in-addr.arpa’ /var/named/named.loopback
這個時候,先确定下SELnux是否在啟動中,如啟動了得現将其關閉:
getenforce
Enforcing //開啟狀态 Permissive//關閉狀态
setenforce 0 //關閉 //臨時關閉
setenforce 1 //開啟
“久生效
# vim /etc/selinux/config
将其中的SELINUX=enforcing替換為SELINUX=permissive,替換後不會立即生效”
service network restart //重新開機網絡服務
<a target="_blank" href="http://blog.51cto.com/attachment/201304/130826365.jpg"></a>
然後用netstat來檢視DNS服務是否真的啟動起來了:
下圖可以看到其53号端口已經打開
<a target="_blank" href="http://blog.51cto.com/attachment/201304/130921226.jpg"></a>
然後編輯/etc/resolv.conf檔案,将其ip位址改為172.16.111.1
這個時候,一個DNS的緩存伺服器已經建立好了!
<a target="_blank" href="http://blog.51cto.com/attachment/201304/131007320.jpg"></a>
<b>3</b><b>、建立網際網路伺服器</b>
2步驟中,我們已經建立好了一個DNS緩存伺服器,根據我們剛準備建立的doubao.com。我們來進行下面的操作
我們來編輯/etc/named.conf追加新的區域:
zone "doubao.com" IN { //正向解析
type master;
file "doubao.com.zone";
zone "111.16.172.in-addr.arpa" IN { //反向解析
file "172.16.111.zone";
因為兩個zone的檔案還沒有建立,是以我們要到var/named/下建立兩個檔案
cd /var/named
vim doubao.com.zone
$TTL 600 /定義TTL值,以便後邊簡寫
doubao.com. IN SOA ns1.doubao.com. admin.doubao.com.
20120401
1H
5M
2D
6H)
doubao.com. IN NS ns1.doubao.com
MX IN MX 10 mail.doubao.com.
ns1 IN A 172.16.111.1
mail IN A 172.16.111.2
www IN A 172.16.111.1
www IN A 172.16.111.3
ftp IN CNAME www
出來改其權限屬組
chmod 640 doubao.com.zone
chown root:named doubao.com.zone
named-checkzone “doubao.com” /var/named/doubao.com.zone
vim 172.16.111.zone
@ IN SOA ns1.doubao.com. admin.doubao.com. (
2013040101
1H
5M
2D
6H )
@ IN NS ns1.doubao.com.
1 IN PTR ns1.doubao.com.
1 IN PTR www.doubao.com.
2 IN PTR mail.doubao.com.
3 IN PTR www.doubao.com.
出來改其權限屬組
chmod 640 172.16.111.zone
chown root:named 172.16.111.zone
named-checkzone “doubao.com” /var/named/172.16.111.zone
到這裡,我們已經建立好了。是以此刻我們可以重新開機網絡服務了!
sercive network restart
然後可以dig檢視或者nslookup檢視
<a target="_blank" href="http://blog.51cto.com/attachment/201304/131152690.jpg"></a>
本文轉自 陳延宗 51CTO部落格,原文連結:http://blog.51cto.com/407711169/1170978,如需轉載請自行聯系原作者