Chinaunix首页 | 论坛 | 博客
  • 博客访问: 88139
  • 博文数量: 20
  • 博客积分: 1926
  • 博客等级: 上尉
  • 技术积分: 210
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-16 17:21
文章分类
文章存档

2011年(1)

2009年(19)

分类: LINUX

2009-10-17 15:19:14

 

互为主从的DNS服务器

 

Author: Jaylin Zhou

Date: 10/14/2009

 

环境:三两台装有Red Hat Enterprise Linux 5 update 3的机器。

 

要求:三台机器分别为ABC。用ABDNS服务器,C做客户端。当解析sina.com域名时,A为主DNS服务器,B为辅助DNS服务器;当解析yahoo.com域名时,B为主DNS服务器,A为辅助DNS服务器。

A有两个网卡:eth0192.168.1.4),eth1192.168.2.4

B有两个网卡:eth0192.168.1.10),eth1192.168.2.10

C有两个网卡:eth0192.168.1.6),eth1192.168.2.6

这里用192.168.1.0/24sina.com的解析,用192.168.2.0/24yahoo.com的解析。

 

要在AB上安装下面几个包:

bind-utils-9.3.4-10.P1.el5

bind-chroot-9.3.4-10.P1.el5

bind-9.3.4-10.P1.el5

caching-nameserver-9.3.4-10.P1.el5

 

首先在A上配置sina.com的正向及反向解析(sina.com的主DNS服务区)

第一步,修改/etc/named.caching-nameserver.conf文件的下面几个地方:

listen-on port 53 { 127.0.0.1; 192.168.1.4; };

 allow-query     { localhost; any; };

view localhost_resolver {

        match-clients      { localhost; any; };

        match-destinations { localhost; any; };

        recursion yes;

        include "/etc/named.rfc1912.zones";

};

第二步,在/etc/named.rfc1912.zones文件中添加下面两个zone

zone "sina.com" IN {

        type master;

        file "sina.com.zone";

        allow-update { none; };

};

zone "1.168.192.in-addr.arpa" IN {

        type master;

        file "sina.com.local";

        allow-update { none; };

};

第三步,在/var/named/chroot/var/named/目录下创建下面两个文件,并把所有者和所有组分别改为rootnamed

# touch sina.com.zone sina.com.local

# chown root.named sina.com.zone sina.com.local

第四步,编辑sina.com.zone文件和sina.com.local文件:

# vi sina.com.zone

$TTL    86400

@             IN SOA  server1.sina.com. root (括号中的内容中略)

               IN NS           server1.sina.com.

localhost        IN A             127.0.0.1

server1         IN A            192.168.1.4

server2         IN A            192.168.1.10

# vi sina.com.local

$TTL    86400

@       IN      SOA     server1.sina.com. root@example.com(括号中的内容略)

         IN      NS      server1.sina.com.

4        IN      PTR     server1.sina.com.

10       IN      PTR     server2.sina.com.

第五步,在/etc/resolv.conf文件中更改DNS服务器:

nameserver 192.168.1.4

第六步,启动named服务。

 

B上配置sina.com的正向及反向解析(sina.com的辅助DNS服务区)

第一步,修改/etc/named.caching-nameserver.conf文件的下面几个地方:

listen-on port 53 { 127.0.0.1; 192.168.1.10; };

 allow-query     { localhost; any; };

view localhost_resolver {

        match-clients      { localhost; any; };

        match-destinations { localhost; any; };

        recursion yes;

        include "/etc/named.rfc1912.zones";

};

第二步,在/etc/named.rfc1912.zones文件中添加下面两个zone

zone "sina.com" IN {

        type slave;

        file "slaves/sina.com.zone";

        masters { 192.168.1.4; };

};

zone "1.168.192.in-addr.arpa" IN {

        type slave;

        file "slaves/sina.com.local";

        masters { 192.168.1.4; };

};

第三步,在/etc/resolv.conf文件中更改DNS服务器:

nameserver 192.168.1.10

第四步,启动named服务。

这时候sina.com的主DNS服务器和辅助DNS服务器的配置完毕了。接下来配置yahoo.comDNS服务器。

 

首先在B上配置yahoo.com的正向及反向解析(yahoo.com的主DNS服务区)

第一步,修改/etc/named.caching-nameserver.conf文件的下面几个地方:

listen-on port 53 { 127.0.0.1; 192.168.1.10; 192.168.2.10; };

 allow-query     { localhost; any; };

