天天看点

RHEL6.3下如何解决DNS主从复制与selinux的并存问题

<b>相关理论解析</b><b>:</b>

1、DNS的类型,master/slave架构;

Master 这种类型的DNS的这个配置文件中,包括所有主机的主机名等相关信息,一般是我们手动添加修改的,设置完之后我们要重启服务的才能读取到master库里面的数据内容;一般我们在做DNS的时候都是指定这样的数据库类型的,同时也要能保证把数据的内容提供给slave服务器,这个需要我们设置下。在配置文件中。

Slave 这中类型的数据必须要有master才可以使用,一般情况下都是一主一备的,一个master一个slvae,如果我们都是有master那么我们需要添加修改的时候需要两台同时添加、修改、要是不小心修改错误,很尴尬的,如果我们做成master/slave那么我们直接修改master即可。但是在这里我们牵扯到一个优先级的问题,不管是master还是slave,要保证数据的内容完全一致。

2、 Master/slave数据的同步过程;

首先slave的数据是从master上来读取的,但是master数据更新之后怎么通知slave的呢?有两种方式来告诉slave数据库的。一种是master主动告知,在master修改数据内容之后,并且加大数据库的序列号,然后重启服务之后master会告知slave的。第二是slvae主动去找master,当发现master的数据和自己的不一样的时候,slave会更新的。

1、 测试环境;

<a href="http://www.rsyslog.org/"></a>

Master Server: 192.168.100.102

Slave Server: 192.168.100.103

<b>一、 </b><b>构建主域名服务器</b>

修改主域名服务器全局配置文件named.conf,在options中插入一行 allow-transfer { 192.168.100.103;};意思是允许192.168.100.103主机下载该区域的地址数据库。

修改辅助配置文件,这个平时根据工作需求修改,一般不修改的,这里为了方便测试,可以将有效地址解析记录的默认缓存时间设置成5分钟 将无效地址解析记录(该数据库中不存在的地址)默认缓存时间设置为5分钟

修改完成之后,重启服务,主域名服务器也就配置完毕了。完了记得验证下主域名服务器是否能够正常工作。这里不做测试参考以上文档。

<b>二、 </b><b>构建从域名服务器</b>

从域名服务器作为主域名服务器的冗余备份,可以与主域名服务器一起,同时提供本域内主机名与IP地址的解析,从域名服务器的地址数据库需要从主域名服务器中定期更新。

建立从域名服务器的辅助区域配置文件

将tpye 设置为slave类型

正向区域和反向区域的名称保持和主DNS的一致,不过文件路径要放到/var/named/slaves下

加上主DNS的IP地址 masters { 192.168.100.102;};

默认情况下,可以看到从DNS slaves目录下是没有数据的。重新启动named服务,发现里面有了主DNS的区域数据库信息。

我们也可以查看从域名服务器的日志信息,发现有了很多从域名服务器从主域名服务器获取区域数据库的信息,其实是根据 主域名服务器的序列号变更获取的。到这里从域名服务器搭建完成。

<b>三、 </b><b>测试从域名服务器是否能够提供</b><b>DNS</b><b>解析</b>

修改PC机DNS为从域名服务器IP地址

<b>四、 </b><b>下面我们看看在</b><b>selinux</b><b>开启</b><b>enforcing</b><b>模式的情况下,从</b><b>DNS</b><b>是否能够正常工作。</b>

通过实验开启的情况下,从DNS是可以工作的。这里面存在个问题,如果重新创建个文件取代slaves,就不可以正常工作了。如下

创建dnsslaves目录替代slaves目录,然后将权限设置的跟slaves一样

修改从DNS的辅助区域配置文件,将正向反向区域数据库地址指向 dnsslaves目录

修改主DNS的辅助区域配置文件的序列号,官方一般要求加1即可,其实只要变化就行了。

启动从DNS服务,发现 dnsslaves目录下没有数据,这是为什么呢。

查看日志,发现是权限文件,我们知道 dnsslaves的权限跟slaves是一模一样的,哪问题肯定出在selinux上了。

试着将selinux模式更改为permissive模式,重新启动从DNS服务,发现dnsslaves目录下有了主DNS的区域数据库文件。可以看出确实是selinux所致,那么如何设置selinux,让从DNS在selinux的enforcing模式下也可以工作呢。

为了测试先删除刚才生成的区域数据库文件,然后通过 man named_selinux查看 named在selinux的配置文件,发现有一条跟辅助区域配置文件的目录存放地址有关

可以通过getsebool –a命令查看 这个参数是否开启,模式是off的,通过以上提示开启这个参数就可以了。然后将selinux模式设置为enforcing模式,重新启动从DNS服务,发现dnsslaves目前下有了主区域配置文件信息。

本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1094790,如需转载请自行联系原作者