
BIND 是使用最为广泛的DNS服务器软件,是 Berkeley Internet Name Domain 的缩写,BIND 也经常被用来指代它的服务名 named。最新版的 BIND 软件为9.0,使用 MPL 授权,由Internet Systems Consortium (ISC)负责开发和维护。
几乎所有的 Internet 连接都以 DNS 查找开始, 在发送电子邮件或浏览网站之前,必须通过域名来获取主机的IP地址,而 BIND 是Unix / Linux 操作系统的首选DNS服务器。
在本文中,我们将使用 CentOS 7 上的 BIND 9 配置主用(主)和辅助(从)DNS服务器。本文只介绍如何搭建主/从 DNS 服务器系统,而如果想要了解关于 BIND 和 DNS 的详细内容,请参阅相关文章。
1] 实验环境
主用 DNS 服务器:
- 主机名:dns1.rultr.com
- IP地址:172.16.200.1
- 操作系统:CentOS 7.6
辅助 DNS 服务器:
- 主机名:dns2.rultr.com
- IP地址:172.16.200.2
- 操作系统:CentOS 7.6
2] CentOS 7 系统安装 BIND 9
BIND 9 软件包可以从 CentOS 的官方软件库中获得,于是我们可以方便的使用 YUM 工具来安装它:
# yum install -y bind bind-utils
两台服务器都安装好 BIND 软件后,就可以分别进行配置了。
3] 主用 DNS 服务器的配置
默认情况下,named.service 在 localhost 上运行。 如果想让该服务器成为域内的可信 DNS 服务器,我们就需要将named.service 配置为在服务器连接的网络接口上运行。
BIND 的配置文件为”/etc/named.conf”,将其中如下内容进行修改:
listen-on port 53 { 127.0.0.1;172.16.200.1;};
allow-query { localhost;172.16.200.0/24;};
其中标红部分为添加的内容,其余内容则不需要修改。
为了让配置文件保持整洁,我们新建一个本地解析文件”named.conf.local”,当然我们也可以修改”/etc/named.rfc1912.zones”文件来增加解析区域,因为这个文件是默认生效的,不过还是建议新建一个文件,这样看起来要清爽一些。将如下内容添加到”named.conf.local”文件中:
zone "rultr.com" {
type master;
file "/var/named/rultr.com";
};
zone "200.16.172.in-addr.arpa" {
type master;
file "/var/named/200.16.172.in-addr.arpa";
};
这里,我们定义了两个DNS区域,一条为正向解析区域,另一条为反向解析区域。
现在要做的是根据以上的配置来设置域名区域对应。首先修改正向解析文件”/var/named/rultr.com”,将如下内容添加至文件,完成DNS正向解析:
$TTL 1h
@ IN SOA rultr.com. root.rultr.com. (
2019090101 ; Serial YYYYMMDDnn
24h ; Refresh
2h ; Retry
28d ; Expire
2d ) ; Minimum TTL
;Name Servers
@ IN NS dns1
;Mail Servers
@ IN MX 0 mail
;Other Servers
dns1 IN A 172.16.200.1
mail IN A 192.168.116.3
web IN A 192.168.116.4
;Canonical Names
www IN CNAME web
mail IN CNAME mail
同样道理,再配置一个域名的反向解析记录”/var/named/200.16.172.in-addr.arpa”:
$TTL 1h
@ IN SOA 200.16.172.in-addr.arpa root.rultr.com. (
2019090101 ; Serial YYYYMMDDnn
24h ; Refresh
2h ; Retry
28d ; Expire
2d ) ; Minimum TTL
;Name Servers
@ IN NS dns1
;Other Servers
dns1 IN A 172.16.200.1
;PTR Records
1 IN PTR dns1
3 IN PTR mail1
4 IN PTR web
最后,使用如下命令将我们新建的解析文件添加到”/etc/named.conf”文件配置中:
# echo 'include "/etc/named.conf.local";' >> /etc/named.conf
全部配置完成后,使用如下命令进行功能测试,看配置是否有误:
# named-checkzone rultr.com /var/named/rultr.com # named-checkzone rultr.com /var/named/200.16.172.in-addr.arpa

