域名服务器(DNS)是互联网基础设施的关键组成部分,构建您的DNS服务器可能会具有挑战性。好在有BIND,您可以在短时间内创建自己的BIND DNS服务器。BIND以其灵活性和高可用性支持而在管理员中享有很好的声誉。
在本文中,您将学习如何安装和配置安全的BIND DNS服务器,并验证子域名是否解析到正确的IP地址。
继续阅读并毫不费力地创建您的DNS服务器!
先决条件
本教程将进行实际演示。要跟着做,请确保具备以下条件。
- A Linux server – This example uses the Ubuntu 20.04 server.
- A non-root user with root privileges or root/administrator user.
- A domain name pointed to the server IP address – This demo uses the atadomain.io domain and server IP address 172.16.1.10.
安装BIND软件包
默认的Ubuntu软件源提供BIND软件包,但不会随系统一起安装。您可以将BIND安装为主DNS服务器或仅具有权威性。BIND为您提供强大的功能,如主-从安装支持、DNSSEC支持和内置的访问控制列表(ACL)。
要开始使用BIND DNS,您首先需要使用apt软件包管理器在您的机器上安装BIND软件包。
1. 打开您的终端并登录到服务器。
2. 接下来,运行下面的apt update
命令以更新和刷新存储库包索引。该命令确保您安装的是最新版本的软件包。

3. 更新完成后,运行下面的apt install
命令来安装Ubuntu服务器的BIND软件包。
bind9-utils和bind9-dnsutils软件包提供了用于BIND的附加命令行工具。这些软件包对于测试和管理BIND DNS服务器非常有用。

4. 最后,运行下面的systemctl
命令来验证BIND服务。
BIND软件包附带了named服务,并在BIND软件包安装期间自动启动和启用。
现在,您应该看到BIND named服务已启用,并且状态为active (running)。在此时,BIND服务将在系统启动/引导时自动运行。

配置BIND DNS服务器
您现在已在Ubuntu服务器上安装了BIND软件包,现在是时候在您的Ubuntu服务器上设置BIND安装了。如何?通过编辑BIND和named
服务的配置。
BIND的所有配置都位于/etc/bind/目录下,而named
服务的配置位于/etc/default/named目录下。
1. 使用您喜欢的编辑器编辑/etc/default/named配置,并在OPTIONS
行上添加选项-4
,如下所示。此选项将仅在IPv4上运行named
服务。
保存您所做的更改并关闭文件。

2. 接下来,编辑/etc/bind/named.conf.options文件,并在directory "/var/cache/bind";
行下填写以下配置。
此配置将BIND服务设置为在服务器的本地主机和公共IP地址(172.16.1.10)上以默认UDP端口53运行。同时,它允许从任何主机对BIND DNS服务器进行查询,使用Cloudflare DNS 1.1.1.1作为转发器。
在底部,注释掉listen-on-v6 { any; };
行,如下所示,以禁用named
服务在IPv6上的运行。

3. 最后,运行以下命令验证BIND配置。
如果没有输出,则 BIND 配置正确,没有任何错误。

设置 DNS 区域
此时,您已经配置了 BIND DNS 服务器的基本配置。您准备好为您的域创建一个 DNS 服务器,并为您的应用程序添加其他子域。您需要定义并创建一个新的 DNS 区域配置来实现这一点。
在本教程中,您将创建一个新的名称服务器(ns1.atadomain.io)和子域(www.atadomain.io、mail.atadomain.io、vault.atadomain.io)。
1. 使用您喜欢的编辑器编辑 /etc/bind/named.conf.local 文件,并添加以下配置。
此配置定义了 atadomain.io 域名的正向区域(/etc/bind/zones/forward.atadomain.io)和反向区域(/etc/bind/zones/reverse.atadomain.io)。
保存更改并关闭文件。

2. 接下来,运行以下命令创建一个新目录(/etc/bind/zones
)以存储字符串 DNS 区域配置。
3. 依次运行以下每个命令将默认的正向和反向区域配置复制到 /etc/bind/zones
目录。

