DNS 服务器有几种类型,如主服务器、从服务器、转发服务器和缓存服务器等,其中缓存服务器是最容易设置的一种。由于 DNS 使用 UDP 协议,它提高了查询时间,因为它不需要确认。

缓存服务器也被称为解析器,它将查询 DNS 记录并从其他服务器获取所有 DNS 详细信息,并将每个查询请求保存在其缓存中以供以后使用,因此当我们在将来执行相同请求时,它将从其缓存中提供服务,从而进一步减少响应时间。
如果您想在 CentOS/RHEL 6 中设置 DNS 缓存服务器,请按照这里的指南操作:
在 CentOS/RHEL 6 中设置缓存 DNS 名称服务器
我的测试环境
DNS server : dns.tecmintlocal.com (Red Hat Enterprise Linux 7.1) Server IP Address : 192.168.0.18 Client : node1.tecmintlocal.com (CentOS 7.1) Client IP Address : 192.168.0.29
第 1 步:在 RHEL/CentOS 7 中安装缓存 DNS 服务器
1. 缓存 DNS 服务器可以通过 bind 软件包安装。如果您不记得软件包名称,可以使用以下命令快速搜索软件包名称。
# yum search bind

2. 在上述结果中,您将看到几个软件包。从中,我们需要选择并仅安装 bind 和 bind-utils 软件包,使用以下 yum 命令进行安装。
# yum install bind bind-utils -y

第 2 步:在 RHEL/CentOS 7 中配置缓存 DNS
3. 安装DNS包后,我们可以继续配置DNS。使用您喜欢的文本编辑器打开并编辑/etc/named.conf
。做出以下建议的更改(或者您可以根据您的需求使用您的设置)。
listen-on port 53 { 127.0.0.1; any; }; allow-query { localhost; any; }; allow-query-cache { localhost; any; };

这些指令指示DNS服务器监听UDP端口53,并允许来自localhost及其它能够到达服务器的机器的查询和缓存响应。
4. 请注意,此文件的所属必须设置为root:named
,如果SELinux已启用,在编辑配置文件后,我们需要确保其上下文设置为named_conf_t
,如图4所示(辅助文件/etc/named.rfc1912.zones
也是如此):
# ls -lZ /etc/named.conf # ls -lZ /etc/named.rfc1912.zones
否则,在继续之前配置SELinux上下文:
# semanage fcontext -a -t named_conf_t /etc/named.conf # semanage fcontext -a -t named_conf_t /etc/named.rfc1912.zones
5. 此外,现在我们需要测试DNS配置,以查找语法错误,然后再启动bind服务:
# named-checkconf /etc/named.conf
6. 在语法验证结果似乎完美之后,重新启动named服务以使新更改生效,并确保服务在系统启动时自动启动,然后检查其状态:
# systemctl restart named # systemctl enable named # systemctl status named

7. 接下来,打开防火墙上的端口53。
# firewall-cmd --add-port=53/udp # firewall-cmd --add-port=53/udp --permanent

第3步:在RHEL和CentOS 7中配置Chroot Cache-Only DNS服务器。
如果您想在chroot环境中部署仅缓存的DNS服务器,您需要在系统上安装chroot包,并且不需要进行其他配置,因为它默认会硬链接到chroot。
# yum install bind-chroot -y
一旦安装了chroot包,您可以重启named以使新更改生效:
# systemctl restart named
9. 接下来,在/var/named/chroot/etc/
内创建一个符号链接(也称为/etc/named.conf
):
# ln -s /etc/named.conf /var/named/chroot/etc/named.conf
步骤4:在客户端机器上配置DNS
10. 将DNS缓存服务器IP 192.168.0.18 作为解析器添加到客户端机器。编辑/etc/sysconfig/network-scripts/ifcfg-enp0s3
,如下所示:
DNS=192.168.0.18

并按照以下内容编辑/etc/resolv.conf:
nameserver 192.168.0.18
11. 最后,是检查我们的缓存服务器的时候了。为此,您可以使用dig实用程序或nslookup命令。
选择任何网站并对其查询两次(我们将使用facebook.com作为一个例子)。注意,第二次使用dig查询时,查询完成得更快,因为它是从缓存中提供的。
# dig facebook.com

您还可以使用nslookup来验证DNS服务器是否如预期般工作。
# nslookup facebook.com

总结
在本文中,我们已经解释了如何在Red Hat Enterprise Linux 7和CentOS 7中设置DNS仅缓存服务器,并在客户端机器上进行了测试。如果您有任何问题或建议,请随时使用下面的表格告诉我们。
Source:
https://www.tecmint.com/install-configure-cache-only-dns-server-in-rhel-centos-7/