域名服务 (DNS) 是一种互联网服务,可将 IP 地址映射到完全限定域名 (FQDN),反之亦然。
BIND 代表 Berkley Internet Naming Daemon。
BIND 是用于在 Linux 上维护名称服务器的最常用程序。
在本教程中,我们将解释如何安装和配置 DNS 服务器。如果您是 DNS 新手,您应该首先了解DNS 的基础知识及其工作原理。
一、网络信息
在本教程中,我们将为下图所示的网络设置本地 DNS 服务器。
我们将使用“hgst.com.cn”域作为此 DNS 安装的示例。“mail”、“web”、“ns”是驻留在此域中的主机。
可以将单个系统配置为充当缓存名称服务器、主/主和辅助/从属。我们将此 DNS 配置为 Primay/Master 以及缓存 DNS 服务器。
我们将在“10.42.0.83”上安装 DNS 服务器。
2.安装绑定
使用适用于您的 Linux 发行版的包管理实用程序安装 bind9 包。
在 Debian/Ubuntu 版本上,执行以下操作:
$ sudo apt-get install bind9
在 Redhat/CentOS/Fedora 版本上,执行以下操作:
# yum install bind9
所有的 DNS 配置都存储在 /etc/bind 目录下。主要配置是 /etc/bind/named.conf ,它将包括其他需要的文件。名为 /etc/bind/db.root 的文件描述了世界上的根名称服务器。
3.配置缓存NameServer
DNS 缓存服务器的工作是查询其他 DNS 服务器并缓存响应。下次给出相同的查询时,它将提供来自缓存的响应。缓存会定期更新。
请注意,即使您可以将绑定配置为作为主服务器和缓存服务器,出于安全原因,也不建议这样做。建议使用单独的缓存服务器。
配置缓存名称服务器所需要做的就是将您的 ISP(Internet 服务提供商)的 DNS 服务器或任何 OpenDNS 服务器添加到文件 /etc/bind/named.conf.options 中。例如,我们将使用 google 的公共 DNS 服务器 8.8.8.8 和 8.8.4.4。
取消注释并编辑 /etc/bind/named.conf.options 文件中如下所示的以下行。
forwarders {
8.8.8.8;
8.8.4.4;
};
完成上述更改后,重新启动 DNS 服务器。
$ sudo service bind9 restart
4.测试缓存NameServer
您可以使用 dig 命令来测试 DNS 服务。DIG 命令示例解释了有关如何执行 DNS 查找的更多信息。
$ dig ubuntu.com
;; Query time: 1323 msec
现在,当您第二次执行挖掘时,查询时间应该有所改善。正如你在下面看到的,第二次只用了 3 毫秒,因为它从我们的缓存 DNS 服务器获取信息。
$ dig ubuntu.com
;; Query time: 3 msec
5. 配置 Primary/Master Nameserver
接下来,我们将 bind9 配置为域/区域“thegeekstuff.net”的主节点/主节点。
作为配置我们的 Primary/Master Nameserver 的第一步,我们应该将 Forward 和 Reverse 解析添加到 bind9。
要向 bind9 添加 DNS 正向和反向解析,请编辑 /etc/bind9/named.conf.local。
zone "hgst.com.cn" {
type master;
file "/etc/bind/db.hgst.com.cn";
};
zone "0.42.10.in-addr.arpa" {
type master;
notify no;
file "/etc/bind/db.10";
};
现在文件 /etc/bind/db.thegeekstuff.net 将包含将主机名解析为该域/区域的 IP 地址的详细信息,文件 /etc/bind/db.10 将包含将 IP 地址解析为主机名的详细信息.
6. 为 Primary/Master NameServer 构建正向解析
现在我们将前向解析所需的详细信息添加到 /etc/bind/db.thegeekstuff.net。
首先,将 /etc/bind/db.local 复制到 /etc/bind/db.thegeekstuff.net
$ sudo cp /etc/bind/db.local /etc/bind/db.hgst.com.cn
接下来,编辑 /etc/bind/db.hgst.com.cn 并替换以下内容。
在具有 SOA 的行中:localhost。– 这是负责该域的服务器的 FQDN。我在 10.42.0.83 中安装了 bind9,其主机名为“ns”。所以替换“本地主机”。与“ns.hgst.com.cn.”。确保它以点 (.) 结尾。
在具有 SOA 的行中:root.localhost。– 这是负责此服务器的人员的电子邮件地址。使用点(。)而不是@。我已经替换为 lak.localhost。
在具有 NS: localhost 的行中。– 这是为域 (NS) 定义名称服务器。我们必须将其更改为名称服务器的完全限定域名。将其更改为“ns.hgst.com.cn”。确保你有一个“。” 在最后。
接下来,为域定义 A 记录和 MX 记录。记录是将主机名映射到 IP 地址的记录,MX 记录将告诉邮件服务器用于该域。
更改完成后,/etc/bind/db.hgst.com.cn文件将如下所示:
$TTL 604800
@ IN SOA ns.hgst.com.cn. lak.localhost. (
1024 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.hgst.com.cn.
hgst.com.cn. IN MX 10 mail.hgst.com.cn.
ns IN A 10.42.0.83
web IN A 10.42.0.80
mail IN A 10.42.0.70
6. 为 Primary/Master NameServer 建立反向解析
我们会将反向解析所需的详细信息添加到文件 /etc/bind/db.10 中。将文件 /etc/bind/db.127 复制到 /etc/bind/db.10
$ sudo cp /etc/bind/db.127 /etc/bind/db.10
接下来,编辑 /etc/bind/db.10 文件,基本上更改与 /etc/bind/db.hgst.com.cn 相同的选项
$TTL 604800
@ IN SOA ns.hgst.com.cn. root.localhost. (
20 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
接下来,为 /etc/bind/db.hgst.com.cn中的每个 A 记录添加一条 PTR 记录。
$TTL 604800
@ IN SOA ns.hgst.com.cn. root.hgst.com.cn. (
20 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
83 IN PTR ns.hgst.com.cn.
70 IN PTR mail.hgst.com.cn.
80 IN PTR web.hgst.com.cn.
每当您修改文件 db.hgst.com.cn 和 db.10 时,您也需要增加“序列号”。通常管理员使用 DDMMYYSS 作为序列号,当他们修改时,相应地更改序列号。
最后重启bind9服务:
$ sudo service bind9 restart
7.测试DNS服务器
现在我们已经为我们的域配置了 DNS 服务器。我们将通过从 web.hgst.com.cn ping mail.hgst.com.cn 来测试我们的 DNS 服务器。
如果 ping 成功,那么我们已经成功配置了 DNS。
您还可以使用nslookup和dig来测试 DNS 服务器。
在 web.hgst.com.cn 服务器上,将以下内容添加到 /etc/resolv.conf
nameserver 10.42.0.83
现在 ping,mail.hgst.com.cn,它应该从我们刚刚配置的 DNS 服务器中正确解析地址。
$ ping mail.hgst.com.cn
PING mail.hgst.com.cn (10.42.0.70) 56(84) bytes of data.
64 bytes from mail.hgst.com.cn (10.42.0.70): icmp_req=1 ttl=64 time=0.482 ms
64 bytes from mail.hgst.com.cn (10.42.0.70): icmp_req=2 ttl=64 time=0.532 ms