在 RHEL/CentOS 7 中安装和配置仅缓存 DNS 服务器
介绍
DNS(域名系统)在将域名转换为 IP 地址方面发挥着至关重要的作用,允许用户使用人类可读的 URL 访问网站。为了增强 DNS 性能并减少网络延迟,实施仅缓存 DNS 服务器可以显着提高 DNS 查找的速度和效率。在本文中,我们将指导您完成在 RHEL/CentOS 7 中安装和配置仅缓存 DNS 服务器的过程。
先决条件
在继续之前,请确保您拥有以下内容 -
运行 RHEL/CentOS 7 的服务器。
root 或 sudo 访问服务器。
Linux 命令行的基本知识。
更新系统
首先,通过运行以下命令将系统软件包更新到最新版本 -
sudo yum update -y
安装 BIND DNS 服务器
BIND(伯克利互联网域名)是使用最广泛的 DNS 软件。使用以下命令安装 BIND 包 -
sudo yum install bind bind-utils -y
配置 BIND DNS 服务器
接下来,我们需要将 BIND 配置为仅缓存 DNS 服务器。在文本编辑器中打开 BIND 配置文件 -
sudo vi /etc/named.conf
在文件内,将其内容替换为以下配置 -
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
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";
recursion yes;
dnssec-enable no;
dnssec-validation no;
allow-query { any; };
};
按 Esc 键,然后按 -wq 保存并关闭文件。
配置 DNS 转发器
为了提高DNS解析速度,我们可以配置BIND使用DNS转发器。打开 BIND 选项文件 -
sudo vi /etc/named.rfc1912.zones
在文件中添加以下转发器配置 -
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "example.com" IN {
type forward;
forwarders { 8.8.8.8; 8.8.4.4; };
forward only;
};
保存并关闭文件。
启用并启动 BIND 服务
要使 BIND 在系统启动时自动启动,请运行以下命令 -
sudo systemctl enable named
然后,使用以下命令启动 BIND 服务:
sudo systemctl start named
测试仅缓存 DNS 服务器
为了确保仅缓存的 DNS 服务器正常运行,我们可以执行一些测试。以下是一些示例及其预期输出 -
示例 1:检查 DNS 解析器
运行以下命令检查服务器是否使用仅缓存 DNS 服务器作为解析器 -
nslookup google.com
输出
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: google.com
Address: 172.217.12.14
示例 2:检查缓存的 DNS 条目
要验证 DNS 服务器是否正在缓存 DNS 条目,请对同一域执行两次查找 -
nslookup example.com
输出
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: example.com
Address: 93.184.216.34
再次运行相同的命令,您应该会观察到响应时间缩短,这表明 DNS 条目是从缓存提供的。
示例 3:检查到 DNS 转发器的转发
为了确保 DNS 服务器将查询转发到指定的 DNS 转发器,请执行非缓存域的查找 -
nslookup facebook.com
输出
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: facebook.com
Address: 31.13.65.36
响应应包含 DNS 转发器(在本例中为 Google DNS 服务器)提供的 IP 地址。
保护仅缓存 DNS 服务器的安全
实施安全措施来保护您的仅缓存 DNS 服务器免受潜在攻击至关重要。这里有一些建议 -
防火墙配置 - 使用防火墙规则仅允许来自受信任来源的 DNS 流量。例如,要允许来自本地网络 (192.168.0.0/24) 的 DNS 查询,请执行以下命令:
sudo firewall-cmd --zone=public --add-service=dns --permanent
sudo firewall-cmd --zone=public --add-source=192.168.0.0/24 --permanent
sudo firewall-cmd --reload
限制查询速率 - 实施速率限制以防止 DNS 放大攻击和来自单一来源的过多查询。打开 BIND 选项文件 (/etc/named.conf) 并在选项块中添加以下配置 -
rate-limit {
responses-per-second 5;
nxdomains-per-second 5;
errors-per-second 5;
};
DNSSEC - 考虑启用 DNSSEC(域名系统安全扩展)以防止 DNS 欺骗和数据完整性攻击。打开 BIND 选项文件 (/etc/named.conf) 并修改 dnssec-enable 和 dnssec-validation 选项,如下所示 -
dnssec-enable yes;
dnssec-validation yes;
注意- 启用 DNSSEC 需要额外的配置,包括密钥生成和签名。
监控和记录
监视和记录 DNS 活动可以提供有关服务器性能和潜在问题的宝贵见解。以下是一些需要考虑的工具和技术 -
BIND 统计信息 - BIND 提供有关 DNS 服务器的性能和资源使用情况的统计信息。通过运行以下命令访问统计信息 -
sudo rndc stats
这会在 /var/named/data 目录中生成一个统计文件。
日志文件 - BIND 将 DNS 相关事件和错误记录到日志文件中。默认日志文件位置是/var/log/messages。要查看 BIND 特定的日志,请使用以下命令 -
sudo tail -f /var/log/messages | grep named
监控工具 - 考虑使用 dnstop 或 dnsmeter 等监控工具来收集详细的 DNS 流量统计数据并分析服务器性能。
微调 DNS 服务器配置
根据您的具体要求,您可能需要调整某些 DNS 服务器参数以优化性能。以下是一些值得探索的配置选项 -
缓存大小 - 默认情况下,BIND 为 DNS 缓存分配有限的内存。根据服务器的可用资源和预期查询负载调整缓存大小。打开 BIND 选项文件 (/etc/named.conf) 并根据需要修改 max-cache-size 选项。
TTL(生存时间) - DNS 记录包含一个 TTL 值,该值指定客户端和 DNS 服务器可以缓存它们的时间。调整 TTL 值可能会影响从上游服务器获取 DNS 解析的频率。考虑根据您的要求修改 TTL 值。
区域传输 - 如果您有辅助 DNS 服务器,请配置区域传输以使其与仅缓存 DNS 服务器保持同步。有关配置区域传输的更多详细信息,请参阅 BIND 文档。
结论
通过执行本文中概述的步骤,您已在 RHEL/CentOS 7 系统上成功安装并配置了仅缓存 DNS 服务器。缓存功能通过存储经常访问的域名解析来提高 DNS 查找性能,减少网络延迟并增强整体浏览体验。您现在可以享受更快的 DNS 解析和更高的网络效率的好处。