如何在 CentOS 中设置辅助 DNS 服务器
在上一教程中,我们为测试域 example.tst
创建了主 DNS 服务器 (ns1
)。在本教程中,我们将使用 CentOS 上的 bind
包为同一域创建辅助 DNS 服务器 (ns2
)。
在设置辅助 DNS 服务器时,应牢记以下因素。
您不需要需要在辅助 DNS 服务器中手动创建正向和反向区域文件。区域文件将定期自动从主 DNS 服务器同步。
每当主 DNS 服务器中修改任何区域文件时,都应更新参数
serial
。仅当主服务器上的serial
发生更改时,辅助 DNS 服务器才会启动同步(区域传输)。
我们假设要设置的辅助DNS服务器的IP地址是172.16.1.4
。让我们开始安装吧。
设置主机名
就像主 DNS 服务器一样,辅助名称服务器的主机名应正确定义为 FQDN。
# vim /etc/sysconfig/network
HOSTNAME=ns2.example.tst
请注意,此文件中指定的主机名参数在服务器启动时使用。因此,更改不会立即生效。以下命令可用于在运行时立即更改服务器的主机名。
# hostname ns2.example.tst
设置后,可以使用以下命令验证主机名。
# hostname
ns2.example.tst
在继续下一步之前,请确保所有三台服务器的主机名均已正确设置。
安装软件包
就像主服务器一样,辅助 DNS 服务器可以设置为带或不带 chroot
。使用 yum 可以轻松安装必要的软件包。
没有chroot
:
# yum install bind
使用chroot
:
# yum install bind-chroot
准备区域传输的配置文件
CentOS 上由 bind
提供支持的 DNS 服务器默认允许任何请求服务器进行区域传输。出于安全原因,我们需要配置主 DNS 服务器,使其仅允许区域传输到辅助 DNS 服务器 (172.16.1.4
)。
1.主DNS服务器
没有chroot
:
# vim /etc/named.conf
使用chroot
:
# vim /var/named/chroot/etc/named.conf
zone "example.tst" IN {
type master;
file "example-fz"; ## the zone file hosted at NS1 ##
allow-update { none; };
allow-transfer {172.16.1.4; }; ## NS2 is permitted ##
};
zone "1.16.172.in-addr.arpa" IN {
type master;
file "rz-172-16-1"; ##the zone file hosted at NS1##
allow-update { none; };
allow-transfer {172.16.1.4; }; ## NS2 is permitted ##
};
2.辅助DNS服务器
安装时提供的默认配置文件可用于配置辅助服务器。但是,我们将使用另一个示例配置文件,因为它更容易调整。
没有chroot
:
# cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /etc/named.conf
使用chroot
:
# cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /var/named/chroot/etc/named.conf
复制示例配置文件后,添加/修改以下行。
options {
directory "/var/named";
forwarders {8.8.8.8; };
};
zone "example.tst" IN {
type slave; ## NS2 role is defined ##
file "example-fz"; ## the name of the zone file to be automatically created ##
//allow-update { none; };
allow-transfer {172.16.1.3; }; ## NS1 is allowed for zone transfer when necessary ##
masters {172.16.1.3; }; ## the master NS1 is defined ##
};
zone "1.16.172.in-addr.arpa" IN {
type slave; ## NS2 role is defined ##
file "rz-172-16-1"; ## the name of the zone file to be automatically created ##
// allow-update { none; };
allow-transfer {172.16.1.3; }; ## the master NS1 is defined ##
masters {172.16.1.3; };
};
完成安装
为了确保不存在与权限相关的问题,我们需要调整以下内容。
没有chroot
:
chmod 770 /var/named/
使用chroot
,您需要在named
服务启动后按如下方式修改权限。
# chmod 770 /var/named/chroot/var/named
现在一切准备就绪,我们可以重新启动 named
服务。另外,请确保 named
服务已添加到启动列表中。
# service named restart
# chkconfig named on
如果一切顺利,辅助 DNS 服务器应向主 DNS 服务器请求区域传输,并填充其自己的 /var/named
。日志文件 /var/log/messages
应包含有关 named
服务以及区域传输状态的有用信息。
测试辅助 DNS 服务器
我们可以使用 dig
或 nslookup
来测试 DNS 操作。我们将在本教程中演示 nslookup 的使用。可以使用 yum 安装必要的软件包。
# yum install bind-utils
# nslookup
> server 172.16.1.4
Default server: 172.16.1.4
Address: 172.16.1.4#53
> example.tst
Server: 172.16.1.4
Address: 172.16.1.4#53
Name: example.tst
Address: 172.16.1.3
> set type=mx
> example.tst
Server: 172.16.1.4
Address: 172.16.1.4#53
example.tst mail exchanger = 10 mail.example.tst.
> exit
故障排除
1. 我们不需要在辅助DNS服务器中创建任何区域文件。所有区域文件将从主服务器同步。
2. 辅助服务器上的 named
服务将定期启动与主服务器的区域传输。如果要强制进行一次性区域传输,可以使用命令“rndc retransfer
”。例如:
# rndc retransfer example.tst
3. 仅当主服务器上的序列
已被修改/增加时,辅助 DNS 服务器才会更新其区域文件。
4. 确保目录 /var/named
或 /var/named/chroot/var/named
(如果是 chroot
)可由 named
用户写入。
5. /var/log/messages
应包含有用的信息。
6. 我关闭了SELinux。
7. 确保防火墙允许 UDP 端口 53。
希望这可以帮助。