DNS部署(三)DNS的集群、远程更新、基于key的DNS更新

1.DNS的集群

解释:DNS集群指的是两台主机组成的功能的集合(变一个都变),之所以创建集群,是因为如果访问dns的人过多,可能会挂掉,所以需要添加另外一个服务器辅助dns,缓解访问压力,完全同步主dns
<1>首先在客户端安装named服务并进行重启

[[email protected] ~]# yum install bind -y
[[email protected] ~]# systemctl restart named

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<2>关闭客户端的防火墙

[[email protected] ~]# systemctl stop firewalld

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<3>进入/etc/resolv.conf文件中,将域名写成本机的ip

[[email protected] slaves]# vim /etc/resolv.conf

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
文件中的内容为:
DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<4>在客户端进入子配置文件修改以下内容

[[email protected] named]# vim /etc/named.rfc1912.zones

修改的内容如下:

zone "westos.com" IN {
         type slave;	##设置本机为辅助DNS服务器
         masters{172.25.254.166;};	##将ip为172.25.254.1660的主机设置成主的DNS服务器
         file "slaves/westos.com.zone";	##指定辅助DNS解析时应该参考的文件
         allow-update { none; };
 };

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<5>进入主配置文件并使其生效

[[email protected] slaves]# vim /etc/named.conf
[[email protected] slaves]# systemctl restart named

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
修改以下内容:

   listen-on port 53 { 127.0.0.1; };	##加上注释或者将127.0.0.1更改成any都设置端口对所有人打开
allow-query     { any; };	##允许所有人时用DNS
dnssec-validation no;	##《启动DNSSEC确认》更改成dnssec-validation no;

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<6>进入服务端的子配置文件

[[email protected] named]# vim /etc/named.rfc1912.zones
[[email protected] named]# systemctl restart named

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
修改的内容如下:

zone "westos.com" IN {
         type master;
         file "westos.com.zone";
         allow-update { none; };
         also-notify{172.25.254.155;};	##辅助DNS的ip为172.25.254.155,说明主dns数据发生改变时,辅助dns随着主dns数据发生改变
};

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<7>进入正相解析库中并修改其域名所对应的ip并重启服务

[[email protected] named]# vim westos.com.zone
[[email protected] named]# systemctl restart named

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
修改的内容如下:

  1 $TTL 1D
  2 @       IN SOA  dns.westos.com. bai.westos.com. (
  3                                         1       ; serial
  4                                         1D      ; refresh
  5                                         1H      ; retry
  6                                         1W      ; expire
  7                                         3H )    ; minimum
  8                 NS      dns.westos.com.
  9 dns             A       172.25.254.166
 10 www             CNAME   bbs.a.westos.com.
 11 bbs.a           A       172.25.254.22
 12 bbs.a           A       172.25.254.11
 13 westos.com.     MX 10   mx1.westos.com.
 14 mx1             A       172.25.254.155

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<8>在服务端解析 www.westos.com

[[email protected] named]# dig www.westos.com

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<9>在客户端解析 www.westos.com,发现同步了

