03实现正向主从DNS服务器
环境说明
| hostname | IP | service |
|---|---|---|
| dns-master | 10.0.0.103 | bind9 |
| dns-slave | 10.0.0.104 | bind9 |
主DNS配置
主DNS注意事项:
- 与从DNS时间同步
- 与从DNS bind 版本一致
- 设置只允许从服务器进行区域传输(否则默认任何人都可以从DNS数据库中抓取内容 或 同步区域数据库)
- 主服务器的区域解析库文件中必须有一条NS记录指向从服务器
# 区域数据库文件
# /var/cache/bind/xiangzheng.com.zone.bind
$TTL 600
@ IN SOA ns1 mail.xiangzheng.com. (
2015042201 ;
1H ;
10M ;
1D ;
12H ;
)
@ NS ns1
@ NS ns2 #主服务器的区域解析库文件中必须有一条NS记录指向从服务器
ns1 A 10.0.0.103
ns2 A 10.0.0.104 #主服务器的区域解析库文件中必须有一条NS记录指向从服务器
@ A 10.0.0.66
# named 配置文件
# /etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
# named 子配置文件
# /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
...
dnssec-validation auto;
listen-on-v6 { any; };
listen-on port 53 { localhost; };
allow-query { any; };
allow-transfer { 10.0.0.104; }; #设置只允许从服务器进行区域传输
};
# 区域数据库配置文件
# /etc/bind/named.conf.default-zones
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/usr/share/dns/root.hints";
};
zone "xiangzheng.com" {
type master; #类型为master
file "/var/cache/bind/xiangzheng.com.zone.bind";
};
...从DNS配置
从DNS注意事项:
- 与从DNS时间同步
- 与从DNS bind 版本一致
- 从服务器只需要定义区域,而无须提供解析库文件
- 设置不允许其它主机进行区域传输(否则默认任何人都可以从DNS数据库中抓取内容 或 同步区域数据库)
# named 配置文件
# /etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
# named 子配置文件
# /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
...
dnssec-validation auto;
listen-on-v6 { any; };
listen-on port 53 { localhost; };
allow-query { any; };
allow-transfer { none; }; #设置不允许其它主机进行区域传输
};
# 区域数据库配置文件
# /etc/bind/named.conf.default-zones
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/usr/share/dns/root.hints";
};
zone "xiangzheng.com" {
type slave; #类型为slave
masters {10.0.0.103;}; #指向主DNS的IP
file "/var/cache/bind/xiangzheng.com.zone.bind.slave"; #此文件无需创建,会自动生成,为加以区分最后可以加个.slave,
};
...
#检查配置文件语法
named-checkconf
#语法无误后 重启name服务
rndc reload主DNS更新 同步到 从DNS
同步机制
- 推:主DNS 主动向 从DNS 推送数据(需要更新数据库版本)
- 拉:从DNS 定时向 主DNS 拉取数据(设定时间到了从节点主动向主节点拉取数据)
模拟主DNS数据更新
- 注意:主DNS更新后必须升级数据库版本号
- 推方式演示:
root@dns-master:~# vim /var/cache/bind/xiangzheng.com.zone.bind
$TTL 600
@ IN SOA ns1 mail.xiangzheng.com. (
2015042202 ; #升级数据库版本号
1H ;
10M ;
1D ;
12H ;
)
@ NS ns1
@ NS ns2
ns1 A 10.0.0.103
ns2 A 10.0.0.104
@ A 10.0.0.77 #更新成77
# 使其生效
root@dns-master:~# rndc reload
server reload successful
#客户端测试
[root@client ~]# host xiangzheng.com 10.0.0.103
Using domain server:
Name: 10.0.0.103
Address: 10.0.0.103#53
Aliases:
xiangzheng.com has address 10.0.0.77
[root@client ~]# host xiangzheng.com 10.0.0.104
Using domain server:
Name: 10.0.0.104
Address: 10.0.0.104#53
Aliases:
xiangzheng.com has address 10.0.0.77客户端配置和测试
- 注意:客户端主要是将网卡配置文件分别指向主和从DNS 以实现冗余效果
#10.0.0.38准备web
[root@38 ~]# yum -y install nginx
[root@38 ~]# echo "10.0.0.38 page" > /usr/share/nginx/html/index.html
[root@38 ~]# systemctl enable --now nginx.service
#客户端配置主从DNS
[root@client ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
...
DNS1=10.0.0.8
DNS2=10.0.0.18
[root@client ~]# nmcli connection reload
[root@client ~]# nmcli connection up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
[root@client ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.0.8
nameserver 10.0.0.18
#测试访问
[root@client ~]# curl www.xiangzheng.org
10.0.0.38 page
#停掉一个DNS服务器在进行测试
[root@DNS-master ~]# systemctl stop named.service
[root@client ~]# curl www.xiangzheng.org
10.0.0.38 page
#停掉另外一个DNS服务器在进行测试
[root@DNS-slave ~]# systemctl stop named.service
[root@DNS-slave ~]# host www.xiangzheng.org
curl: (6) Could not resolve host: www.xiangzheng.org