一.简介
1.背景介绍
实际环境中为了避免单点故障,DNS服务器是由一组服务器组成,每一个服务器上都有若干个区域,不同服务器上的相同区域分为主和从两种角色。由于正向和反向是不同的区域,所以多台服务器间的相同区域可以互为主从或者一主多从,下图为例进行演示。
2.DNS主从原理
下图所示为主辅DNS服务器数据同步的过程,首先master DNS服务器每次修改完成并重启服务后,将传送notify给所有的slave DNS服务器。slave DNS服务器将查询master服务器的SOA记录,master DNS服务器收到请求后将SOA记录发送给Slave DNS服务器,Slave DNS服务器收到后同时对比查询结果中的serial值,如果serial值不大于本机的话将结束数据同步过程;但是如果serial值大于本机的话,slave DNS将发送zone transfer请求要求(AXFR/IXFR)。Master响应zone transfer请求并传送结果,直到整个slave更新完成。
3.DNS误区
DNS主从之间只会进行解析记录的同步,当主DNS出现故障时,从DNS不会把ip切换为主DNS的ip。可以在客户端填写多个DNS地址,这样达到冗余的作用。
二.部署
1.主从都安装yum -y install bind bind-chroot bind-utils
安装包作用
bind : 提供了域名服务的主要程序及相关文件
bind-utils : 提供了对DNS服务器的测试工具程序(如:nslookup、dig etc)
bind-chroot : 为bind提供一个伪装的根目录以增强安全性;
2.修改主配置文件vim /etc/named.conf
options {
listen-on port 53 { any; };
#listen-on-v6 port 53 { ::1; }; #注销或删除
allow-query { any; }; #允许所有ip访问
forwarders { 219.141.136.10; }; #用于缓存转发,可不写
}
3.在文件行尾添加cd /etccp -p named.rfc1912.zones named.rfc1912.zones.bakvim named.rfc1912.zones
zone "rzsj.com" IN { #设置正向DNS区域名称
type master;
file "rzsj.com.zone"; /#设置对应的正向区域地址数据库文件
allow-transfer {192.168.18.41;}; #允许哪些从dns下载数据
};
4.检测文档,没有消息就是好消息named-checkconf
5.建立区域文件,正向解析配置文件:cd /var/namedcp -p named.localhost rzsj.com.zonevim rzsj.com.zone
$TTL 1D
@ IN SOA @ root (
0 ; serial #每次同步要手动+1
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.rzsj.com. #一定带.
ns1 A 192.168.1.184
ns2 A 192.168.1.185
6.重新加载配置systemctl restart named systemctl enable named`
7.进行测试dns是否运行nslookup ns2.rzsj.com 192.168.1.184
8.修改从配置文件vim /etc/named.conf
options {
listen-on port 53 { any; };
#listen-on-v6 port 53 { ::1; }; #注销或删除
allow-query { any; };
}
9.行尾添加cd /etccp -p named.rfc1912.zones named.rfc1912.zones.bakvim named.rfc1912.zones
zone "rzsj.com" IN {
type slave; #设置为从
masters { 192.168.1.184; }; #主dns地址
file "slaves/rzsj.com.zone"; #放到slaves下
};
10.检测配置,没反应就正常named-checkconf
11.重新加载配制,查看是否为空ls /var/named/slaves/systemctl restart namedsystemctl enable named
看是否有文件了ls /var/named/slaves/
12.看是否同步了解析记录nslookup ns1.rzsj.com 192.168.1.185
三.维护
添加区域文件
1.主DNS操作,将例子区域复制一下,变动一下即可vim /etc/named.rfc1912.zones
zone "baidu.com" IN {
type master;
notify yes;
#允许哪个从DNS复制信息
also-notify { 192.168.1.101; };
allow-update { none; };
file "baidu.com.zone";
allow-transfer { 192.168.1.101; };
};
2.建立解析文件,每添加一条记录,将serial记录值+1,下次为4vim /var/named/baidu.com.zone
$TTL 1D
@ IN SOA @ root (
3 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.baidu.com.
ns1 A 192.168.1.100
ns2 A 192.168.1.101
3.从DNS操作,复制区域文件,谈些主服务的地址vim /etc/named.rfc1912.zones
zone "baidu.com" IN {
type slave;
masters { 192.168.1.100; };
file "slaves/rzsj.net.zone";
// allow-transfer { none; };
allow-update { none; };
};
4.均操作systemctl restart named
5.指定dns服务器并测试解析结果是否正确nslookup ns1.baidu.com 192.168.1.100nslookup ns1.baidu.com 192.168.1.101
添加新记录
1.修改主配置文件,首先将serial的值+1 否则不会同步vim /var/named/rzsj.com.zone
2.在末尾增加解析记录,ns2为主机名开头 192.168.1.185为主机ip地址
ns2 A 192.168.1.185
3.重启systemctl restart named