前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
本文介绍的是不再受支持的 CentOS 版本。如果您目前正在运行 CentOS 6 服务器,我们强烈建议升级或迁移到受支持的 CentOS 版本。
原因: CentOS 6 已于2020年11月30日到达生命周期终点(EOL),不再接收安全补丁或更新。因此,本指南不再维护。
请参阅替代方案:
本指南可能仍然作为参考有用,但可能不适用于其他 CentOS 版本。如果有的话,我们强烈建议使用针对您正在使用的 CentOS 版本编写的指南。
前言
本文将向您展示如何设置和配置 BIND DNS 服务器。如果您正在寻找有关如何使用 DigitalOcean 集成的 DNS 服务的指南,您可能希望查看“如何在 DigitalOcean 上设置主机名”文章。
在开始之前,建议您至少拥有两个云服务器来运行您的域名服务器。建议使用两个域名服务器以确保在发生故障时您的主服务器和辅助服务器具有冗余性。您可能还希望考虑使用两个不同的 POP。例如,我们使用了旧金山 1 和纽约 1。在本指南中,我们假设您正在配置主域名服务器和辅助域名服务器。
与任何新服务器一样,确保您的系统始终是最新的非常重要。您可以通过以下方式使用 yum 检查更新来验证这一点:
yum update -y
(注:在 DigitalOcean 中,我们将我们的云服务器称为“droplets”。在本教程中,我们将两个术语都使用)
初始 BIND 安装
首先,我们需要使用 yum 安装 BIND 和 BIND Utilities 软件包。
yum install bind bind-utils -y
接下来,我们将打开 BIND(named)配置文件并进行多处修改。
nano -w /etc/named.conf
您的“options”部分应如下所示,将 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”,以便允许用户适当访问托管区域。
接下来,我们将为我们的第一个域名添加一个新区域,在现有区域下方添加以下内容。
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,例如运行 web 服务器的 droplet。您可以以相同格式添加其他条目。
$TTL 86400@ IN SOA ns1.mydomain.com. root.mydomain.com. ( 2013042201 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL); 指定我们的两个域名服务器INNSns1.mydomain.com.INNSns2.mydomain.com.; 将域名服务器主机名解析为 IP,用您的两个 droplet IP 地址替换ns1INA1.1.1.1ns2INA2.2.2.2; 定义您希望解析的主机名 -> IP 对@INA3.3.3.3wwwINA3.3.3.3
现在我们可以首次启动 named。这可能需要几分钟,因为 named 会生成 rndc.key 文件,这仅在首次执行时发生。
service named restart
一旦 named 成功启动,我们将希望确保它已启用为启动服务,通过运行以下命令:
chkconfig named on
到目前为止,我们应该拥有一个完全运行的主域名服务器。您可以通过运行以下命令验证 BIND 是否正确工作,将 1.1.1.1 替换为您第一个 droplet 的 IP。
dig @1.1.1.1 mydomain.com
如果您收到包含回答和授权部分的响应,则您的域名服务器已正确配置。
配置辅助域名服务器
配置完主域名服务器后,我们现在将在第二个云服务器上设置一个辅助域名服务器。
与第一个云服务器一样,请通过以下方式检查更新以确保您的系统是最新的:
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”。您应该用您第一个 droplet 的 IP 地址替换“1.1.1.1”。
zone "mydomain.com" IN {type slave;masters { 1.1.1.1; };file "mydomain.com.zone";};
配置完我们的辅助区域后,我们将启动 named。同样,这可能需要几分钟,因为我们的 rndc.key 文件在初始生成时会被生成。
service named start
<p与第一个云服务器一样,我们希望确保 named 设置为在启动时运行:
chkconfig named on
您的辅助域名服务器现在应该已经运行。您可以再次使用 dig 验证它是否完全运行,将 2.2.2.2 替换为您第二个 droplet 的 IP。
dig @2.2.2.2 mydomain.com
<p在对主区域文件进行任何更改后,您需要指示 BIND 重新加载。请记住,您还必须增加“serial”指令以确保主服务器和辅助服务器之间的同步。
<p要重新加载区域文件,我们需要在主域名服务器上运行以下命令,然后在辅助域名服务器上运行:
rndc reload
在 chroot 环境中使用 BIND
<p通常建议安装额外的软件包“bind-chroot”,它将 BIND 的权限降低到 chroot 环境。
<p幸运的是,CentOS 软件包使这变得非常简单。唯一值得注意的是,BIND 的活动路径将更改为其 chrooted 等效路径,例如 /var/named 变为 /var/named/chroot/var/named 在 CentOS 6 中,您不需要移动任何文件,因为该软件包会自动创建到非 chrooted 目录的硬链接。
<p如果您希望为其提供的额外安全性启用此功能,可以执行以下操作:
yum install bind-chroot -yservice named restart