在 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 解析和更高的网络效率带来的好处。

更新于:2023-07-17

777 次查看

开启你的 职业生涯

通过完成课程获得认证

开始
广告