状态: 已弃用
本文介绍了不再受支持的 CentOS 版本。 如果您目前正在运行运行 CentOS 6 的服务器,我们强烈建议您升级或迁移到受支持的 CentOS 版本。
原因: CentOS 6 已于 2020 年 11 月 30 日结束生命周期 (EOL) and no longer receives security patches or updates. For this reason, this guide is no longer maintained.
请参阅:
本指南可能仍可用作参考,但可能不适用于其他 CentOS 版本。 如果可用,我们强烈建议使用为您使用的 CentOS 版本编写的指南。
前言
本文将向您展示如何设置和配置 BIND DNS 服务器。 如果您正在寻找有关如何使用 DigitalOcean' 的集成 DNS 服务的指南,您可能需要查看 “如何使用 DigitalOcean 设置主机名” 文章。
在我们开始之前,建议您至少有两个云服务器来运行您的域名服务器。 建议使用两个名称服务器,以确保您的主服务器和辅助服务器在发生故障时是冗余的。 您可能还需要考虑使用两个不同的 POP。 例如,我们使用了旧金山 1 和纽约 1。 出于本指南的目的,假设您同时配置了主名称服务器和辅助名称服务器。
值得注意的是,如果您要管理大量域,这可能不是最可行的解决方案,因为您需要在主名称服务器和从名称服务器上手动添加域。 话虽如此,运行您自己的域名服务器是更直接地控制您的托管基础设施并完全控制您的 DNS 记录的好方法。
与任何新服务器一样,确保您的系统是最新的始终很重要。 您可以通过使用 yum 检查更新来验证这一点,如下所示:
yum update -y
(注意:在 DigitalOcean 中,我们将云服务器称为“液滴”。 我们将在本教程中使用这两个术语)
初始 BIND 安装
首先,我们需要使用 yum 安装 BIND 和 BIND Utilities 包。
yum install bind bind-utils -y
接下来,我们将打开 BIND(命名)配置文件并进行一些修改。
nano -w /etc/named.conf
您的“选项”部分应如下所示,将 2.2.2.2 替换为您的第二个 droplet 的 IP。
options { #listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; allow-transfer { localhost; 2.2.2.2; }; recursion no; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; };
上面,必须注释 listen-on 才能监听所有可用的接口。 应关闭递归,以防止您的服务器在“反射”DDoS 攻击中被滥用。 allow-transfer 指令将传输到您的辅助 droplet' 的 IP 列入白名单。 此外,我们已将 allow-query 指令更改为“any”,以允许用户正确访问托管区域。
接下来,我们要为我们的第一个域添加一个新区域,您应该将以下内容添加到现有区域下方的 named.conf 中。
zone "mydomain.com" IN { type master; file "mydomain.com.zone"; allow-update { none; }; };
在保存 named.conf 并进行上述更改后,我们就可以创建我们的第一个区域文件了。
配置 BIND 区域
首先,我们需要使用您在上面的配置中指定的名称打开区域文件。 (例如:mydomain.com.zone)
nano -w /var/named/mydomain.com.zone
我们将以下内容添加到新创建的文件中。 您应该用您自己的信息替换适用的信息,其中 1.1.1.1 是您的第一个 droplet 的 IP,2.2.2.2 是您的第二个 droplet 的 IP,3.3.3.3 是您希望将域本身指向的 IP,例如运行网络服务器的液滴。 您可以自由添加相同格式的其他条目。
$TTL 86400 @ IN SOA ns1.mydomain.com. root.mydomain.com. ( 2013042201 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) ; Specify our two nameservers IN NS ns1.mydomain.com. IN NS ns2.mydomain.com. ; Resolve nameserver hostnames to IP, replace with your two droplet IP addresses. ns1 IN A 1.1.1.1 ns2 IN A 2.2.2.2 ; Define hostname -> IP pairs which you wish to resolve @ IN A 3.3.3.3 www IN A 3.3.3.3
我们现在可以开始第一次命名了。 这可能需要几分钟,而 named 会生成 rndc.key 文件,该文件仅在第一次执行时发生。
service named restart
一旦命名成功启动,我们将要确保它作为启动服务启用,通过运行以下命令:
chkconfig named on
到目前为止,我们应该有一个完全可操作的主名称服务器。 您可以通过运行以下命令验证 BIND 是否正常工作,将 1.1.1.1 替换为您的第一个 droplet 的 IP。
dig @1.1.1.1 mydomain.com
如果您收到包含答案和权限部分的响应,则您的名称服务器已正确配置。
从名称服务器配置
配置主域名服务器后,我们现在将在第二个云服务器上设置一个从属域名服务器。
与往常一样,请使用 yum 检查更新以确保您的系统是最新的,如下所示:
yum update -y
我们可以首先在第二个 droplet 上安装 BIND(和相关实用程序),方式与第一个相同:
yum install bind bind-utils -y
我们'将继续打开named.conf并进行我们之前所做的相同更改,省略“allow transfer”行。 该指令是不必要的,因为我们只会从我们的主名称服务器传输记录。
nano -w /etc/named.conf
options { #listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; recursion no; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; };
我们将添加我们在第一个 droplet 上配置的区域,这次将“type”指令更改为 slave,而不是 master。 您应该将“1.1.1.1”替换为您的第一个 Droplet 的 IP 地址。
zone "mydomain.com" IN { type slave; masters { 1.1.1.1; }; file "mydomain.com.zone"; };
配置我们的从区后,我们将开始命名。 同样,在最初生成我们的 rndc.key 文件时,这可能需要几分钟。
service named start
与第一个云服务器一样,我们要确保将 named 设置为在启动时运行,如下所示:
chkconfig named on
您的从属名称服务器现在应该已启动并正在运行。 您可以通过再次使用 dig 来验证它是否完全可操作,将 2.2.2.2 替换为您的第二个 droplet 的 IP。
dig @2.2.2.2 mydomain.com
在对主区域文件进行任何更改后,您需要指示 BIND 重新加载。 请记住,您还必须增加“串行”指令以确保主从之间的同步性。
要重新加载区域文件,我们需要在主名称服务器上运行以下命令,然后是从服务器:
rndc reload
在 chroot 环境中绑定
通常建议安装附加包“bind-chroot”,它会将 BIND 的权限放到 chroot 环境中。
幸运的是,CentOS 软件包使这变得非常简单。 唯一值得注意的方面是 BIND 的活动路径将更改为其 chrooted 等效项,例如 /var/named 变为 /var/named/chroot/var/named 与 CentOS 6 ,您将不需要移动任何文件,因为该包会自动创建指向非 chroot 目录的硬符号链接。
如果您想启用此功能以增加它提供的安全性,您可以执行以下操作:
yum install bind-chroot -y service named restart