DNS服務的配置.
DNS的簡介:
DNS和BIND的關係:DNS是一種網路通信的名稱.BIND是提供DNS服務的軟體.DNS使用TCP和UDP的53號埠,一般情況下為了查詢速度使用的是
UDP53埠.正向解析就是輸入域名解析到IP地址,反向解析就是輸入IP 地址解析到域名.正向解析和反向解析一般不需要配套配置,也就是說有一個正向解析不一定非要一個反向解析.事實上,需要正反解析成對的僅有郵件伺服器.DNS的搜索流程:
當我們在瀏覽器中輸入一個網址時,計算機是怎樣查找到一個IP地址的呢?首先,計算機會查找緩存,如果緩存沒有,那麼查找hosts文件(linux中這個文件對應的是
/etc/hosts),如果hosts文件也沒有的話,那麼就向頂域查找(根域),如果根域沒有就會向該主機提供二級域的IP地址,然後主機再向二級域查找,如果二級域還不能查到,二級域就會向主機提供三級域的IP地址,然後主機再向三級域查找……,直到查找完成.當查找到后,主機會把該域名和IP地址的映射關係存入到緩存中,以便下一次對同一主機名稱的查詢請求,默認會在緩存中保留24小時.DNS基本配置:
第一步:安裝軟體:
[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-9.3.4-10.P1.el5.i386.rpm
DNS伺服器的主程序.
[root@localhost ~]# rpm –ivh /misc/cd/Server/bind-chroot-9.3.4-10.P1.el5.i386.rpm
將bind目錄關在一個目錄裡面在.
[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-utils-9.3.4-10.P1.el5.i386.rpm
DNS服務的工具包.
[root@localhost ~]# rpm -ivh /misc/cd/Server/caching-nameserver-9.3.4-10.P1.el5.i386.rpm
DNS緩存.
第二步:編輯配置文件:
[root@localhost ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf
修改如下內容:(一個IP,三個any.)
listen-on port 53 { 192.168.100.200; }; //修改為本機IP地址.
allow-query { any; };
//允許所有人查詢.match-clients { any; }; //允許任意客房端.
match-destinations { any; }; //允許任意目標.
編輯區域文件:
[root@localhost ~]# vi /var/named/chroot/etc/named.rfc1912.zones
新建一個正向rhel.com區域:
zone "rhel.com" IN {
type master; //設置主從.
file "rhel.com.zone"; //配置文件的名稱.
allow-update { none; };
};
編輯區域配置文件:
[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# cp -p localhost.zone rhel.com.zone
//一定要加-p這個參數,否則發現不能解析,-p是複製后不更改文件的許可權.[root@localhost named]# vi rhel.com.zone
$TTL 86400
@ IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M
; retry1W ; expiry
1D ) ; minimum
IN NS @
IN A 127.0.0.1
IN AAAA ::1
www IN A 192.168.100.200
配置文件詳解:
$TTL 86400 表示默認的TTL值.(單位:秒)
@ IN SOA @ root (
第一個@表示區域,第二個@表示主機名,SOA是主從認證、授權方面的記錄,root是管理員郵箱,如果管理員郵箱是
root@rhel.com,在這裡可以寫成root,如果寫全就是root.rhel.com,@在這裡表示本機的意思,就以.代替.SOA的五個參數的含義:
42 // serial,這是一個序列號,主從之間更新的依據.
3H // refresh,更新時間,從伺服器多久主動請求更新一次.
15M // retry,重試時間,當從伺服器更新失敗后,多久再更新.
1W // expiry,失效時間,當從伺服器多長時間沒有成功更新時,就不再更新.
1D // minimum,相當於TTL值.
這幾個參數的大小限制如下:
serial<=2^32=4294967296
refresh>=retry*2
refresh retry<expiry
expiry>=retry*10
expiry>=7 day
IN NS @ //NS記錄,後面跟域名伺服器的名稱.@代表本機.前面的@可以省略.
www IN A 192.168.100.200 //主機記錄.
新建一個反向rhel.com區域:
[root@localhost ~]# vi /var/named/chroot/etc/named.rfc1912.zones
zone "100.168.192.in-addr.arpa" IN {
type master;
file "in-addr.rhel.com.zone";
allow-update { none; };
};
[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# cp -p named.local in-addr.rhel.com.zone
[root@localhost named]# vi in-addr.rhel.com.zone
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
200 IN PTR www.rhel.com.
1 IN PTR mail.rhel.com
這裡和正向區域的配置基本一樣,只是多了一條PTR記錄.
PTR的格式:前面是對應的IP地址,後面是主機名.
第三步:配置完成,重啟服務.
[root@localhost named]# service named restart
第四步:測試:
在windows下:
D:\Users\chenbin>nslookup
默認伺服器: UnKnown
Address: 202.43.150.244
> server 192.168.100.200 //更改DNS伺服器
DNS request timed out.
timeout was 2 seconds.
默認伺服器: [192.168.100.200]
Address: 192.168.100.200
> www.rhel.com
伺服器: [192.168.100.200]
Address: 192.168.100.200
名稱: www.rhel.com
Address: 192.168.100.200
> mail.rhel.com
伺服器: [192.168.100.200]
Address: 192.168.100.200
名稱: mail.rhel.com
Address: 192.168.1.1
已經成功解析.或者這樣測試:nslookup mail.rhel.com.但這樣不能指定DNS伺服器的地址(或者是我不知道而已).
清除DNS緩存:
D:\Users\chenbin>ipconfig /flushdns
Windows IP 配置
已成功刷新 DNS 解析緩存.
在linux下:
首先,設置DNS伺服器地址:
[root@linux3 ~]# vi /etc/resolv.conf
nameserver 192.168.100.200 //添加DNS SERVER地址.
使用nslookup測試:
[root@linux3 ~]# nslookup
> mail.rhel.com
Server: 192.168.100.200
Address: 192.168.100.200#53
Name: mail.rhel.com
Address: 192.168.1.1
同樣也可以使用 server命令更改dns地址.
> server 192.168.100.1
Default server: 192.168.100.1
Address: 192.168.100.1#53
使用dig測試:
[root@linux3 ~]# dig mail.rhel.com
; <<>> DiG 9.3.4-P1 <<>> mail.rhel.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27292
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; QUESTION SECTION:
;mail.rhel.com. IN A
;; ANSWER SECTION:
mail.rhel.com. 86400 IN A 192.168.1.1
;; AUTHORITY SECTION:
rhel.com. 86400 IN NS rhel.com.
;; ADDITIONAL SECTION:
rhel.com. 86400 IN A 127.0.0.1
rhel.com. 86400 IN AAAA ::1
;; Query time: 16 msec
;; SERVER: 192.168.100.200#53(192.168.100.200)
;; WHEN: Wed Apr 7 07:09:28 2010
;; MSG SIZE rcvd: 105
使用host命令:
[root@linux3 ~]# host mail.rhel.com
mail.rhel.com has address 192.168.1.1
[root@linux3 ~]# host 192.168.100.200
200.100.168.192.in-addr.arpa domain name pointer www.rhel.com.
DNS的主輔伺服器配置:
為了不間斷的提供DNS查詢,我們需要兩台以上的
DNS伺服器,如果有多個DNS伺服器,一般只要一台Master DNS,其他的都為Slave DNS伺服器,Slave DNS沒有資料庫,它的資料庫是由Master DNS提供.主、輔伺服器之間必需能夠相互傳送區域文件信息.第一步:配置主DNS伺服器.
剛才已經配置好了主DNS伺服器,這裡就省略.
第二步:配置輔
DNS伺服器.安裝軟體:
[root@linux3 ~]# cd /misc/cd/Server/
[root@linux3 Server]# rpm -ivh bind-9.3.4-10.P1.el5.i386.rpm
[root@linux3 Server]# rpm -ivh caching-nameserver-9.3.4-10.P1.el5.i386.rpm
[root@linux3 Server]# rpm -ivh bind-chroot-9.3.4-10.P1.el5.i386.rpm
修改配置文件:
[root@linux3 ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf
listen-on port 53 { 192.168.100.201; }; //修改為本機地址.監聽這個地址的53埠.
allow-query { any; };
match-clients { any; };
match-destinations { any; };
新建區域:
[root@linux3 ~]# vi /var/named/chroot/etc/named.rfc1912.zones
zone "rhel.com" IN {
type Slave; //設為輔伺服器.
file "slaves/rhel.com.zone"; //別忘了前面的slaves.還有後面的
s.Masters {192.168.100.200;}; //指定主伺服器.
allow-update { none; };
};
zone "100.168.192.in-addr.arpa" IN {
type Slave;
file "slaves/in-addr.rhel.com.zone";
Masters {192.168.100.200;};
allow-update { none; };
};
輔伺服器的區域配置文件是從主伺服器上複製過來的,這裡就不需要區域配置文件了.
重啟服務:
[root@linux3 named]# service named restart
測試:(以windows為例)
D:\Users\chenbin>nslookup
默認伺服器: www.rhel.com
Address:
192.168.100.200> server 192.168.100.201
默認伺服器: [192.168.100.201]
Address: 192.168.100.201
> mail.rhel.com
伺服器: [192.168.100.201]
Address: 192.168.100.201
名稱: mail.rhel.com
Address: 192.168.1.1
DNS轉發伺服器的配置:
使用forward 和forwarders設置轉發.forward用於指定轉發方式,forwarders用於指定要轉發到的伺服器.轉發方式有兩種,一種是forward first,這是默認轉發方式,當有查詢請求時,首先轉發到forwarders設置的轉發器查詢,如果查詢不到,則再到本地伺服器上查詢;另一種是forward only,當有查詢請求時,只轉發到forwarders設置的轉發器查詢,查詢不到也不在本地查詢.
forwarders後面跟的是要轉發到的伺服器地址,如有多個地址,則用分號隔開.在所有區域上轉發:
[root@linux3 named]# vi /var/named/chroot/etc/named.caching-nameserver.conf
在選項里添加:
options {
listen-on port 53 { 192.168.100.201; };
listen-on-v6 port 53 { ::1; };
forwarders {192.168.100.200;}; //
如有多個地址用分號隔開.重啟服務后測試:
> mail.rhel.com
伺服器: [192.168.100.201]
Address: 192.168.100.201
非權威應答: //注意這裡,不是本機查找到的會有這個非權威應答.
名稱
: mail.rhel.comAddress: 192.168.1.1
在單個區域轉發:
新建一個轉發區域:
[root@linux3 named]# vi /var/named/chroot/etc/named.rfc1912.zones
zone "rhel.com"IN{
type forward;
forwarders {192.168.100.200;};
};
重啟服務后測試.
DNS的子域授權配置:
配置主伺服器.
[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-9.3.4-10.P1.el5.i386.rpm
[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-chroot-9.3.4-10.P1.el5.i386.rpm
[root@localhost ~]# rpm -ivh /misc/cd/Server/caching-nameserver-9.3.4-10.P1.el5.i386.rpm
[root@localhost ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf
[root@localhost ~]# vi /var/named/chroot/etc/named.rfc1912.zones
[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# cp -p localhost.zone rhel.com.zone
[root@localhost named]# vi rhel.com.zone
添加如下幾行:
xyz IN NS xyz.rhel.com //xyz.rhel.com區域的解析由xyz.rhel.com主機來完成..
xyz IN A 192.168.100.201 //添加主機IP地址.
www IN A 192.168.100.200
mail IN A 192.168.100.1
子域的配置:
[root@linux3 ~]# rpm -ivh /misc/cd/Server/bind-9.3.4-10.P1.el5.i386.rpm
[root@linux3 ~]# rpm -ivh /misc/cd/Server/bind-chroot-9.3.4-10.P1.el5.i386.rpm
[root@linux3 ~]# rpm -ivh /misc/cd/Server/caching-nameserver-9.3.4-10.P1.el5.i386.rpm
[root@linux3 ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf
[root@linux3 ~]# vi /var/named/chroot/etc/named.rfc1912.zones
[root@linux3 ~]# cd /var/named/chroot/var/named/
[root@linux3 named]# cp -p localhost.zone xyz.rhel.com.zone
[root@linux3 named]# vi xyz.rhel.com.zone
www IN A 192.168.100.201
mail IN A 192.168.10.10
添加兩條A記錄.
重啟服務后測試.
DNS常用命令:
ipconfig /flushdns //在windows系統下清除DNS緩存.
rndc flush //在liunx下清除DNS緩存.
nslookup //可用於在
windowst和linux下測試DNS.dig //用於在linux下測試DNS.
host //用於在linux下測試DNS.
service named restart //重啟DNS服務.
service named status //查看
DNS狀態.netstat –ln //查看DNS的埠狀態.
DNS排錯:
一、 如果所有都做正確后,發現不能解析,看是不是防火牆的問題,把防火牆關閉再試試,曾經這個差點放棄了才想起來.
二、
從伺服器的區域文件是放在/var/named/chroot/var/named/slaves目錄下的,在新建區域時,區域文件前要加個slaves,不要忘了後面的s.三、 要注意寫主機名的時候別忘了後面的.了,這很重要.
四、 如果遇到不能解析時,也許是DNS緩存在做怪.
五、 如果遇到不能解析時,也許是複製區域配置文件時忘了加-p參數了,引起許可權問題.
[火星人 ] LINUX-DNS配置已經有672次圍觀