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

发表评论

电子邮件地址不会被公开。 必填项已用*标注