DNS

 實驗:有三臺服務器,Master主服務器(192.168.184.132)也做轉發服務器,Slave從服務器(192.168.184.134),子域名服務器(192.168.184.135)
把Master的數據全部複製到Slave的數據,然後通過Master的做轉發,子域名授權。
 
一、DNS解析原理:
在瞭解解析原理之前,先了解一下DNS的端口號,基於UDP和TCP的端口號都是53,一般查詢用的是UDP/53,一般區域傳送用的是TCP /53,可以用netstat -tulnp進行查看,DNS在服務器上運行的進程名叫named,對應的軟件包名叫bind,我們這裏只安裝bind97(97表示版本 號),bind97-libs,bind97-utils.
說一下原理:
1、客戶端查詢本地的/etc/hosts文件,看是否有相應的
2、查詢本地dns緩存
3、根據/etc/resolv.conf指定的第一臺nameserver查詢
查詢dns是否是自己負責的區域,如果是的,則無條件響應,aa表示權威答案,返回給客戶端如果不是dns所負責的區域名,並看一下是否允許遞歸,如果允許,就提交給根,然後通過一系列的迭代,最近返回給客戶端,並把數據緩存在本地的dns中
 
 
二、資源記錄類型:
1、SOA
SOA稱爲起始授權記錄,SOA定義了域的全局參數,進行整個域的管理設置,一個區域文件只允許存在唯一
SOA記錄
2、NS
NS稱爲名稱服務器,記錄在一個區域至少有一條,記錄了某個區域名的授權服務器
3、A
A稱爲地址記錄,把FQDN映射到IP地址,A記錄可以有多個
4、CNAME
CNAME稱爲別名記錄
5、PTR
PTR稱爲反向地址記錄,跟A記錄相反,把IP地址映射爲FQDN
6、MX
MX稱爲郵件交換記錄,用於郵件服務器,如果這個記錄沒有做客戶端無法收取郵件
 
三、主反向解析的配置
 安裝DNS相關軟件包
1、DNS的軟件包名字爲bind,由於版本有很多種,請自己到DNS官方網站www.isc.org下載自己所需要的版本,
我們所安裝的版本已經在上面說過了,使用bind97版本
yum -y install bind97 bin97-libs bind97-utils
 
安裝好以後請用rpm -qa |grep bind進行查詢一下
[root@localhost ~]# rpm -qa |grep bind
bind97-9.7.0-6.P2.el5_7.4
bind97-libs-9.7.0-6.P2.el5_7.4
ypbind-1.19-12.el5_6.1
bind97-utils-9.7.0-6.P2.el5_7.4
我們已經安裝成功
 
bind的啓動,暫停,重新啓動,重新加載,狀態命令
  service named status
  service named status
  service named start
  service named stop
  service named restart
  service named reload
  service named status
bind設置開機啓動
chkconfig named on
chkconfig named --level 2345
 
