一、主DNS的搭建,通過bind包實現正向解析和反向解析
1、安裝bind包
[root@localhost yum.repos.d]# clear
[root@localhost yum.repos.d]# yum -y install bind
[root@localhost ~]# rpm -qa |grep bind
rpcbind-0.2.0-11.el6.x86_64
bind-9.8.2-0.37.rc1.el6.x86_64
bind-libs-9.8.2-0.37.rc1.el6.x86_64
samba-winbind-3.6.23-20.el6.x86_64
bind-utils-9.8.2-0.37.rc1.el6.x86_64
samba-winbind-clients-3.6.23-20.el6.x86_64
ypbind-1.20.4-31.el6.x86_64
PackageKit-device-rebind-0.5.8-25.el6.x86_6
2、修改named.conf配置文件
[root@localhost ~]# vim /etc/named.conf
listen-on port 53 { localhost; }; 默認是127.0.0.1,改成 localhost,監聽本機IP
allow-query { any; }; 默認是localhost,只允許本機查詢,改爲 any,允許所有查詢
dnssec-enable no;
dnssec-validation no; 這兩項默認開啓,都給關閉
3、修改區域配置文件並檢查配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
增加區域 qq.com,文件格式以前面配置格式寫
type master;主區域
file “qq.com”;這個名稱要和區域數據庫文件一樣,路徑在 /var/named/
用此命令檢查配置文件,沒有報錯,文件語法沒出問題
4、新建區域數據庫
[root@localhost ~]# vim /var/named/qq.com
TTL:可從全局繼承 @:可引用當前區域名稱
SOA:起始授權記錄,一個數據庫有且僅有一個SOA記錄,必須寫在數據庫第一條
NS:用於標明當前區域的DNS服務器
A:IPv4地址正向解析,FQDN--IP
CNAME:別名記錄
5、檢查區域數據庫,重啓named服務,測試域名解析是否成功
數據文件OK,說明格式正確
重啓named服務,關閉防火牆
通過dig工具和ping域名,能夠解析成功,正向DNS服務搭建完成
6、搭建反向DNS服務,反向解析很少用,沒有反向解析,用IP地址解析域名,顯示超時
[root@localhost ~]# clear
[root@localhost ~]# nslookup
> www.qq.com
Server:172.16.18.5
Address:172.16.18.5#53
www.qq.comcanonical name = web.qq.com.
Name:web.qq.com
Address: 172.16.18.6
> 172.16.18.6
;; connection timed out; trying next origin
;; connection timed out; no servers could be reached
7、在區域配置文件增加反向區域
[root@localhost ~]# vim /etc/named.rfc1912.zones
8、新增反向解析數據庫文件
[root@localhost named]# vim 172.16.18.zone
PTR:反向解析記錄。IP--FQDN
9、檢查配置文件,並且重讀配置文件
經過測試,反向解析成功,反向DNS搭建成功。
二、主從DNS搭建
1、在另外一個虛擬機上安裝bind包
[root@localhost ~]# yum -y install bind
2、修改named.conf配置文件
[root@localhost ~]# vim /etc/named.conf
allow-query { any; }; 允許所有主機查詢
allow-transfer { none;}; 不允許區域傳輸,加上這條可以防止其他機器從這臺機器上抓數 據庫文件
在主DNS上也的加上一條策略
allow-transfer { 172.16.18.3;}; 只允許從DNS在這上面抓取數據庫文件
3、在區域配置文件添加區域qq.com
zone "qq.com" 這個區域和主DNS必須一致
type slave; 類型爲從區域
masters { 172.16.18.5;}; 主DNS的IP地址
file "slaves/qqbackup.com"; 數據庫文件存放位置 /var/named/slaves/
4、在主DNS區域數據庫文件添加NS記錄
5、重啓named服務,從DNS將從主DNS上抓取區域數據庫文件
[root@localhost slaves]# service named restart
6、把主DNS停止,客戶端上在添加備用DNS172.16.18.3 ,在測試這些域名能否解析
[root@localhost named]# service named stop
Stopping named:
通過測試,主DNS已經無法解析,備用DNS可以解析,主從DNS搭建成功,但備用DNS無法修改數 據庫,只能通過主DNS推送或者自己抓取數據庫文件,如果主DNS上添加新紀錄,必須修改版本 號,主DNS才能把最新的數據庫文件推送到備用DNS上來。
三、子域授權
1、同一臺機器上創建子域
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "sport.qq.com" IN {
type master;
file "sport.qq.com";
};
創建子域配置文件
root@localhost named]# rndc reload 重讀配置文件並測試
子域解析成功,子域授權完成
2、不同機器上創建子域
[root@localhost named]# clear
[root@localhost named]# vim qq.com 修改區域數據庫文件
在另外一個機器上區域配置裏創建子區域
[root@localhost ~]# vi /etc/named.rfc1912.zones
zone "jok.qq.com" IN {
type master;
file "jok.qq.com";
};
創建子區域數據庫文件
[root@localhost ~]# vim /var/named/jok.qq.com
在子域和父域上重讀配置文件,並進行測試
[root@localhost named]# rndc reload
server reload successful
通過測試,父域將域名委派給子域解析,解析成功。
兩種情況的子域授權已經全部OK。
四、智能DNS view
1、安裝bind
[root@localhost named]# yum -y install bind
2、修改named.conf配置文件
acl "host1" { 定義主機1的acl
172.16.18.3;
};
acl "host2" { 定義主機2的acl
172.16.18.7;
}; 這兩個acl要定義在options前面
options {
listen-on port 53 { localhost; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
view "host1view" {
match-clients { 172.16.18.3;};
include "/etc/host1.zones"; 主機1區域文件名稱及路徑
};
view "host2view" {
match-clients { 172.16.18.7;};
include "/etc/host2.zones"; 主機2區域文件名稱及路徑
};
view "otherview" {
match-clients { any;};
include "/etc/named.rfc1912.zones"; 其他主機
};
include "/etc/named.root.key";
3、創建區域配置文件
root@localhost named]# vim
zone "jok.com" {
type master;
file "host1.com";
};
[root@localhost named]# vim /etc/host2.zones
zone "jok.com" {
type master;
file "host2.com";
};
4、創建區域數據庫
[root@localhost named]# vim host1.com 主機1數據庫文件
$TTL 1D
@ IN SOA ns1.jok.com. admin.jok.com. (
2016070804
1D
5M
1W
2H
)
IN NS ns1
ns1 IN A 172.16.18.5
web IN A 1.1.1.1
www IN CNAME web
[root@localhost named]# vim host2.com 創建主機2數據庫文件
$TTL 1D
@ IN SOA ns1.jok.com. admin.jok.com. (
2016070804
1D
5M
1W
2H
)
IN NS ns1
ns1 IN A 172.16.18.5
web IN A 2.2.2.2
www IN CNAME web
5、加載配置文件並測試
[root@localhost named]# rndc reload
server reload successful
在主機172.16.18.3上用dig工具測試
[root@localhost ~]# dig -t A www.jok.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -t A www.jok.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5110
; ; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.jok.com. IN A
;; ANSWER SECTION:
www.jok.com. 86400 IN CNAME web.jok.com.
web.jok.com. 86400 IN A 1.1.1.1
;; AUTHORITY SECTION:
jok.com. 86400 IN NS ns1.jok.com.
;; ADDITIONAL SECTION:
ns1.jok.com.
86400 IN A 172.16.18.5
在主機172.16.18.7上用dig工具測試
[root@localhost ~]# dig -t A www.jok.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -t A www.jok.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7901
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.jok.com. IN A
;; ANSWER SECTION:
www.jok.com. 86400 IN CNAME web.jok.com.
web.jok.com. 86400 IN A 2.2.2.2
;; AUTHORITY SECTION:
jok.com. 86400 IN NS ns1.jok.com.
;; ADDITIONAL SECTION:
ns1.jok.com. 86400 IN A 172.16.18.5
通過上面測試,主機1訪問www.jok.com解析的是1.1.1.1,主機2訪問www.jok.com解析的是2.2.2.2,實現了view定義的要求,view搭建完成。
};