前言
本文将向您介绍如何设置和配置BIND DNS服务器。 如果您正在寻找关于如何使用DigitalOcean的集成DNS服务的指南,你可能要检讨“如何设置与DigitalOcean主机名”文章。
在我们开始之前,建议您至少有两个云服务器来运行您的Nameservers。 建议使用两个Nameservers,以确保主服务器和辅助服务器在发生故障时是冗余的。 你也可以考虑使用两个不同的POP。 例如,我们使用了旧金山1和纽约1.为了本指南的目的,将假设您正在配置主Nameservers和辅助Nameservers。
值得注意的是,如果您管理大量域,这可能不是最可行的解决方案,因为您需要在主域名服务器和从属域名服务器上手动添加域。 据说,运行您自己的域名服务器是一个伟大的方式,以更直接控制您的托管基础设施,并声明完全控制您的DNS记录。
与任何新的服务器一样,确保您的系统是最新的非常重要。 您可以通过检查使用yum如下更新验证这一点:
yum update -y
(注:在DigitalOcean中,我们将我们的云服务器称为“Droplet”。我们将在本教程中使用这两个术语)
初始BIND安装
首先,我们需要使用yum安装BIND和BIND实用程序包。
yum install bind bind-utils -y
接下来,我们将打开BIND(命名)配置文件并进行几个修改。
nano -w /etc/named.conf
您的“选项”部分应显示如下,用您的第二滴的IP代替2.2.2.2。
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"; };
上面, 听上加以注释,监听所有可用的接口。 应该关闭递归,以防止您的服务器在“反射”DDoS攻击中被滥用。 允许传输指令白名单传送到您的辅助Droplet的IP。 此外,我们已经改变了允许查询指令“任何”,以允许用户托管区域适当的访问。
接下来,我们要为我们的第一个域添加一个新区域,您应该在现有区域下面的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是您的第一滴的IP,2.2.2.2是您的第二滴的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 ) ; 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
我们现在可以第一次开始命名。 而名为生成rndc.key文件,只发生在第一次执行这可能需要几分钟的时间。
service named restart
一旦命名已成功启动,我们将确保通过运行以下命令启用它作为启动服务:
chkconfig named on
到目前为止,我们应该有一个完全可操作的主Nameservers。 您可以通过运行以下命令验证BIND是否正常工作,用第一滴的IP替换1.1.1.1。
dig @1.1.1.1 mydomain.com
如果您收到包含答案和权限部分的响应,则说明您的Nameservers已正确配置。
从属Nameservers配置
配置我们的主要Nameservers后,我们现在将在我们的第二个云服务器上设置一个从属Nameservers。
与往常一样,请确保您的系统是最新的通过与Yum检查更新如下:
yum update -y
我们可以通过在第二个Droplet上安装BIND(和相关的实用程序),以与第一个Droplet相同的方式开始:
yum install bind bind-utils -y
我们将通过打开named.conf中,使我们以前犯了同样的变化,ommitting“ 允许转让 ”行继续。 此指令是不必要的,因为我们将只从主Nameservers传输记录。
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。 您应该用您的第一滴的IP地址替换“1.1.1.1”。
zone "mydomain.com" IN { type slave; masters { 1.1.1.1; }; file "mydomain.com.zone"; };
配置我们的从区域后,我们将开始命名。 而再次开始生成我们的rndc.key文件,这可能需要几分钟。
service named start
与第一个云服务器一样,我们要确保named被设置为在启动时运行以下:
chkconfig named on
你的slaveNameservers现在应该运行了。 你可以验证它再次使用挖 ,用你的第二个Droplet的IP取代2.2.2.2全面运作。
dig @2.2.2.2 mydomain.com
在对主区域文件进行任何更改后,您将需要指示BIND重新加载。 记住,还必须增加“serial”指令,以确保主机和从机之间的同步。
要重新加载区域文件,我们需要在主Nameservers上运行以下命令,然后是从属:
rndc reload
BIND在chroot环境中
通常建议安装额外的软件包“ 的bind-chroot环境 ”,这将下降BIND的权限进入chroot环境。
幸运的是,CentOS包使这非常简单。 值得一提的唯一的方面是,BIND活动路径将改变他们的chroot的等价物,例如在/ var /命名成为在/ var /命名/ chroot环境的/ var /命名在CentOS 6,你不会需要移动的任何文件作为包自动创建到非chrooted目录的硬符号链接。
如果您想为所提供的附加安全性启用此功能,可以执行以下操作:
yum install bind-chroot -y service named restart