2、建立主配置文件/etc/named.conf配置
DNS的主配置文件放在/etc/named.conf,區域配置文件放在/var/named/*,注意:我們這裏沒有使用chroot機制
[root@localhost ~]# mv /etc/named.conf /etc/named.conf.bak  /爲了方便我們不用默認安裝的配置文件,我們把它重新命名了,自己重新建立個配置文件/
[root@localhost ~]# touch /etc/named.conf   /這裏重新建立了配置文件/
[root@localhost ~]# vim /etc/named.conf
options { 
 directory "/var/named";
 
 };
 
zone "." IN {
     type hint;   /表示區域類型,這裏是根區域類型/
     file "named.ca";
};
 
zone "test.com" IN {
     type master;
     file "test.com.zone";  /表示正向區域配置/
};
zone "184.168.192.in-addr-arpa" IN {
     type master;
     file "192.168.184.zone"; /表示反向區域配置/
};
 
注意:建立好配置文件以後不要忘記改屬主和權限
[root@localhost ~]# chown :named /etc/named.conf
[root@localhost ~]# chmod 640 /etc/named.conf
 
[root@localhost ~]# named-checkconf /etc/named.conf  /named-checkconf是用於檢查主配置文件是否有錯誤的命令/
 
 
3、建立區域文件並配置
建立區域文件
[root@localhost ~]# touch /var/named/named.ca /默認這個文件已經存在的/
[root@localhost ~]# touch /var/named/test.com.zone
[root@localhost ~]# touch /var/named/192.168.184.zone
 
修改屬主與權限
[root@localhost named]# chown :named named.ca test.com.zone 192.168.184.zone 
[root@localhost named]# chmod 640 named.ca test.com.zone 192.168.184.zone 
 
配置區域文件
1、named.ca的配置,由於這個文件是根,我們用一個命令直接生成就可以了
[root@localhost named]# dig -t NS . @A.ROOT-SERVERS.NET. > /var/named/named.ca
注意:查看以後裏面是全球的13臺根服務器你可以用cat /var/named/named.ca進行查詢一下,這裏的文件不需要任何的更改
 
2、test.com.zone的配置(正向解析)
$TTL 600
@       IN      SOA     ns.test.com.    admin.test.com. (
                                        2012061601
                                        30M
                                        5M
                                        3D
                                        1D
)
 
@       IN      NS      ns.test.com.
ns      IN      A       192.168.184.132
@       IN      A       192.168.184.132
www     IN      A       192.168.184.132
mail    IN      A       192.168.184.132
@       IN      MX 5    mail.test.com.
 
[root@localhost named]# named-checkzone "test.com" /var/named/test.com.zone  /named-checkzone檢查區域文件是否有語法錯誤/
zone test.com/IN: loaded serial 2012061601
OK
 
 
3、192.168.184.zone的配置(反向解析)
[root@localhost named]# vim 192.168.184.zone 
 
$TTL 600
@       IN      SOA     132.184.168.192.in-addr.arpa.   admin.test.com. (
                                        2012061601
                                        30M
                                        5M
                                        3D
                                        1D
)
@       IN      NS      ns.test.com.
132     IN      PTR     ns.test.com.
131     IN      PTR     mail.test.com.
132     IN      PTR     test.com.
133     IN      PTR     www.test.com.
 
[root@localhost named]# named-checkzone "184.168.192.in-addr-arpa" /var/named/192.168.184.zone 
zone 184.168.192.in-addr-arpa/IN: loaded serial 2012061601
OK
 
重啓DNS
[root@localhost named]# service named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]
 
最後進行驗證:
 
正向解析驗證
dig -t A test.com
dig -t A www.test.com
dig -t MX test.com 
注意:在驗證之前把/etc/resolve.conf文件改變本地ip地址,或者也不用改用dig -t A www.test.com @192.168.184.132
 
反向解析驗證
dig -x 192.168.184.132
 
 
四:從服務器的配置(192.168.184.134)
1、安裝DNS軟件
yum -y install bind97 bin97-libs bind97-utils
安裝好以後請用rpm -qa |grep bind進行查詢一下
[root@localhost ~]# rpm -qa |grep bind
bind97-9.7.0-6.P2.el5_7.4
bind97-libs-9.7.0-6.P2.el5_7.4
ypbind-1.19-12.el5_6.1
bind97-utils-9.7.0-6.P2.el5_7.4
我們已經安裝成功
 
 
重點說明:配置slave服務器只要配置/etc/named.conf主配置文件就可以了,配置完成以後它會從master服務器把區域文件複製過來
在/var/named/slave可以看到相關的區域文件,注意它的權限
[root@localhost named]# ll -ld /var/named/slaves/
drwxrwx--- 2 named named 4096 Nov 17  2011 /var/named/slaves/
跟上面一樣,我們把/etc/named.conf文件進行刪除,然後我們用scp複製192.168.184.132(master服務器)的主配置文件/etc/named.conf
 
[root@localhost named]# scp 192.168.184.132:/etc/named.conf /etc/named.conf
The authenticity of host '192.168.184.132 (192.168.184.132)' can't be established.
RSA key fingerprint is 29:1e:da:fe:9d:8f:63:ed:81:24:75:cc:f8:fd:8c:b3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.184.132' (RSA) to the list of known hosts.
 
[email protected]'s password: 
named.conf                                                                                100%  256     0.3KB/s   00:00 
 
複製成功
 
 
2、修改一下屬主
[root@localhost named]# chown :named /etc/named.conf
編輯主配置文件/etc/named.conf
[root@localhost slaves]# vim /etc/named.conf
 
options {
 directory "/var/named";
 
 };
 
zone "." IN {
     type hint;
     file "named.ca";
};
 
zone "test.com" IN {
     type slave; /表示區域類型,這裏是從的,填寫slave/
     masters { 192.168.184.132; };   /這個指定主的ip地址,表示從主這臺服務器複製數據/
     file "slaves/test.com.zone";    /表示從這個主的服務器複製test.com.zone到/var/named/slaves目錄下/
};
zone "184.168.192.in-addr.arpa" IN {
     type slave;  /表示區域類型,這裏是從的,填寫slave/
     masters { 192.168.184.132; };    /這個指定主的ip地址,表示從主這臺主服務器複製數據/
     file "slaves/192.168.184.zone";   /表示從這個主的服務器複製192.168.184.zone到/var/named/slaves目錄下/
};
 
 
修改完以後檢查一下主配置文件是否有語法錯誤:
[root@localhost slaves]# named-checkconf /etc/named.conf
 
3、重啓DNS
[root@localhost named]# service named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]
 
4、查看一下tail -f /var/log/messages日誌
[root@localhost named]# tail -f /var/log/messages 
Jun 15 17:15:57 localhost named[5116]: running
Jun 15 17:15:57 localhost named[5116]: zone 184.168.192.in-addr.arpa/IN: Transfer started.
Jun 15 17:15:57 localhost named[5116]: transfer of '184.168.192.in-addr.arpa/IN' from 192.168.184.132#53: connected using 192.168.184.134#53703
Jun 15 17:15:57 localhost named[5116]: zone 184.168.192.in-addr.arpa/IN: transferred serial 2012061601
Jun 15 17:15:57 localhost named[5116]: transfer of '184.168.192.in-addr.arpa/IN' from 192.168.184.132#53: Transfer completed: 1 messages, 7 records, 222 bytes, 0.041 secs (5414 bytes/sec)
Jun 15 17:15:57 localhost named[5116]: zone 184.168.192.in-addr.arpa/IN: sending notifies (serial 2012061601)
Jun 15 17:15:57 localhost named[5116]: zone test.com/IN: Transfer started.
這裏顯示已經成功複製過去了
 
 
5、最後驗證一下/var/named/slave是否有區域文件
[root@localhost slaves]# ll
total 16
-rw-r--r-- 1 named named 423 Jun 15 17:15 192.168.184.zone
-rw-r--r-- 1 named named 402 Jun 15 17:15 test.com.zone
檢查已經複製過來,可以用/cat 192.168.184.zone查看一下。
[root@localhost slaves]# cat 192.168.184.zone 
$ORIGIN .
$TTL 600 ; 10 minutes
184.168.192.in-addr.arpa IN SOA 132.184.168.192.in-addr.arpa. admin.test.com. (
2012061601 ; serial
1800       ; refresh (30 minutes)
300        ; retry (5 minutes)
259200     ; expire (3 days)
86400      ; minimum (1 day)
)
NS ns.test.com.
$ORIGIN 184.168.192.in-addr.arpa.
131 PTR mail.test.com.
132 PTR ns.test.com.
PTR test.com.
133 PTR www.test.com.
 
 
五、子域名授權服務器和轉發配置(192.168.184.135))
1、首先要到master主(184.132)去修改區域名配置文件vim /var/named/test.com.zone
在裏面加入一條NS記錄:
tech    IN      NS      ns.tech.test.com.
ns.tech IN      A       192.168.184.135
然後重啓DNS:
[root@localhost named]# service named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]
 
 
 
 
2、在子域授權服務器安裝DNS
安裝DNS軟件
yum -y install bind97 bin97-libs bind97-utils
安裝好以後請用rpm -qa |grep bind進行查詢一下
[root@localhost ~]# rpm -qa |grep bind
bind97-9.7.0-6.P2.el5_7.4
bind97-libs-9.7.0-6.P2.el5_7.4
ypbind-1.19-12.el5_6.1
bind97-utils-9.7.0-6.P2.el5_7.4
我們已經安裝成功
 
3、編輯主配置文件/etc/named.conf
[root@bogon named]# vim /etc/named.conf
options {
 directory "/var/named";
forward only;
forwarders { 192.168.184.132; }; /注意這裏設置了轉發服務器184.132/
 };
zone "." IN {
     type hint;
     file "named.ca";
};
 
zone "tech.test.com" IN {
     type master;
     file "tech.test.com.zone";   /注意,這裏改變了,變成子域名了,我們一般做的正向/
};
zone "184.168.192.in-addr.arpa" IN {
     type master;
     file "192.168.184.zone";
};
 
檢查一下配置文件是否有語法錯誤:
[root@bogon named]# named-checkconf /etc/named.conf 
 
 
4、建立區域配置文件tech.test.com.zone
[root@bogon named]# touch tech.test.com.zone
[root@bogon named]# vim tech.test.com.zone 
 
$TTL 600
@       IN      SOA     ns.tech.test.com.       admin.tech.test.com. (
                                        2012061602
                                        30M
                                        5M
                                        3D
                                        1D
)
 
@       IN      NS      ns.tech.test.com.
ns      IN      A       192.168.184.135
www     IN      A       192.168.184.135
 
檢查一下區域配置文件是否有錯誤
[root@bogon named]# named-checkzone tech.test.com tech.test.com.zone 
zone tech.test.com/IN: loaded serial 2012061602
OK
 
重啓DNS
[root@localhost named]# service named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]
 
測試:
在本地服務器(184.135測試)
[root@bogon named]# dig -t A tech.test.com
結果測試是正常的
 
在本地服務器(184.135測試)
[root@bogon named]# dig -t A www.test.com 
結果測試是正常的,爲什麼呢,因爲前面我們做了轉發到184.132上面去了,所以測試可以的
如果把這個轉發給去掉就無法解析了,因爲它是子域,不是它所負責的域,但是我們到父域
測試解析是正常的。
 
補充知識點:rndc的用法
生成rndc配置文件:
可以用rndc-confgen查看配置文件
然後輸出重定向到:rndc-confgen > /etc/rndc.conf
把/etc/rndc.conf裏的下半部分內容,存取到/etc/named.conf
最後重啓named服務
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章