DNS配置範例

這裏使用CentOS 7做爲DNS主服務器.(ip:172.18.7.77)web


正向解析配置:


]# vim /etc/named.rfc1912.zones
zone "opsnote.com" IN {
         type master;
         file "opsnote.com.zone";
};
]# cd /var/named
]# vim opsnote.com.zone
$TTL 3600
$ORIGIN opsnote.com.
@        IN        SOA        ns1.opsnote.com.        admin.opsnote.com. (
                 0
                 1H
                 10M
                 3D
                 1D )
IN        NS         ns1
ns1        IN        A        172.18.7.77
www        IN        A        172.18.7.73
web        IN        CNAME        www
bbs        IN        A        172.18.7.74
數據庫


確保區域數據庫文件的屬主屬組都爲named,文件權限爲640vim

]# chown :named opsnote.com.zonecentos

]# chmod 640 opsnote.com.zone安全

]# ll opsnote.com.zone 服務器

-rw-r-----. 1 root named 240 Jan 18 17:29 opsnote.com.zonetcp


檢查語法測試

檢查/etc/named.conf配置語法debug

]# named-checkconfrest

檢查自定義區域數據庫文件語法

]# named-checkzone opsnote.com opsnote.com.zone


查看一下當前區域數量

]# rndc status

number of zones: 101


從新載入配置文件

]# rndc reload


再查看一下區域數量

]# rndc status

number of zones: 102

說明剛剛的opsnote.com添加成功


測試:

]# dig -t A www.opsnote.com @172.18.7.77


配置反向解析:


定義反向區域

反向區域的名字爲.in-addr.arpa,本機地址爲172.18.7.77

]# vim /etc/named.rfc1912.zones

        zone "7.18.172.in-addr.arpa" IN {

       type master;

       file "172.18.7.zone";

};


定義反向區域解析庫文件

]# cd /var/named

]# vim 172.18.7.zone

$TTL 3600

$ORGIN 7.18.172.in-addr.arpa.

@        IN        SOA        opsnote.com.        admin.opsnote.com. (

               0

               1H

               10M

               3D

               12H )

IN        NS        ns1.opsnote.com.

77        IN        PTR        ns1.opsnote.com.

73        IN        PTR        www.opsnote.com.

74        IN        PTR        bbs.opsnote.com.

61        IN        PTR        bbs.opsnote.com.


修改屬組和權限

]# chgrp named 172.18.7.zone

]# chmod o= 172.18.7.zone


檢查語法

]# named-checkconf

]# named-checkzone 7.18.172.in-addr.arpa 172.18.7.zone


配置從DNS服務器

此次使用另外一臺centos 6 做爲上面DNS服務器的從服務器


定義從區域

方法與主服務器類似,指定file在/var/named/slaves目錄下,但不需手動建立,可分別指明一個以上主服務器.


安裝bind.

]# yum install bind -y

]# ps aux | grep named


編輯配置文件

]# vim /etc/named.conf

//listen-on port 53 { 127.0.0.1; };

//allow-query { localhost; };

dnssec-enable no;

dnssec-validation no;


啓動服務

]# service named start


查看服務狀態

]# service named status

version: 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4

CPUs found: 4

worker threads: 4

number of zones: 19

debug level: 0

xfers running: 0

xfers deferred: 0

soa queries in progress: 0

query logging is OFF

recursive clients: 0/0/1000

tcp clients: 0/100

server is up and running

named (pid 15052) is running...


配置主配置文件,添加從區域

zone "opsnote.com" IN {

        type slave;

        file "slaves/opsnote.com.zone";

        masters { 172.18.7.77; };

};


回到主服務器,添加從服務器NS記錄

]# vim /var/named/opsnote.com.zone

IN        NS         ns2

ns2        IN        A        172.18.7.61


檢查語法

]# named-checkconf


重載

]# rndc reload


查看服務狀態

]# rndc status

88

version: 9.9.4-RedHat-9.9.4-50.el7 <id:8f9657aa>

CPUs found: 4

worker threads: 4

UDP listeners per interface: 4

number of zones: 103

debug level: 0

xfers running: 0

xfers deferred: 0

soa queries in progress: 0

