在当今网络环境中,DNS(域名系统)的安全性至关重要。攻击者可能通过DNS欺骗、缓存投毒等方式劫持用户流量,造成信息泄露甚至经济损失。为了解决这一问题,DNSSEC(Domain Name System Security Extensions,DNS安全扩展)应运而生。本文将详细讲解如何在 RockyLinux 系统中配置 DNSSEC,即使是 Linux 新手也能轻松上手。

什么是 DNSSEC?
DNSSEC 是一种通过数字签名验证 DNS 响应真实性的安全机制。它不会加密数据,但能确保你访问的网站地址没有被篡改。简单来说,就像给 DNS 查询加了一把“防伪锁”。
在 RockyLinux 中启用 DNSSEC,通常需要配合支持 DNSSEC 的 DNS 服务器(如 BIND 或 Unbound)。本教程以 Unbound 为例进行演示,因其轻量、安全且默认支持 DNSSEC 验证。
准备工作
一台已安装 RockyLinux 8 或 9 的服务器 具有 sudo 权限的用户账户 网络连接正常步骤一:安装 Unbound
首先,更新系统并安装 Unbound:
sudo dnf update -ysudo dnf install unbound -y
步骤二:配置 Unbound 启用 DNSSEC
Unbound 默认已启用 DNSSEC 验证,但为了确保配置正确,我们手动检查其主配置文件:
sudo nano /etc/unbound/unbound.conf
在配置文件中,确认以下关键选项已启用(若不存在则添加):
# 启用 DNSSEC 验证module-config: "validator iterator"# 自动下载并更新信任锚(Trust Anchors)trust-anchor-file: "/var/lib/unbound/root.key"# 允许本地查询access-control: 127.0.0.1/32 allowaccess-control: ::1 allow# 监听本地回环地址interface: 127.0.0.1interface: ::1
保存并退出编辑器(在 nano 中按 Ctrl+O → 回车 → Ctrl+X)。
步骤三:初始化信任锚(Trust Anchor)
运行以下命令下载根区的信任锚,这是 DNSSEC 验证的起点:
sudo unbound-anchor -a "/var/lib/unbound/root.key"
该命令会从 IANA 官方服务器获取最新的根密钥,并存储在指定路径。
步骤四:启动并启用 Unbound 服务
sudo systemctl enable --now unboundsudo systemctl status unbound
如果状态显示 “active (running)”,说明服务已成功启动。
步骤五:配置系统使用 Unbound 作为本地 DNS 解析器
编辑
/etc/resolv.conf文件,将 nameserver 指向本地:
nameserver 127.0.0.1
注意:某些系统使用 NetworkManager 或 systemd-resolved 管理 DNS,可能会覆盖
/etc/resolv.conf。建议通过 NetworkManager 设置 DNS 为 127.0.0.1,或禁用 systemd-resolved 以避免冲突。
步骤六:测试 DNSSEC 是否生效
使用
dig命令测试一个支持 DNSSEC 的域名(如
cloudflare.com):
dig +dnssec cloudflare.com @127.0.0.1
在返回结果中,查找
ad(Authenticated Data)标志:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
如果看到
ad标志,说明 DNSSEC 验证成功!
总结
通过以上步骤,你已在 RockyLinux 上成功配置了 DNS安全扩展(DNSSEC),显著提升了 DNS 查询的安全性。无论你是系统管理员还是普通用户,启用 DNSSEC 都是保护网络通信的重要一步。
记住,安全不是一次性的设置,而是持续的过程。定期更新系统、监控日志、关注安全公告,才能让你的服务器始终处于防护之中。
希望这篇 Rocky Linux DNS安全 教程对你有所帮助!如果你有任何疑问,欢迎在评论区留言交流。
