這裏使用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
此次使用另外一臺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; };
};
]# 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的話,則會傳送失敗.