query logging is OFF

recursive clients: 0/0/1000

tcp clients: 0/100

server is up and running


回到從服務器


重載服務

]# rndc reload


查看狀態

]# service named status

version: 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4

CPUs found: 4

worker threads: 4

number of zones: 19

debug level: 0

xfers running: 0

xfers deferred: 0

soa queries in progress: 0

query logging is OFF

recursive clients: 0/0/1000

tcp clients: 0/100

server is up and running

named (pid 15052) is running...


測試:

]# dig -t A www.opsnote.com @172.18.7.61


驗證主從同步過程

修改主服務器區域文件內容

]# vim /var/named/opsnote.com.zone

增長內容

bbs3        IN        A        172.18.7.74

修改版本號0 –> 2


重載

]# rndc reload


查看日誌

]# systemctl status named

Jan 20 15:14:21 ce7.qt named[1407]: client 172.18.7.61#52689 (opsnote.com): transfer of 'opsnote.com/IN': AXFR-style IXFR started

Jan 20 15:14:21 ce7.qt named[1407]: client 172.18.7.61#52689 (opsnote.com): transfer of 'opsnote.com/IN': AXFR-style IXFR ended

Jan 20 15:14:21 ce7.qt named[1407]: client 172.18.7.61#9134: received notify for zone 'opsnote.com'


去從服務器檢查同步結果

]# tail /var/log/messages

Jan 20 15:14:21 centos6 named[15052]: client 172.18.7.77#60229: received notify for zone 'opsnote.com'

Jan 20 15:14:21 centos6 named[15052]: zone opsnote.com/IN: Transfer started.

Jan 20 15:14:21 centos6 named[15052]: transfer of 'opsnote.com/IN' from 172.18.7.77#53: connected using 172.18.7.61#52689

Jan 20 15:14:21 centos6 named[15052]: zone opsnote.com/IN: transferred serial 2

Jan 20 15:14:21 centos6 named[15052]: transfer of 'opsnote.com/IN' from 172.18.7.77#53: Transfer completed: 1 messages, 10 records, 254 bytes, 0.001 secs (254000 bytes/sec)

Jan 20 15:14:21 centos6 named[15052]: zone opsnote.com/IN: sending notifies (serial 2)


在其餘主機上測試從服務器

]# dig -t A bbs3.opsnote.com @172.18.7.61


可經過axfr類型得到服務器上整個正向和反向區域的資源記錄

]# dig -t axfr opsnote.com @172.18.7.77

]# dig -t axfr 7.18.172.in-addr.arpa @172.18.7.77


子域受權


1.在父域的主DNS服務器的正向區域數據庫文件/var/named/opsnote.com.zone上受權子域

]# vim /var/named/opsnote.com.zone

aaa        IN        NS        ns3.aaa

ns3.aaa        IN        A        172.18.7.73


記得增長版本號


重載

]# rndc reload


2.子域服務器上(172.18.7.73)


安裝bind

]# yum install bind –y


3.編輯主配置文件

]# vim /etc/named.conf

//listen-on port 53 { 127.0.0.1; };

//allow-query { localhost; };

dnssec-enable no;

dnssec-validation no;


4.啓動named服務並查看53端口是否已綁定

]# systemctl start named

]# systemctl status named

]# ss -tunl

172.18.7.73:53


編輯主配置文件

]# vim /etc/named.rfc1912.zones

        zone "aaa.opsnote.com" IN {

        type master;

        file "aaa.opsnote.com.zone";

};


5.建立aaa.opsnote.com.zone文件

]# vim /var/named/aaa.opsnote.com.zone

$TTL 3600

@        IN        SOA        ns3.aaa.opsnote.com. admin.opsnote.com. (

                0 ;序列號

                1H ;刷新時間

                10M ;重試時間

                1D ;過時時間

                2H ) ;否認回答的TTL值

IN        NS        ns3

ns3        IN        A        172.18.7.73

www        IN        A        172.18.7.73


6.修改屬組和權限

]# chmod 640 aaa.opsnote.com.zone

]# chgrp named aaa.opsnote.com.zone

]# ll aaa.opsnote.com.zone

