在 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 转发器提供的 IP 地址(在本例中为 Google DNS 服务器)。
保护仅缓存 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) 并将以下配置添加到 options 块中:
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 解析和更高的网络效率带来的好处。