[[email protected] named]# dig www.westos.com

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
注意:
如果之前辅DNS已经同步过主DNS,则需要使用命令rm -rf slaves/*进行删除并进行重启,因为辅DNS只是服务在重启的时候才会同步,只同步唯一的一次,所以当主DNS中的数据发生变化时,辅DNS中的内容不会变
<10>试图改变服务端DNS的数据,重启服务

[[email protected] named]# vim westos.com.zone
[[email protected] named]# systemctl restart named

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
配置文件中更改的内容如下:

1 $TTL 1D
  2 @       IN SOA  dns.westos.com. bai.westos.com. (
  3                                         1       ; serial
  4                                         1D      ; refresh
  5                                         1H      ; retry
  6                                         1W      ; expire
  7                                         3H )    ; minimum
  8                 NS      dns.westos.com.
  9 dns             A       172.25.254.166
 10 www             CNAME   bbs.a.westos.com.
 11 bbs.a           A       172.25.254.222
 12 bbs.a           A       172.25.254.11
 13 westos.com.     MX 10   mx1.westos.com.
 14 mx1             A       172.25.254.155

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<11>在服务端解析www.westos.com,发现其DNS的数据发生了改变

[[email protected] named]# dig www.westos.com

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<12>在客户端解析 www.westos.com,发现其DNS数据没有发生改变,和之前一样,再次重启服务后,依旧没有发生改变,说明辅DNS只同步一次

[[email protected] named]# dig www.westos.com

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<13>在服务端进入/var/named/westos.com.zone文件中,修改DNS的数据并修改其seria的值,之后重启服务

[[email protected] named]# vim westos.com.zone
[[email protected] named]# systemctl restart named

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
修改的内容如下:

 1 $TTL 1D
  2 @       IN SOA  dns.westos.com. bai.westos.com. (
  3                                 20190221        ; serial
  4                                         1D      ; refresh
  5                                         1H      ; retry
  6                                         1W      ; expire
  7                                         3H )    ; minimum
  8                 NS      dns.westos.com.
  9 dns             A       172.25.254.166
 10 www             CNAME   bbs.a.westos.com.
 11 bbs.a           A       172.25.254.222
 12 bbs.a           A       172.25.254.111
 13 westos.com.     MX 10   mx1.westos.com.
 14 mx1             A       172.25.254.155

<14>在服务端解析www.westos.com,发现其DNS的数据发生了改变

[[email protected] named]# dig www.westos.com
在客户端查看slaves的时间是否和现在一样,一样则说明同步成功
[[email protected] named]# stat slaves/
[[email protected] named]# date

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<15>在客户端解析www.westos.com,发现其DNS数据也发生了改变,说明同步成功

[[email protected] named]# dig www.westos.com

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
注意:
1.gpgcheck=1,要加上gpg的所在位置,会进行检测安装的软件是否是redhat公司提供的,安装时会比较慢,因为会有认证(加的内容为gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release)
2.查看serial(最多写10位)的值是否发生改变,改变则同步
3.在两台服务器同步数据时,系统不是读取整个文件的内容,而是比较serial的值是否发生了改变(省时间)

2.DNS的远程更新

前提:客户端的ip为172.25.254.228 服务端为172.25.254.128
<1>在客户端尝试在辅助DNS端更新主DNS,会有REFUSED报错:

[[email protected] slaves]# nsupdate
> server 172.25.254.128
>  update add test.westos.com 86400 A 172.25.254.123
> send
> quit

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<2>在服务端将DNS的解析文件备份并进行查看

[[email protected] named]# cp -p westos.com.zone /mnt
[[email protected] named]# ls /mnt

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<3>查看服务端的selinux状态

[[email protected] named]# getenforce

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<4>在服务端进入DNS的子配置文件,修改其内容并使其生效

[[email protected] named]# vim /etc/named.rfc1912.zones
[[email protected] named]# systemctl restart named

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
修改的内容如下:

zone "westos.com" IN {
        type master;
        file "westos.com.zone";
        allow-transfer{172.25.254.228;};
        allow-update { 172.25.254.228; };
        also-notify{172.25.254.228;};

<5>在客户端再次进行更新,会发现出现了SERVFAIL报错

[[email protected] slaves]# nsupdate
> server 172.25.254.128
>  update add test.westos.com 86400 A 172.25.254.123
> send
> quit

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<6>在服务端修改/var/named的权限,增加可写的权限

[[email protected] named]# ls -Zd /var/named
[[email protected] named]# chmod 770 /var/named
[[email protected] named]# ls -Zd /var/named

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<7>在客户端进行更新,发现没有报错,说明更新成功

[[email protected] slaves]# nsupdate
> server 172.25.254.128
>  update add test.westos.com 86400 A 172.25.254.128
> send
> quit

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<8>在服务端查看/etc/named下的文件,会发现多了一个名为westos.com.zone.jn1文件(此文件是在辅DNS端更新之后生成的)

[[email protected] named]# ls

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<9>在服务端使服务生效后,再次进入解析文件中进行查看,会发现文件中的内容出现了变化,且在辅DNS中更新的也已经成功传到主DNS

[[email protected] named]# systemctl restart named
[[email protected] named]# vim westos.com.zone

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<10>在服务端进行测试,会发现刚才更新的test.westos.com可以解析到对应的ip

[[email protected] named]# dig test.westos.com

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<11>在服务端删除对应的解析文件(westos.com.zone和westos.com.zone.jnl)

[[email protected] named]# rm -rf westos.com.zone*

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<12>在服务端进行测试,会发现无法查看到之前更新的 test.westos.com,显示域名错误的报错

[[email protected] named]# dig test.westos.com

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
注意:
如果在服务端selinux的状态是enforcing,需要手动关闭主DNS写的功能,通过以下命令查看named_write_master_zones是否是出于off状态,如果不是,需要改成off状态

[[email protected] mnt]# getenforce
[[email protected] mnt]# getsebool -a | grep named

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新

3.基于key的DNS更新

<1>在服务端将之前备份的westos.com.zone文件进行还原
[[email protected] named]# cp -p /mnt/* . ##重要*************
DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<2>在服务端生成key

[[email protected] named]# dnssec-****** -a HMAC-MD5 -b 128 -n HOST westoskey

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
注意:
key的名称westoskey一定要记住,后面要用到
<3>在服务端查看key的生成已经key文件中的内容

[[email protected] named]# ls
[[email protected] named]# cat Kwestoskey.+157+11886.key 
[[email protected] named]# cat Kwestoskey.+157+11886.private

<4>在服务端将key模板复制到自己的key文件中并进行修改

[[email protected] named]# cp -p /etc/rndc.key /etc/westos.key
[[email protected] named]# vim /etc/westos.key

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
文件中的内容如下:

key "westoskey" {
        algorithm hmac-md5;
        secret "Qj8Y2iyetMo06f1IDkqr0g==";
};

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<5>在服务端更改主配置文件,使其查看加密文件
[[email protected] named]# vim /etc/named.conf
DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
文件中的更改内容如下:
include “/etc/westos.key”;
DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<6>在服务端更改子配置文件,使其更新方式是采用**的更新方式并生效

[[email protected] named]# vim /etc/named.rfc1912.zones
[[email protected] named]# systemctl restart named

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
文件中增加的内容如下:

 allow-update { key westoskey; };

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<7>在服务端尝试更新DNS,发现被拒绝了,这是因为主DNS已经设置了使用key加密

[[email protected] mnt]# nsupdate
> server 172.25.254.128	##可以不写
> update delete www.westos.com
> send
> quit

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<8>将服务端的钥匙发送给客户端

[[email protected] named]# scp Kwestoskey.+157+11886.* [email protected]:/mnt

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<9>在客户端查看钥匙是否存在

[[email protected] ~]# cd /mnt
[[email protected] mnt]# ls

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
<10>在客户端使用钥匙进行解密,发现可以成功更新主DNS中的内容

[[email protected] mnt]# nsupdate -k Kwestoskey.+157+11886.key 
> update delete www.westos.com
> send
> quit

DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
注意:
1.如果辅DNS出现了以下错误response to SOA query was unsuccessful,说明是主DNS中的解析文件有错误(即westos.com.zone),可能是在备份或者还原时没有加参数-p,从新还原一下或者从下一下即可将此错误去除
DNS部署(三)DNS的集群、远程更新、基于key的DNS更新
2.可能会存在时间不相同的问题,设置时间同步即可,出现的报错是(clocks are unsynchronized)
DNS部署(三)DNS的集群、远程更新、基于key的DNS更新