-rw-r----- 1 root named 162 Jan 20 16:14 aaa.opsnote.com.zone


7.檢查語法

]# named-checkzone aaa.opsnote.com aaa.opsnote.com.zone

zone aaa.opsnote.com/IN: loaded serial 0

OK


8.重載服務

]# rndc reload


9測試正向解析

]# dig -t A www.aaa.opsnote.com @172.18.7.73


若是想經過子域服務器解析父域,子域會先找根,再找.com頂級域進行的帶查詢,但只要給子域定義了轉發區域,就可讓子域解析本身的父域.


給子域服務器定義轉發區域


子域服務器(172.18.7.73)

1.編輯主配置文件

]# vim /etc/named.rfc1912.zones

        zone "opsnote.com" IN {

        type forward;

         forward only;

         forwarders { 172.18.7.77; 172.18.7.61; };

};


2.檢查語法

]# named-checkconf


3.重載

]# rndc reload


4.測試

在父域主服務器(172.18.7.77)上解析子域

]# dig -t A www.aaa.opsnote.com @172.18.7.77


會獲得標誌位flags: qr rd ra; 其中沒有權威應答aa標誌,說明不是父域本身解析的.


父域解析本身負責的域

]# dig -t A www.opsnote.com @172.18.7.77


會獲得標誌位flags: qr aa rd ra; 其中包含的aa爲權威應答,說明是本身負責的解析內容.


在子域服務器(172.18.7.73)上解析父域

]# dig -t A www.opsnote.com @172.18.7.73


獲得標誌位flags: qr rd ra;由於父域只能去找父域解析,因此這裏沒有aa


若是要子域解析其餘域名,如www.qq.com,默認狀況下子域服務器會由於本身數據庫中沒有定義而去互聯網上找跟服務器詢問並獲得結果,假如只想經過父域解析,須要定義全局轉發.


在子域服務器上定義全局轉發


]# vim /etc/named.conf

options段中添加

forward only;

forwarders { 172.18.7.77; };


forward 有兩個參數

firest: 先轉發.若是轉發器不響應,本身回去迭代查詢.

only:只轉發,不迭代.


重載

]# rndc reload


測試:

]# dig -t A www.qq.com @172.18.7.73


此時由父域主服務器(172.18.7.73)解析www.qq.com

只容許從服務器進行區域傳送,訪問控制列表


以前咱們經過

]# dig -t axfr opsnote.com @172.18.7.77


直接獲得了主服務器上的區域數據庫內容,這是不安全的,應該限制爲只容許從服務器才能讀取.下面爲實現方法.


1.在主服務器上編輯/etc/named.conf文件,如添加在options段則全局生效,如添加在zone段則只對當前區域生效.

這裏添加在zone,因此能夠直接編輯/etc/named.rfc1912.zones文件,找到以前定義的zone "opsnote.com" IN {段,在其中添加allow-transfer { slaves; };

]# vim /etc/named.rfc1912.zones

         zone "opsnote.com" IN {

         type master;

         file "opsnote.com.zone";

        allow-transfer { myslaves; };

};

myslaves表示自定義訪問控制列表.


2.在主服務器中改配置訪問控制列表:

在/etc/named.conf 文件options段前添加

]# vim /etc/named.conf

         acl myslaves {

         172.18.7.61;

         127.0.0.1;

};


檢查語法

]# named-checkconf


重載

]# rndc reload


測試:

在非從服務器中測試:

]# dig -t axfr opsnote.com @172.18.7.77

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> -t axfr opsnote.com @172.18.7.77

;; global options: +cmd

; Transfer failed.


在從服務器測試:

]# dig -t axfr opsnote.com @172.18.7.77


傳送成功


在主服務器測試:

]# dig -t axfr opsnote.com @172.18.7.77

]# dig -t axfr opsnote.com @127.0.0.1


.7.77傳送失敗,由於不在訪問控制列表中

127.0.0.1傳送成功,可是由於我把/etc/named.conf中的listen-on port 53一行註釋掉了,因此本機的任何ip均可以接受傳送,若是把註釋去掉,而且括號中沒有127.0.0.1的話,則會傳送失敗.

相關文章
相關標籤/搜索