view localhost_resolver {

        match-clients      { localhost; any; };

        match-destinations { localhost; any; };

        recursion yes;

        include "/etc/named.rfc1912.zones";

};

第二步,在/etc/named.rfc1912.zones文件中再添加下面两个zone

zone "yahoo.com" IN {

        type master;

        file "yahoo.com.zone";

        allow-update { none; };

};

zone "2.168.192.in-addr.arpa" IN {

        type master;

        file "yahoo.com.local";

        allow-update { none; };

};

第三步,在/var/named/chroot/var/named/目录下创建下面两个文件,并把所有者和所有组分别改为rootnamed

# touch yahoo.com.zone yahooo.com.local

# chown root.named yahoo.com.zone yahoo.com.local

第四步,编辑yahoo.com.zone文件和yahoo.com.local文件:

# vi yahoo.com.zone

$TTL    86400

@               IN SOA  server1.yahoo.com. root (中间内容略)

                IN NS           server1.yahoo.com.

localhost       IN A            127.0.0.1

server1         IN A            192.168.2.10

server2         IN A            192.168.2.4

# vi yahoo.com.local

$TTL    86400

@       IN      SOA     server1.yahoo.com. root.localhost (中间内容略).

        IN      NS      server1.yahoo.com.

4       IN      PTR     server2.yahoo.com.

10      IN      PTR     server1.yahoo.com.

第五步,在/etc/resolv.conf文件中更改DNS服务器:

nameserver 192.168.2.10

第六步,重新启动named服务。

 

A上配置yahoo.com的正向及反向解析(yahoo.com的辅助DNS服务区)

第一步,修改/etc/named.caching-nameserver.conf文件的下面几个地方:

listen-on port 53 { 127.0.0.1; 192.168.1.4; 192.168.2.4; };

 allow-query     { localhost; any; };

view localhost_resolver {

        match-clients      { localhost; any; };

        match-destinations { localhost; any; };

        recursion yes;

        include "/etc/named.rfc1912.zones";

};

第二步,在/etc/named.rfc1912.zones文件中添加下面两个zone

zone "yahoo.com" IN {

        type slave;

        file "slaves/yahoo.com.zone";

        masters { 192.168.1.10; };

};

zone "2.168.192.in-addr.arpa" IN {

        type slave;

        file "slaves/yahoo.com.local";

        masters { 192.168.2.10; };

};

第三步,重新启动named服务。

至此,yahoo.com的主DNS服务器和辅助DNS服务器的配置完毕了。

 

C机器测试

首先修改/etc/resolv.conf文件:

nameserver 192.168.1.4

其实nameserver可以是AB的任何一个网卡的IP

ping server1.sina.com

ping server2.sina.com

ping server1.yahoo.com

ping server2.yahoo.com

都成功。

 

Trouble-shooting:

1. 编辑yahoo.com.zone文件时,SOA前的@不能删掉。如果删除了,named-checkzone的时候会报错“no owner”。

2. 如果启动named服务时出现permission deny字样,有可能是SELinux的问题。解决方法:

# restorecom -R /var/named/chroot/etc/*

3. 修改了yahoo.com.zone文件后,就算执行rndc reload,也不能生效。解决方法:

将辅助DNS中的slaves目录下同步得到的文件删除,再重新reload一下,然后在客户端上执行rndc flush,将DNS缓存清空。

4. DNS服务器和辅助DNS服务器Transfer的时候如果不能同步,查看日志,发现有permission deny或者directory not writable的字样,可能是某个文件的所有者和所有组出错。例如slaves目录的所有者和所有组应该为namednamed

还有一个原因可能导致不能同步。编辑named.rf1912.conf文件时,

zone{}里面

type slave;

file "slaves/xxxx";

可能忘记写slaves了。

5. 如果启动named服务时出现下面的报错提示

dns_rdata_fromtext: jaylin.com.local:10: near 'client.jaylin.com.': bad dotted quad

zone 1.168.192.in-addr.arpa/IN: loading master file jaylin.com.local: bad dotted quad

localhost_resolver/1.168.192.in-addr.arpa/IN: bad dotted quad

那么很有可能是因为在jaylin.com.local文件里,错误的将PTR写成了A,即将反向解析的文件格式(通常以.local结尾)和正向解析的文件格式(通常以.zone结尾)弄混了。这里强调一下,正向解析的文件模板为/var/named/chroot/var/named/localhost.zone文件,反向解析的文件模板为/var/named/chroot/var/named/named.local文件。

阅读(1791) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~