DNS集群:
当只有一个DNS服务器时,如果访问量较大,服务器很可能会出现崩溃,所以需要再添加一些DNS服务器来分担DNS服务器的压力。
所有DNS服务器的内容都是一样的。当主DNS更改内容时,相应的,从DNS也会更改,但仅仅只需要更改主DNS就可以了,下面就介绍以下如何配置DNS集群。
假设desktop为主DNS,server为辅助DNS
1.修改虚拟机server的IP为172.25.75.200与desktop的IP处在同一网段
2.给server安装bind yum install bind -y
3.vim /etc/named.conf 更改主配置文件,与之前相同
4.vim /etc/named.rfc1912.zones 更改如下:
19 zone "localhost" IN {
20 type master;
21 file "named.localhost";
22 allow-update { none; };
23 };
24 zone "westos.com" IN {
25 type slave; 从属设备
26 masters { 172.25.75.100; }; 主设备为172.25.75.100,也就是desktop
27 file "slaves/westos.com.zone"; 重启服务后,会自动生成westos.com.zone文件在/var/named/slaves目录下
28 allow-update { none; };
29 };
复制19-23行,粘贴到下面,然后更改为24-29行的内容
5.主DNS服务器还原到之前的环境,删掉多向DNS解析,此处用不到。
6.主DNS vim /etc/named.rfc1912.zones 在第27行后面加上also-notify { 172.25.254.216; };告诉216服务器,当主DNS更改内容时,辅助DNS也要更改。
在企业7版本之前,还需要添加allow-transfer { 172.25.254.216; }; 允许216服务器同步此服务器,企业7版本之后不需要添加
7.重启desktop(主DNS)服务 systemctl restart named
8.重启server(辅助DNS)服务 systemctl restart named,当重启完服务后会在slaves目录下生成一个文件,而且此文件里面是乱码,被加密了。如果没有生成,那就可能是两边火墙没有关,或者一个火墙没关,或者IP不对。
但仅仅设置这些都是不够的,辅助DNS依然不会因为主DNS更改而更改
因此,这里还需要了解一个知识:
在主DNS下 vim /var/named/westos.com.zone 打开此文件
$TTL 1D
@ IN SOA dns.westos.com. liming.westos.com. (
2 ; serial 注意:serial是辅助DNS标识,更改此文件内容时,必须更改这个标识,辅助DNS才会识别,每次更改内容都需要更改标示。
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.75.100
www A 172.25.75.201
li A 172.25.75.102
liming CNAME xupt
xupt A 172.25.75.103
westos.com. MX 10 172.25.75.215.
~
测试:先在主DNS下只修改www.westos.com的解析地址,不修改serial的值,然后在辅助DNS下dig测试,发现辅助DNS并没有更改过来,然后在主DNS下修改serial的值,然后在辅助DNS下dig测试,发现辅助DNS已经修改过来了。
DNS远程更新:
在desktop(被更新的DNS的主机)下配置:
1.更改权限 chmod 770 /var/named/ 为什么要更改权限呢,因为当更新DNS时,其实是在/var/named/下写了一个数据,注意不是文件,如果没有权限,就不能写入数据,也就不能更新DNS
2.允许更新,vim /etc/named.rfc1912.zones ,在此文件下的28行更改为allow-update { 172.25.75.200; }; 允许200更新
3.如果内核级火墙(getenforce)为Enforcing,那么此时named_write_master_zones是关闭的,所以需要打开:setsebool -P named_write_master_zones on
注意:最好备份一个westos.com.zone文件,以便还原。
在server(去更新别人的DNS的主机)下输入命令:
nsupdate
> server 172.25.254.116 要更新的DNS
> update add test.westos.com 86400 A 172.25.254.111 更新的内容是添加一个域名 test.westos.com 86400表示一天,A表示域名正向解析,解析为172.25.254.111
> send
如果更新被拒绝,那么就要检查以下是否重启了服务,目录权限是否可以被named可写,防火墙等等。
如果更新成功,此时可以在desktop的/var/named/下看到一个.jnl的数据,重启desktop的服务,就会发现要更新的DNS已经更新。
DNS远程更新的加密
(被更新的是desktop,执行更新的是server)
desktop下:
1.dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westoskey 生成公私钥,在那个目录下执行此命令,就会在那个目录下生成公私钥。 -a表示algorithm(算法的意思)HMACMD5 是从 MD5 哈希函数构造的一种键控哈希算法,被用作基于哈希的消息验证代码 (HMAC)。-b表示bits(加密多少位)-n是是生成钥匙的类型,westoskey是钥匙的名字。
2.cp -p /etc/rndc.key /etc/westos.key 复制一个加密的模板
3.vim /etc/westos.key 修改文件的加密字符和钥匙名称 加密字符是生成公私钥的加密字符,可以cat查看然后复制,钥匙名称是前面生成公私钥的名称,也就是westoskey
4.vim /etc/named.conf include"/etc/westos.key"; 包括的这个路径是前面模板复制的路径
5.vim /etc/named.rfc1912.zones 在此文件的允许更新改为 key westoskey westoskey是前面生成公私钥的名称。
6.重启服务 systemctl restart named
7.复制公私钥到其他服务器,只有有公私钥的服务器才可以更新DNS,两者缺一不可
scp Kwestoskey.+157+32991.* root@172.25.254.216:/mnt/
server下:
nsupdate -k Kwestoskey.+157+32991.private 或者nsupdate -k Kwestoskey.+157+32991.key,两个钥匙都可以
> server 172.25.254.116 要更新的DNS
> update delete www.westos.com 更新内容为,删除www.westos.com。
> send