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 服务器使用就全部完成了。