4. 现在,使用您喜欢的编辑器编辑正向区域配置(/etc/bind/zones/forward.atadomain.io),并填充以下配置。
前向区配置是您定义域名和服务器IP地址的地方。此配置将把域名转换为服务器的正确IP地址。
以下配置创建了以下名称服务器和子域:
ns1.atadomain.io
– 您域名的主要名称服务器,具有IP地址172.16.1.10
。
- 用于
atadomain.io
域的MX记录,由mail.atadomain.io
处理。MX记录用于邮件服务器。
- 应用程序的子域:
www.atadomain.io
、mail.atadomain.io
和vault.atadomain.io
。
保存更改并关闭文件。

5. 与前向区类似,编辑反向区配置文件(/etc/bind/zones/reverse.atadomain.io)并填充以下配置。
反向区将服务器IP地址转换为域名。反向区或PTR记录对于像邮件服务器这样的服务至关重要,它会影响邮件服务器的声誉。
PTR记录使用IP地址的最后一块,例如IP地址为172.16.1.10
的服务器的数字为10的PTR记录。
此配置创建以下域的反向区或PTR记录:
- 名称服务器
ns1.atadomain.io
具有反向区或PTR记录172.16.1.10
。
- 域
mail.atadomain.io
的PTR记录指向服务器IP地址172.16.1.20
。
保存更改并关闭文件。

6. 现在,运行以下命令检查和验证 BIND 配置。
当您的配置正确时,您将看到类似下面的输出。

7. 最后,运行以下systemctl
命令重新启动并验证named
服务。这样做会将新更改应用于named
服务。
在下面,您可以看到 named 服务的状态是活动的(正在运行)。

使用 UFW 防火墙打开 DNS 端口
此时,您已完成 BIND DNS 服务器的安装。但是您仍然需要保护您的 DNS 服务器。您将设置 UFW 防火墙并打开服务器的 DNS 端口以响应任何查询。这样做允许客户端向 BIND DNS 服务器发出查询。
出于安全原因,建议在您的 Ubuntu 服务器上运行和启用 UFW 防火墙。
1. 运行以下ufw
命令以检查 UFW 防火墙上的可用应用程序。
您应该在以下的UFW应用列表中看到Bind9。

2. 现在运行以下命令以允许Bind9通过UFW防火墙。

3. 最后,运行以下命令来检查UFW防火墙上启用的规则。
您应该在列表中看到像下面截图中的Bind9应用程序。

验证BIND DNS服务器安装
您现在已完成BIND DNS安装并配置了UFW防火墙。但是如何验证您的DNS服务器安装呢?dig
命令就可以解决问题。
Dig是用于故障排除DNS服务器安装的命令行实用程序。dig
对给定的域名进行DNS查找,并显示该域名目标的详细答案。在Ubuntu系统上,dig
是bind9-dnsutil
软件包的一部分。
要验证您的BIND DNS服务器安装:
1. 运行下面的每个dig
命令来验证子域www.atadomain.io
、mail.atadomain.io
和vault.atadomain.io
。
如果您的DNS服务器安装成功,则每个子域名将根据forward.atadomain.io配置解析到正确的IP地址。
以下是子域名www.atadomain.io解析到服务器IP地址172.16.1.10的输出。

以下是子域名mail.atadomain.io解析到服务器IP地址172.16.1.20的输出。

还有子域名vault.atadomain.io解析到服务器IP地址172.16.1.50的输出。

2. 接下来,运行以下dig
命令来验证atadomain.io
域的MX记录。
您应该看到atadomain.io域具有MX记录mail.atadomain.io。

3. 最后,运行以下命令来验证服务器IP地址172.16.1.10
和172.16.1.20
的PTR记录或反向区域。
如果您的BIND安装成功,则每个IP地址将解析为在reverse.atadomain.io配置中定义的域名。
您可以看到,服务器IP地址172.16.1.10解析为域名ns1.atadomain.io。

如您所见,服务器IP地址172.16.1.20解析为域名mail.atadomain.io。

结论
在整个教程中,您已经学会了如何在您的Ubuntu服务器上创建并设置一个安全的BIND DNS服务器。您还创建了用于添加您的域并通过运行dig
命令验证DNS服务器的前向和反向区域。
现在,您如何在您的环境中实施BIND DNS服务器呢?也许实现BIND作为授权服务器?或者通过主从 BIND安装来建立高可用性?