网站搜索

如何在 RHEL/CentOS 7 中安装和配置“仅缓存 DNS 服务器”和“未绑定”


使用“Unbound”(是一种验证、递归和缓存 DNS 服务器软件)缓存名称服务器,回到 RHEL/CentOS 6.x(其中 x 是版本号),我们使用 bind 配置DNS服务器的软件。

在本文中,我们将使用“未绑定”缓存软件在 RHEL/CentOS 7 系统中安装和配置 DNS 服务器。

DNS 缓存服务器用于解析它们收到的任何 DNS 查询。如果服务器缓存该查询,并且将来任何客户端请求的相同查询,该请求将从 DNS“未绑定”缓存传递,这可以比第一次解析时在几毫秒内完成。

缓存仅充当代理来解析来自任一转发器的客户端查询。使用缓存服务器,将缓存数据库保留在未绑定的服务器中,从而减少网页的加载时间。

我的服务器和客户端设置

为了演示目的,我将使用两个系统。第一个系统将充当(主DNS服务器,第二个系统将充当本地DNS客户端

主DNS服务器
Operating System   :    CentOS Linux release 7.0.1406 (Core)
IP Address	   :	192.168.0.50
Host-name	   :	ns.tecmintlocal.com
客户端机
Operating System   :	CentOS 6
IP Address	   :	192.168.0.100
Host-name	   :	client.tecmintlocal.com

第 1 步:检查系统主机名和 IP

1. 在设置缓存 DNS 服务器之前,请确保您已为系统添加了正确的主机名并配置了正确的静态 IP 地址(如果未设置系统静态 IP 地址)。

2. 设置正确的主机名和静态IP地址后,您可以通过以下命令验证它们。

hostnamectl
ip addr show | grep inet

第2步:安装和配置Unbound

3. 在安装“Unbound”包之前,我们必须将系统更新到最新版本,之后才能安装“Unbound”包。

yum update -y
yum install unbound -y

4. 安装软件包后,在对原始文件进行任何更改之前,先复制未绑定的配置文件。

cp /etc/unbound/unbound.conf /etc/unbound/unbound.conf.original

5. 接下来,使用您喜欢的任何文本编辑器打开并编辑“unbound.conf”配置文件。

vim /etc/unbound/unbound.conf

打开文件进行编辑后,进行以下更改:

接口

搜索接口并启用我们要使用的接口,或者如果我们的服务器有多个接口,我们必须启用接口0.0.0.0

这里我们的服务器IP是192.168.0.50,所以,我将在此接口中使用unbound。

Interface 192.168.0.50
启用 IPv4 和协议支持

搜索以下字符串并将其设为“Yes”。

do-ip4: yes
do-udp: yes
do-tcp: yes
启用日志记录

要启用日志,请添加如下变量,它将记录每个未绑定的活动。

logfile: /var/log/unbound
隐藏身份和版本

启用以下参数来隐藏 id.serverhostname.bind 查询。

hide-identity: yes

启用以下参数来隐藏 version.serverversion.bind 查询。

hide-version: yes
访问控制

然后搜索访问控制以允许。这是为了允许哪些客户端可以查询此未绑定的服务器。

这里我使用了0.0.0.0,这意味着任何人都可以向该服务器发送查询。如果我们需要拒绝对某个范围的网络的查询,我们可以定义哪些网络需要拒绝未绑定的查询。

access-control: 0.0.0.0/0 allow

注意:我们可以将其替换为allow_snoop,而不是allow,这将启用一些附加参数,例如dig和它支持递归和非递归。

域名不安全

然后搜索域不安全。如果我们的域使用 DNS 安全密钥,我们需要定义可用于域不安全的服务器。在这里我们的域将被视为不安全。

domain-insecure: "tecmintlocal.com
前锋区

然后更改此服务器未满足的请求查询的转发器,它将转发到根域(.)并解析查询。

forward-zone:
        name: "."
        forward-addr: 8.8.8.8
        forward-addr: 8.8.4.4

最后,使用 wq! 保存并退出配置文件。

6. 进行上述配置后,现在使用以下命令验证 unbound.conf 文件是否有任何错误。

unbound-checkconf /etc/unbound/unbound.conf

7.文件验证无误后,您可以安全地重新启动“未绑定”服务并在系统启动时启用它。

systemctl start unbound.service
sudo systemctl enable unbound.service

步骤 3:本地测试 DNS 缓存

8. 现在是时候通过“钻取”(查询)一个“india.com”域来检查我们的 DNS 缓存了。首先,“india.com”域的“drill”命令结果将需要几毫秒,然后进行第二次钻取并记录查询时间 两次练习都需要。

drill india.com @192.168.0.50

您在上面的输出中看到了吗,第一个查询花费了近 262 毫秒 来解析,第二个查询花费了 0 毫秒 来解析域(india.com)。

这意味着,第一个查询会缓存在我们的 DNS 缓存中,因此当我们第二次运行“drill”时,查询将从本地 DNS 缓存中提供,这样我们就可以提高网站的加载速度。

步骤 4:刷新 Iptables 并添加 Firewalld 规则

9.我们不能在同一台机器上同时使用iptablesfirewalld,如果我们这样做会互相冲突,因此删除 ipables 规则将是一个好主意。要删除或刷新 iptables,请使用以下命令。

iptables -F

10.永久删除 iptables 规则后,现在将 DNS 服务永久添加到 firewalld 列表中。

firewall-cmd --add-service=dns
firewall-cmd --add-service=dns --permanent

11.添加DNS服务规则后,列出规则并确认。

firewall-cmd --list-all

第 5 步:Unbound 管理和故障排除

12. 要获取当前服务器状态,请使用以下命令。

unbound-control status

转储 DNS 缓存

13. 如果您想在文本文件中转储 DNS 缓存信息,您可以使用以下命令将其重定向到某个文件以供将来使用。

 # unbound-control dump_cache > /tmp/DNS_cache.txt

14. 要从转储文件中恢复或导入缓存,可以使用以下命令。

unbound-control dump_cache < /tmp/DNS_cache.txt

刷新 DNS 记录

15. 要检查未绑定缓存服务器中的转发器是否解析了特定地址,请使用以下命令。

unbound-control lookup google.com

16.有时如果我们的DNS缓存服务器不回复我们的查询,同时我们可以使用刷新缓存来删除AAAA等信息NSSOCNAMEMXPTR 等..来自 DNS 缓存的记录。我们可以使用 flush_zone 删除所有信息,这将删除所有信息。

unbound-control flush linux-console.net
unbound-control flush_zone tecmintlocal.com

17.检查当前使用哪些转发来解析。

unbound-control list_forwards

第 6 步:客户端 DNS 配置

18. 在这里,我使用了 CentOS 6 服务器作为我的客户端计算机,该计算机的 IP 是 192.168.0.100,我要在其接口配置中使用我的未绑定 DNS 服务器 IP(即主 DNS)。

登录客户端计算机并将主 DNS 服务器 IP 设置为我们未绑定服务器的 IP。

运行设置命令并从 TUI 网络管理器中选择网络配置。

然后选择DNS配置,插入未绑定的DNS服务器的IP作为主DNS,但这里我在辅助 因为我没有任何其他 DNS 服务器。

Primary DNS	: 192.168.0.50
Secondary DNS	: 192.168.0.50

单击确定 –> 保存并退出 –> 退出

19. 添加主 DNS IP 地址和辅助 DNS IP 地址后,现在可以使用以下命令重新启动网络。

/etc/init.d/network restart

20. 现在可以从客户端计算机访问任一网站并检查未绑定 DNS 服务器中的缓存。

elinks aol.com
dig aol.com

结论

之前我们习惯在 RHEL 和 CentOS 系统中使用绑定包设置 DNS 缓存服务器。现在,我们已经了解了如何使用未绑定的包设置 DNS 缓存服务器。希望这将比绑定包更快地解决您的查询请求。