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