图.1 检查named服务区域配置
现在,修改两个区域文件的属组:
# chgrp named /var/named/rultr.com # chgrp named /var/named/200.16.172.in-addr.arpa
全部完成后,使用以下命令将 named 服务设置为开机启动,并打开防火墙放行 DNS 服务:
# systemctl enable --now named.service # firewall-cmd --permanent --add-service=dns # firewall-cmd --reload
为了验证 DNS 功能,需要将主机的 DNS 服务器修改为”172.16.200.1″,修改方法可以根据个人喜好自行选择,修改完成后,使用如下命令查询 DNS 记录,验证 BIND 功能:
# dig www.rultr.com
如果得到如下结果,就表示主要 DNS 服务器已经配置成功了。

图.2 使用 dig 命令验证 DNS 服务器功能
4] 辅助DNS服务器的配置
我们已经配置完成了一台主用 DNS 服务器,现在我们将配置一台辅助 DNS 服务器。
安装 BIND 软件与之前主用服务器的步骤一致,然后对服务器进行如下配置。
首先修改配置文件”/etc/named.conf”,修改为如下内容:
listen-on port 53 { 127.0.0.1;172.16.200.2;};
allow-query { localhost;172.16.200.0/24;};
然后,同主用 DNS 服务器配置一样,添加一个本地区域配置文件”/etc/named.conf.local”,内容如下:
zone "rultr.com" {
type slave;
masters { 172.16.200.1; };
file "/var/named/rultr.com"
; };
zone "200.16.172.in-addr.arpa" {
type slave;
masters { 172.16.200.1; };
file "/var/named/200.16.172.in-addr.arpa";
};
之后,修改主用 DNS 服务器正向和反向解析文件,其内容分别如下:
正向:
$TTL 1h
@ IN SOA rultr.com. root.rultr.com. (
2019090101 ; Serial YYYYMMDDnn
24h ; Refresh
2h ; Retry
28d ; Expire
2d ) ; Minimum TTL
;Name Servers
@ IN NS dns1
@ IN NS dns2
;Mail Servers
@ IN MX 0 mail
;Other Servers
dns1 IN A 172.16.200.1
dns2 IN A 172.16.200.2
mail IN A 192.168.116.3
web IN A 192.168.116.4
;Canonical Names
www IN CNAME web
mail IN CNAME mail
反向:
$TTL 1h
@ IN SOA 200.16.172.in-addr.arpa root.rultr.com. (
2019090101 ; Serial YYYYMMDDnn
24h ; Refresh
2h ; Retry
28d ; Expire
2d ) ; Minimum TTL
;Name Servers
@ IN NS dns1
@ IN NS dns2
;Other Servers
dns1 IN A 172.16.200.1
dns2 IN A 172.16.200.2
;PTR Records
1 IN PTR dns1
2 IN PTR dns2
3 IN PTR mail1
4 IN PTR web
最后,启动辅助 DNS服务器 named 服务并开启防火墙端口即可。如果出现报错信息,则可能是因为开启了 SElinux 安全功能,则按如下步骤解决。
首先执行如下命令:
# setsebool -P named_write_master_zones on
最后,修改主用 DNS 服务器的配置文件”/etc/named.conf.local”,添加 DNS 记录传送功能,修改后的配置文件如下:
zone "rultr.com" {
type master;
file "/var/named/rultr.com";
allow-transfer {172.16.200.2; };
also-notify {172.16.200.2; };
};
zone "200.16.172.in-addr.arpa" {
type master;
file "/var/named/200.16.172.in-addr.arpa";
allow-transfer {172.16.200.2; };
also-notify {172.16.200.2; };
};
现在,就可以使用”dig”命令来验证辅助 DNS 服务器是否工作正常了,当然,在这之前要把这个 DNS 服务器加入到主机的网络配置中。
# dig @172.16.200.2 mail.rultr.com

图.3 使用dig命令验证辅助 DNS 服务器
至此,使用BIND 软件搭建的主从 DNS 服务器使用就全部完成了。