建構主從DNS伺服器
實驗背景:
公司注冊了DNS區域tarena.com,準備使用兩台RHEL5伺服器建構主、從域名系統,其中任何一台都能夠解析tarena.com域内的主機位址。
1.主DNS伺服器:svr5.tarena.com,192.168.4.5 。
2.從DNS伺服器:svr6.tarena.com,192.168.4.6 。
3.負責解析以下站點:
網站:www.tarena.com ? 192.168.4.100
郵件:mail.tarena.com ? 192.168.4.25
FTP:是www的别名
4.為*.tarena.com提供泛域名解析:192.168.4.100 。
實驗方案:
使用2台RHEL 5虛拟機,其中一台作為主DNS伺服器(192.168.4.5)、另外一台作為從DNS伺服器(192.168.4.6),兩台RHEL 5虛拟機及Windows真機都可作為DNS客戶機執行測試。
實驗實作:
1.認識Linux中的bind域名服務軟體包
BIND不是唯一能夠提供域名服務的DNS服務程式,卻是應用最為廣泛的,BIND可以運作在大多數UNIX/Linux主機中。其官方站點位于https://www.isc.org/。
1)安裝bind相關的軟體包
RHEL 5系統CD光牒自帶了BIND服務的安裝檔案,主要包括以下軟體包:
bind-9.3.6-20.P1.el5_8.5.x86_64.rpm
bind-chroot-9.3.6-20.P1.el5_8.5.x86_64.rpm
bind-libs-9.3.6-20.P1.el5_8.5.x86_64.rpm
bind-utils-9.3.6-20.P1.el5_8.5.x86_64.rpm
caching-nameserver-9.3.6-20.P1.el5_8.5.x86_64.rpm
#rpm -ivh bind-9.3.6-20.P1.el5_8.5.x86_64.rpm bind-chroot-9.3.6-20.P1.el5_8.5.x86_64.rpm caching-nameserver-9.3.6-20.P1.el5_8.5.x86_64.rpm //安裝三個軟體包
2)了解bind、bind-chroot的配置路徑
# rpm -qc bind
/etc/dbus-1/system.d/named.conf /etc/logrotate.d/named /etc/named.conf //域名服務主配置檔案 /etc/rc.d/init.d/named
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named //服務程式named的選項配置檔案 /usr/share/dbus-1/services/named.service
# grep "^ROOTDIR" /etc/sysconfig/named //檢視真正的配置根目錄ROOTDIR=/var/named/chroot
從上述定義可看出,服務程式named的主配置檔案最好存放到/var/named/chroot/etc目錄下,檔案名為named.conf:
3)
# chkconfig --list named //設定服務開機自啟動
2.搭建主DNS伺服器(192.168.4.5)
1)建構主配置檔案named.conf
直接用vim編輯器建立,存放到/var/named/chroot/etc/目錄下:
#cd /var/named/chroot/etc
#cp -p named.caching-nameserver.conf named.conf//複制模闆,保留權限不變
# vim ./etc/named.conf
2.options { //定義全局選項
3.directory "/var/named"; //區域資料檔案的預設存放位置
4.allow-transfer { 192.168.4.6; }; //授權從DNS伺服器
5.};
6.zone "tarena.com" IN { //定義正向解析區域
7.type master; //類型為主區域
8.file "tarena.com.zone"; //本區域的位址資料檔案
9.};
10.zone "4.168.192.in-addr.arpa" IN { //設定反向解析區域(不是必需的,可選)
11.type master;
12.file "192.168.4.arpa";
13.};
2)建立區域位址檔案(正向域tarena.com)
直接用vim編輯器建立,存放到/var/named/chroot/var/named/目錄下:
#cd ..//回到上一級目錄chroot
#cd ./var
#cp named.local tarena.com.zone
#vim /var/named/chroot/var/named/tarena.com.zone
2.$TTL 86400 //有效記錄的生存周期
3.@ IN SOA tarena.com. admin.tarena.com. ( //@表示目前tarena.com,
admin.tarena.com 表示郵箱,@變成了點.
4.2013101601 //更新序号
5.3H //重新整理時間
6.15M //重試間隔
7.1W //失效時間
8.1D //無效記錄的生存周期
9.)
10.@ IN NS svr5.tarena.com. //本域的DNS伺服器位址
11. IN NS svr6.tarena.com. //本域的DNS伺服器位址
12. IN MX 10 mail.tarena.com. //本域的郵件伺服器位址
13. IN A 192.168.4.100 //本域的預設IP位址
14.svr5 IN A 192.168.4.5 //A主機記錄
15.svr6 IN A 192.168.4.6
16.www IN A 192.168.4.100
17.mail IN A 192.168.4.25
18.ftp IN CNAME www //CNAME别名記錄
19.* IN A 192.168.4.100 //*泛域名解析
3)建立區域位址檔案(反向域4.168.192.in-addr.arpa)
#cp -p tarena.com.zone 192.168.4.arpa
#vim 192.168.4.arpa//這裡編輯的還是/var/named/chroot/var/named/192.168.4.arpa
2.$TTL 86400
3.@ IN SOA tarena.com. admin.tarena.com. (
10.@ IN NS svr5.tarena.com.
11. IN NS svr6.tarena.com.
12.5 IN PTR svr5.tarena.com.
13.6 IN PTR svr6.tarena.com.
14.25 IN PTR mail.tarena.com.
15.100 IN PTR www.tarena.com.//反向解析
4)檢查配置檔案是否正确
# named-checkconf etc/named.conf //沒有錯誤不提示
# named-checkzone tarena.com var/named/tarena.com.zone //沒有錯誤提示ok
# named-checkzone 4.168.192.in-addr.arpa var/named/192.168.4.arpa
5)啟動named服務,并在本機測試DNS解析是否符合預期
# service named restart //重新開機named服務
# vim /etc/resolv.conf //修改本機的DNS設定檔案:
nameserver 192.168.4.5 //首選DNS指向主DNS伺服器
測試正向解析,都與預期的結果一緻:
1.[root@svr5 ~]# host svr5.tarena.com
2.svr5.tarena.com has address 192.168.4.5
3.[root@svr5 ~]# host svr6.tarena.com
4.svr6.tarena.com has address 192.168.4.6
5.[root@svr5 ~]# host mail.tarena.com
6.mail.tarena.com has address 192.168.4.25
7.[root@svr5 ~]# host www.tarena.com
8.www.tarena.com has address 192.168.4.100
測試反向解析(抽查),也都與預期的結果一緻:
1.[root@svr5 ~]# host 192.168.4.5
2.5.4.168.192.in-addr.arpa domain name pointer svr5.tarena.com.
3.[root@svr5 ~]# host 192.168.4.25
4.25.4.168.192.in-addr.arpa domain name pointer mail.tarena.com.
測試泛域名解析(查詢幾個不存在的域名),也都正确給出結果:
1.[root@svr5 ~]# host abc.tarena.com
2.abc.tarena.com has address 192.168.4.100
3.[root@svr5 ~]# host xxyyzz.tarena.com
4.xxyyzz.tarena.com has address 192.168.4.100
3.搭建從DNS伺服器(192.168.4.5)
在從DNS伺服器上,主配置檔案named.conf的内容大部分與主DNS伺服器上相同,是以隻要複制過來稍加改動即可,建議采用scp遠端複制:
# cd /var/named/chroot/etc/ //切換到主配置目錄
# scp [email protected]:/var/named/chroot/etc/named.conf ./
//遠端複制,保留到目前目錄下
2) 對複制過來的named.conf進行修改——去掉主DNS配置的allow-transfer授權,将正、反向區域的類型改為slave,并添加masters配置指定主DNS伺服器:
# vim /var/named/chroot/etc/named.conf
2.options {
3.directory "/var/named";
4.#allow-transfer { 192.168.4.6; }; //移除此行授權配置
6.zone "tarena.com" IN {
7.type slave; //區域類型改為slave
8.file "slaves/tarena.com.zone"; //改為儲存到slaves/子目錄下
9.masters { 192.168.4.5; }; //指定主DNS伺服器的位址
10.};
11.zone "4.168.192.in-addr.arpa" IN {
12.type slave; //區域類型改為slave
13.file "slaves/192.168.4.arpa"; //指定主DNS伺服器的位址
14.masters { 192.168.4.5; }; //改為儲存到slaves/子目錄下
15.};
因為named服務程式的預設運作身份是named使用者,當從DNS伺服器自動從主DNS伺服器下載下傳區域位址資料檔案後,需要有本地寫入權限才能儲存成功。預設情況下,子目錄是專為主從同步準備的,named使用者有權限寫入:這裡的權限錯誤頁容易出錯,需要注意
2)建立區域位址檔案
對于從DNS伺服器來說,此步驟不需要做(因為會自動從主DNS伺服器下載下傳)。
在從DNS伺服器的named服務未啟動之前,沒有(也不需要有)區域位址檔案:
3)啟動named服務,确認已成功從主DNS伺服器下載下傳區域位址檔案
檢查slaves/目錄,可發現已自動下載下傳正、反向區域位址檔案:
#ls -l /var/named/chroot/var/named/slaves/
如果前面忘記将存放位置改成slaves/目錄下,則極可能因為無權限寫入而導緻區域檔案下載下傳失敗,此時檢查從DNS的日志應發現類似下列的提示:
dumping master file: tmp-MoaX2hDvPO: open: permission denied //導出檔案到本地時被拒絕
Oct 16 15:54:39 svr6 named[16371]: transfer of 'tarena.com/IN' from 192.168.4.5#
53: failed while receiving responses: permission denied
//最終回報:通路被拒絕
隻要修正存放位置或解決named使用者的寫入權限問題,故障就會解決了。
4)在從DNS伺服器本機測試DNS解析是否符合預期
測試操作與前面類似,使用host或nslookup都可以。
修改本機的DNS設定檔案:
# vim /etc/resolv.conf //此處容易忘記修改從伺服器的dns配置檔案,不修改時解析不出來的
抽查正向解析,與預期結果一緻:
1.[root@svr6 ~]# host www.tarena.com
2.www.tarena.com has address 192.168.4.100
3.[root@svr6 ~]# host svr5.tarena.com
4.svr5.tarena.com has address 192.168.4.5
抽查反向解析,與預期結果一緻:
1.[root@svr6 ~]# host 192.168.4.5
3.[root@svr6 ~]# host 192.168.4.25
測試泛域名解析,也能正确得出結果(192.168.4.100):
1.[root@svr6 ~]# host abc.tarena.com
3.[root@svr6 ~]# host xxyyzz.tarena.com
4.主、從DNS解析整體測試
1)修改客戶機的DNS伺服器指向
在主機192.168.4.5上,指定首選、輔助DNS伺服器:
# vim /etc/resolv.conf
2.search localdomain
3.nameserver 192.168.4.5 //首選DNS伺服器
4.nameserver 192.168.4.6 //輔助DNS伺服器
在主機192.168.4.5上,也指定首選、輔助DNS伺服器:
1.[root@svr6 ~]# vim /etc/resolv.conf
3.nameserver 192.168.4.6 //首選DNS伺服器
4.nameserver 192.168.4.5 //輔助DNS伺服器
實驗總結:
1 此實驗中尤其需要注意路徑,本實驗的各種路徑都是在/var/named/chroot/下的var和etc目錄下操作的
,在切換路徑的時候習慣性的在前面加上/ ,這樣就切換到根下了,是不正确的。
2 正向解析式最後的tarena.com. 後面的.不要忘記
3 要解析出dns伺服器,還不要忘記修改/etc/resolve.conf檔案,添加本機的namesearch
4 如果還是解析不出來,可以檢視/var/log/message 檢視日志,日志中有的會提醒...denied 表示檔案的 屬性改變了,配置檔案和區域配置檔案的所屬組應該是named,檢視這幾個檔案的權限,如果是boot該為 named
例:chgrp named /var/named/chroot/etc/named.conf
chgrp named /var/named/chroot/var/named/tarena.com.zone
chgrp named /var/named/chroot/etc/192.168.4.arpa
5 named.conf 的檢查指令是:named-checkconf ./etc/named.conf
區域檔案的檢查指令是: named-checkzone tarena.com ./var/named/tarena.com.zone
named-checkzone tarena.com ./var/named/192.168.4.arpa
每次配置完,用檢查指令接着檢查下,剛剛配置的是否正确
6。在設定别名的時候,IN之後的A改為CNAME,去掉A不要保留着,這裡自己容易忘記删除A
7.從dns伺服器要想從主伺服器上擷取資訊,首先要保證他們2個之間是能ping通的,解析不出也有可能是2個伺服器之間不能ping通
8.在編輯各個配置檔案的時候要注意标點符号的遺漏,像; ,在}外有;,不要遺漏
9 要學會用日志來檢查出錯資訊,要留意出錯時的錯誤提示資訊,根據提示資訊去找出錯誤并改正。
10 DNS使用端口 tcp/udp 53
11DNS負載均衡--同一個域名對應多個ip位址
12泛域名解析中有規律時的設定:
$GENERATE 1-200 station$ INA 192.168.4.$//正向解析
$GENERATE 1-200$INAstation$.tarena.com.//反向解析