DNS子域授權
為什么需要子域授權刑峡?
子域授權洋闽,也就是DNS的分布式。
通過在原有的域上劃出一個小的區(qū)域突梦,并給新DNS服務器管理诫舅。
如果有客戶端請求解析在這個劃分區(qū)域中的域名,則只要找新的子DNS服務器宫患。
這樣的做的好處可以減輕主DNS的壓力刊懈,也便于管理。
配置DNS子域授權
主機名 | 主機地址 | 角色 |
---|---|---|
node1 | 192.168.2.201 | 主DNS服務器 |
node2 | 192.168.2.202 | 從DNS服務器 |
node3 | 192.168.2.203 | 子域授權服務器 |
以上節(jié)點均關閉了iptables和selinux
由于篇幅的原因撮奏,這次主要是演示子域授權的部分俏讹。
關于node1和node2配置主從同步的詳細步驟以及注意事項,可以參考上一篇文章畜吊。
一泽疆、修改node1的資源記錄
[root@node1 named]# vim /var/named/bc.com.zone
ops IN NS ns3
ns3 IN A 192.168.2.203
在bc.com這個資源記錄文件中添加兩條記錄。
其實這個的意思是說玲献,
ops.bc.com這個域由ns3.bc.com來解析殉疼。
ns3.bc.com的IP地址在192.168.2.203
注意:這里需要將SOA記錄的序列號手動+1才會觸發(fā)node2的同步。
二捌年、為node3配置安裝dns服務瓢娜,并配置資源記錄
安裝服務
[root@node3 ~]# yum install bind -y
修改全局配置
[root@node3 ~]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.2.203;127.0.0.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; };
dnssec-enable no;
dnssec-validation no;
}
定義可解析區(qū)域
[root@node3 ~]# vim /etc/named.rfc1912.zones
zone "ops.bc.com" IN {
type master;
file "ops.bc.com.zone";
};
編輯資源記錄
$ORIGIN ops.bc.com.
$TTL 86400
@ IN SOA ops.bc.com. admin.bc.com. (
2016042301
1H
5M
7D
1D)
ops.bc.com. IN NS ns1
ns1 IN A 192.168.2.203
www IN A 192.168.2.213
* IN A 192.168.2.223
注意:
除了SOA記錄之外,這里定義了幾條資源記錄
ops.bc.com. IN NS ns1
表示ops.bc.com這個域由ns1.ops.bc.com這個DNS服務器負責解析
ns1 IN A 192.168.2.203
表示ns1.ops.bc.com的IP地址是192.168.2.203
www IN A 192.168.2.213
表示www.ops.bc.com的IP地址是192.168.2.213
* IN A 192.168.2.223
表示*.ops.bc.com的IP地址是192.168.2.223
檢查語法錯誤
[root@node3 ~]# named-checkzone ops.bc.com /var/named/ops.bc.com.zone
zone ops.bc.com/IN: loaded serial 2016042301
OK
沒有問題則可以重啟服務礼预,因為dns服務經常配置文件缺少標點而啟動不成功眠砾。
所以檢查語法錯誤之后才重啟,可以避免故障導致服務不可用托酸。
重啟服務
[root@node3 ~]# service named restart
Redirecting to /bin/systemctl restart named.service
三褒颈、測試能否在node1上解析子域的資源記錄
[root@node2 ~]# dig -t A ftp.ops.bc.com @192.168.2.201
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.4 <<>> -t A ftp.ops.bc.com @192.168.2.201
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28811
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ftp.ops.bc.com. IN A
;; ANSWER SECTION:
ftp.ops.bc.com. 86400 IN A 192.168.2.223
;; AUTHORITY SECTION:
ops.bc.com. 86400 IN NS ns1.ops.bc.com.
;; ADDITIONAL SECTION:
ns1.ops.bc.com. 86400 IN A 192.168.2.203
;; Query time: 3 msec
;; SERVER: 192.168.2.201#53(192.168.2.201)
;; WHEN: Fri Dec 30 18:02:12 CST 2016
;; MSG SIZE rcvd: 93
;; ANSWER SECTION:字段中柒巫,解析到我們配置的*.ops.bc.com
所以ftp.ops.bc.com的IP地址是192.168.2.223。
后續(xù)問題:
[root@node3 ~]# nslookup
> server 192.168.2.203
Default server: 192.168.2.203
Address: 192.168.2.203#53
> set q=A
> www.reibang.com
Server: 192.168.2.203
Address: 192.168.2.203#53
** server can't find www.reibang.com: NXDOMAIN
我們發(fā)現(xiàn)谷丸,由于子域的node3中的資源記錄只有那么幾條堡掏。
所以當有客戶端請求其他資源記錄的時候,就會無法解析刨疼。
轉而會向根服務器開始迭代泉唁,這樣會很慢。
所以一般會定義一個轉發(fā)器揩慕,在子域無法解析的時候
轉發(fā)給特定服務器解析亭畜。
配置轉發(fā)器:
[root@node3 ~]# vim /etc/named.conf
options {
forward only;
forwarders { 192.168.2.1; };
}
這里無法解析的請求,都轉發(fā)給192.168.2.1漩绵。
為什么不轉發(fā)給主DNS服務器贱案?
因為我們在主DNS中定義的資源記錄也是有限的,所以主DNS也可能解析不出來止吐。
加了轉發(fā)器選項之后就可以正常解析了宝踪。
[root@node3 ~]# nslookup
> server 192.168.2.203
Default server: 192.168.2.203
Address: 192.168.2.203#53
> set q=A
> www.reibang.com
Server: 192.168.2.203
Address: 192.168.2.203#53
Non-authoritative answer:
Name: www.reibang.com
Address: 106.75.2.241
>
有了轉發(fā)器,就可以把自己負責的區(qū)域以外的請求都丟給其他DNS服務器代為處理碍扔。
智能DNS
智能DNS瘩燥,也就是可以通過判斷用戶的IP來返回不同的資源記錄。
這樣做的好處在于不同,能夠通過這種方式選擇一個用戶最合適的服務器厉膀。
智能DNS也是CDN實現(xiàn)的一種方式。
例如二拐,通過判斷用戶是電信用戶還是鐵通用戶來返回不同的結果服鹅。加快訪問速度。
例如百新,通過判斷用戶的地區(qū)企软,找出一個該地區(qū)的服務器。達到分流的效果饭望,提高用戶體驗仗哨。
使用view功能配置使用dns智能解析
修改全局配置文件:
[root@node1 ~]# vim /etc/named.conf
acl inter-network {
127.0.0.1;
};
acl external-network {
192.168.2.0/24;
};
這里我們配置兩個訪問控制列表,也就是acl
也就是說铅辞,我們使用不同網段的時候厌漂,會得到不同的結果。
修改區(qū)域配置文件
[root@node1 ~]# vim /etc/named.rfc1912.zones
// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
view internal {
match-clients { inter-network; };
allow-recursion { inter-network; };
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
zone "bc.com" IN {
type master;
file "bc.com.zone";
allow-transfer { 192.168.2.202; };
};
zone "." IN {
type hint;
file "named.ca";
};
};
view external-network {
match-clients { external-network; };
zone "bc.com" IN {
type master;
file "bc.com.zone.external";
};
};
這里我們定義了兩個view:
一個是叫internal對應內網用戶斟珊,一個是external-network對應外網用戶苇倡。
不過這里我們只需要關注兩個zone:
view internal中的bc.com
view external-network中的bc.com
修改external-network中的bc.com這個域的的文件
[root@node1 ~]# vim /var/named/bc.com.zone.external
$TTL 86400
$ORIGIN bc.com.
@ IN SOA ns1.bc.com. admin.bc.com (
2016122231
1H
5M
7D
1D )
IN NS ns1
IN NS ns2
ops IN NS ns3
ns1 IN A 192.168.2.201
ns2 IN A 192.168.2.202
ns3 IN A 192.168.2.203
node1 IN A 202.192.72.211
* IN A 192.168.2.201
注意:
我們對應內網的node1,A記錄是192.168.2.201
這里對應外網的node1的A記錄則是202.192.72.211
檢查語法錯誤
[root@node1 ~]# named-checkconf
這一步真的很重要。
重啟服務
[root@node1 ~]# service named restart
Redirecting to /bin/systemctl restart named.service
測試功能是否正常
[root@node1 ~]# dig -t A node1.bc.com @192.168.2.201
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.4 <<>> -t A node1.bc.com @192.168.2.201
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45902
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;node1.bc.com. IN A
;; ANSWER SECTION:
node1.bc.com. 86400 IN A 202.192.72.211
;; AUTHORITY SECTION:
bc.com. 86400 IN NS ns1.bc.com.
bc.com. 86400 IN NS ns2.bc.com.
;; ADDITIONAL SECTION:
ns1.bc.com. 86400 IN A 192.168.2.201
ns2.bc.com. 86400 IN A 192.168.2.202
;; Query time: 1 msec
;; SERVER: 192.168.2.201#53(192.168.2.201)
;; WHEN: Fri Dec 30 21:29:48 CST 2016
;; MSG SIZE rcvd: 125
[root@node1 ~]# dig -t A node1.bc.com @127.0.0.1
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.4 <<>> -t A node1.bc.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6048
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;node1.bc.com. IN A
;; ANSWER SECTION:
node1.bc.com. 86400 IN A 192.168.2.221
node1.bc.com. 86400 IN A 192.168.2.211
node1.bc.com. 86400 IN A 192.168.2.201
;; AUTHORITY SECTION:
bc.com. 86400 IN NS ns1.bc.com.
bc.com. 86400 IN NS ns2.bc.com.
;; ADDITIONAL SECTION:
ns1.bc.com. 86400 IN A 192.168.2.201
ns2.bc.com. 86400 IN A 192.168.2.202
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Dec 30 21:30:19 CST 2016
;; MSG SIZE rcvd: 157
可以看出雏节,;; ANSWER SECTION:解析出了不同的結果胜嗓。