如何在 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.server 和 hostname.bind 查询。
hide-identity: yes
启用以下参数来隐藏 version.server 和 version.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.我们不能在同一台机器上同时使用iptables和firewalld,如果我们这样做会互相冲突,因此删除 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缓存服务器不回复我们的查询,同时我们可以使用刷新缓存来删除A、AAA等信息、NS、SO、CNAME、MX、PTR 等..来自 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 缓存服务器。希望这将比绑定包更快地解决您的查询请求。