实验环境:
CentOS7 IP:192.168.30.138作为主服务器,解析li-zw.com
Centos6 IP:192.168.30.128 作为从服务器,从主同步数据
一,配置主服务器的配置
options {
listen-on port 53 { 127.0.0.1;192.168.30.138 }; //设置监听IP
//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 { localhost; }; 把只允许本地查询关闭
二,新建一个区域
zone "li-zw.com" IN { //新建一个区域
type master; //类型配置为主服务器
file "li-zw.com.zone";
allow-update { none; };
};
三,配置区域数据文件
$TTL 3H
@ IN SOA ns1.li-zw.com. root.li-zw.com. (
201805
3H
30M
1W
1H )
@ IN NS ns1.li-zw.com.
ns1 IN A 192.168.30.138
www IN A 192.168.30.111
检查配置文件
[root@test2 named]# chmod 640 li-zw.com.zone //修改权限
[root@test2 named]# chgrp named li-zw.com.zone //修改属组
[root@test2 named]# named-checkzone li-zw.com /var/named/li-zw.com.zone
zone li-zw.com/IN: loaded serial 201805
OK
[root@test2 named]# dig -t A www.li-zw.com @192.168.30.138
; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> -t A www.li-zw.com @192.168.30.138
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51039
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.li-zw.com. IN A
;; ANSWER SECTION:
www.li-zw.com. 10800 IN A 192.168.30.111
;; AUTHORITY SECTION:
li-zw.com. 10800 IN NS ns1.li-zw.com.
;; ADDITIONAL SECTION:
ns1.li-zw.com. 10800 IN A 192.168.30.138
;; Query time: 0 msec
;; SERVER: 192.168.30.138#53(192.168.30.138)
;; WHEN: 四 5月 10 15:25:08 CST 2018
;; MSG SIZE rcvd: 92
成功解析:
上面结果中:
QUESTION SECTION:代表当前问题
ANSWER SECTION:代表问题的答案
AUTHORITY SECTION:代表是权威服务器给出的答案
ADDITIONAL SECTION:额外的回复,把ns服务器也解析出来了
四、部署从服务器
从服务器主要是在区域数据文件把li-zw.com修改为slave,并指明masterIP。
zone "li-zw.com" IN {
type slave;
masters { 192.168.30.138; };
file "slaves/li-zw.com";
};
[root@test1 named]# rndc reload
server reload successful
[root@test1 named]# ls slaves/
li-zw.com
成功获取到li-zw.com
一些安全配置
在主服务器中,应该只允许从服务器获取区域配置文件,而且上面的配置,每次更新都只会执行完全区域更新,不会执行增量更新,并且就算区域数据有更新,主服务器也不会通知从服务器进行数据更新,因为主服务器并不知道有从服务器的存在,所以在区域数据配置文件中,应该指定从服务器。
指定从服务器
$TTL 3H
@ IN SOA ns1.li-zw.com. root.li-zw.com. (
201805
3H
30M
1W
1H )
@ IN NS ns1.li-zw.com.
@ IN NS ns2.li-zw.com. //在ns记录中加入从服务器
ns1 IN A 192.168.30.138
ns2 IN A 192.168.30.128 //并且指定IP
www IN A 192.168.30.111
~
配置成功后,主服务器有更新的时候会主动发送Notify通知从服务器进行数据更新
设置只允许从服务器更新区域数据
在主服务器的/etc/named.conf配置文件的options选项下
options {
listen-on port 53 { 127.0.0.1;192.168.30.128; };
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 { localhost; };
recursion yes;
allow-transfer { 192.168.30.128; }; //只允许特定主机进行区域传送
dnssec-enable no;
dnssec-validation no;
智能DNS
就bind来说,其视图特性提供的就是智能dns的功能。使用view可以实现根据客户端来源为不同来源的客户端展现同一个区域的不同配置,不同来源的客户端解析同一个区域也可能得到不同的结果。例如,公司两台web服务器web1和web2(它们是完全相同的内容),使用电信网的客户端对web的请求让其访问到web1上,使用联通网的客户端对web的请求让其访问到web2上。通过判断网络来源,让其选择合适的线路访问可以加快访问速度,这是常用的功能。
要使用view功能,最好配合acl来制定什么客户端解析到哪去。acl指令是仅有的几个不能定义在view中的指令之一。
注意
所有的zone都必须要定义在view中,尽管默认的named.conf根本没有定义view,但是其实所有的zone都定义在了一个隐含的默认的视图中
(2). view中match-clients指令的匹配方式是从前向后匹配的,如果在第一个view中匹配了,则后面定义的view将不会生效,所以定义的view的先后顺序是很重要的。
(3).绝大多数named.conf中的指令都能写在view中,只有很少量的指令不允许,例如acl指令。对于本该封装在options中的指令,如果想定义在view中,则不应该在view中使用options,因为options定义的是全局默认值,配置文件中只能出现一次,所以可以直接在view中写指令,这样会覆盖全局options。
(4).不同的view中定义的相同的zone,它们使用的区域文件一般不同(并非必须不同),否则就没有自定义view的必要。
以192.168.30.10作为电信客户
以192.168.30.20作为联通客户
以192.168.30.30作为其他客户
在主服务器上配置:
[root@test2 li-zw.com]# cat /etc/named.conf
...
acl "telecom" {
192.168.30.10;
};
acl "unicom" {
192.168.30.20;
};
options {
...
};
logging {
...
};
};
view telecom {
match-clients { telecom; };
zone "." IN {
type hint;
file "named.ca";
};
zone "li-zw.com" {
type master;
file "li-zw.com/telecom.zone";
allow-update { none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
view unicom {
match-clients { unicom; };
zone "." IN {
type hint;
file "named.ca";
};
zone "li-zw.com" {
type master;
file "li-zw.com/unicom.zone";
allow-update { none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
#include "/etc/named.rfc1912.zones";
#include "/etc/named.root.key";
view other {
match-clients { any; };
zone "." IN {
type hint;
file "named.ca";
};
zone "li-zw.com" IN {
type master;
file "li-zw.com.zone";
allow-update { none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
telecom区域配置:
[root@test2 named]# cat li-zw.com/telecom.zone
$TTL 3H
@ IN SOA ns1.li-zw.com. root.li-zw.com. (
201809
3H
30M
1W
1H )
@ IN NS ns1.li-zw.com.
@ IN NS ns2.li-zw.com.
ns1 IN A 192.168.30.138
ns2 IN A 192.168.30.128
www IN A 192.168.30.111
bbs IN A 192.123.12.111
admin IN A 192.168.30.111
unicom区域配置
$TTL 3H
@ IN SOA ns1.li-zw.com. root.li-zw.com. (
201809
3H
30M
1W
1H )
@ IN NS ns1.li-zw.com.
@ IN NS ns2.li-zw.com.
ns1 IN A 192.168.30.138
ns2 IN A 192.168.30.128
www IN A 192.168.30.222
bbs IN A 192.123.12.222
admin IN A 192.168.30.222
other配置
$TTL 3H
@ IN SOA ns1.li-zw.com. root.li-zw.com. (
201809
3H
30M
1W
1H )
@ IN NS ns1.li-zw.com.
@ IN NS ns2.li-zw.com.
ns1 IN A 192.168.30.138
ns2 IN A 192.168.30.128
www IN A 192.168.30.333
bbs IN A 192.123.12.333
admin IN A 192.168.30.333
测试:
telecom:192.168.30.10
unicom:192.168.30.20
other:192.168.30.128