区域传送
在之前的章节中已经说过,如果一个区域中有多台DNS服务器,那么其中有一台作为主DNS服务器,另外的则作为辅助DNS服务器,并且主DNS服务器和辅助DNS服务器的数据文件要一致,这样才能确保使用主DNS和辅助DNS解析的结果是一致。
对于辅助DNS服务器来说,它是不能手动创建数据文件的,必须由主DNS服务器传送过来。
如果辅助DNS上面没有存在数据文件,此时主DNS服务器会将自己的数据文件全部传送到辅助DNS服务器上面。这种传送机制我们叫做完全区域传送。
如果辅助DNS服务器上面已经存有数据文件,而主DNS的数据文件更新了,此时主DNS服务器会将添加或更新的数据传给辅助DNS服务器,此时辅助DNS服务器来更新自己的数据文件。这种传送机制我们叫做增量区域传送。
当然区域传送需要在相应的区域中定义的。
首先创建辅助服务器需要一台主机,在这里这台主机是192.168.108.190。
安装DNS的相关软件bind97,与之前的安装过程相同
例如:
1、首先在主DNS服务器上面的指定区域上定义只对哪些主机进行区域传送
zone "xsl.com" IN {
type master ;
file "xsl.com.zone" ;
allow-transfer { 192.168.108.190; }; #只允许192.168.108.190这台主机发送区域传送请求
};
2、需要再主DNS服务器上的xsl.com区域的数据文件上增加一条NS记录和A记录
例如:
xsl.com. IN NS ns1.xsl.com.
xsl.com. IN NS ns2.xsl.com.
ns1.xsl.com. IN A 192.168.108.251
ns2.xsl.com. IN A 192.168.108.190
3、配置辅助DNS的配置文件,在相关的区域需要这样定义:
zone "xsl.com" IN {
type slave ; #定义自己是辅助DNS服务器
file "slaves/xsl.com.zone" ; #定义该区域的整解数据文件,这里的路径与之前的有点不一样
masters { 192.168.108.251; }; #定义主DNS服务器是谁
allow-transfer { none; }; #不允许其他主机向自己发送区域传送请求
};
说明一下:由于/var/named的属组是named,且权限为rx,因此不具有w权限,当DNS服务开启时,该进程属主和属组都是named,因此,如果传送的数据文件是不能直接存放在/var/named这个目录下的,而是/var/named/slaves这个目录下,因为这个目录具有w权限。所以在这里辅助DNS的数据文件一般都存在/var/named/slaves目录下。
在创建完成以后,修该DNS的配置文件和数据文件的属主和属组分别是root、named
然后,在重启主DNS服务,观察日志信息(tail /var/log/messages)
此时可能出现传送失败。原因在于要关掉SELinux ,使用setenforce 0关闭SElinux
还要使用iptables -F 清空iptables的所有chain
经过这些步骤以后,就可以完成完全区域传送了。
要想验证增量区域传送,,只需在某个区域的数据文件值修改或增加某个资源记录,在修改这个数据文件的序列号即可。最后重启该服务,就可以观察到增量区域传送也是成功的。
子域授权
如果某个区域太大的话,且这个区域中有多个不同的单位,那么我们可以将每一个单位划分成一个子区域,这样,各单位的dns请求就直接由各子域来负责解析,这样就减轻了父域的压力。
对于定义子域,需要在父域的主DNS服务器的配置文件上面定义。
在主DNS服务器的/etc/named.conf,添加如下几行即可
子域 IN NS ns1.子域
ns1.子域 IN A ip
例如:
mini.xsl.com. IN NS ns1.mini.xsl.com.
ns1.mini.xsl.com. IN NS 192.168.108.15
在父域的主DNS服务器上定义完成之后,在将一台主机配置成子域DNS服务器即可,在上面配置DNS的配置文件和数据文件。配置过程和之前的相同。只不过在这里只需要在父域的主DNS服务器上面定义子域而已。
定义转发域
zone “ZONE_NAME” IN {
type forward ; #定义转发区域
forword {only|first} ; #定义转发规则
forwarders { server_ip ; }; #定义将请求转发给哪个DNS服务器来处理
说明:forward是定义转发规则的,其中only表示将请求只发送给某个服务器来处理,不过解析成功还是不能解析,都返回给本地DNS服务器。
first表示第一次将请求转发给某个DNS服务器,如果不能解析,则在将请求转发给根服务器。