5.4. 在现有 RHEL 安装上启用 eDNS
您可以在现有 RHEL 安装上启用加密的 DNS (eDNS),以使用 DNS-over-TLS 处理所有 DNS 流量。
先决条件
-
以
#命令提示符开头的命令需要sudo提供的管理特权或 root 用户访问权限。有关如何配置sudo访问权限的详情,请参考 启用非特权用户,以运行某些命令。 - 有一个现有的 RHEL 安装。
以下软件包已安装在您的系统上:
-
dnsconfd -
dnsconfd-dracut -
grubby
-
-
如果在 IBM Z 系统上,则已安装了
zipl工具。
流程
在
/etc/NetworkManager/conf.d/global-dot.conf文件中配置 NetworkManager:[main] dns=dnsconfd [global-dns] resolve-mode=exclusive [global-dns-domain-*] servers=dns+tls://<server_ip_1><dns_server_hostname_1>,dns+tls://<server_ip_2><dns_server_hostname_2>有关全局 DNS 选项的详情,请查看您系统上
NetworkManager.conf (5)手册页中的GLOBAL-DNS SECTION。可选:要使用自定义 CA 捆绑包验证上游 DoT 服务器,请将 PEM 格式的文件复制到
/etc/pki/dns/extracted/pem/tls-ca-bundle.pem文件中。注意在
/etc/pki/dns/extracted/pem中添加或删除证书后,重启dnsconfd服务以应用更改。启用
dnsconfd服务:# systemctl enable --now dnsconfd重新载入 NetworkManager:
# systemctl reload NetworkManager为所有安装的内核重新生成
initramfs,以包含dnsconfd及其配置:# for kernel in `rpm -q kernel --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n'`; do dracut -f --kver="$kernel" done将内核参数设置为当前和新安装的内核版本:
# grubby --args="rd.net.dns=dns+tls://<server_ip>#<dns_server_hostname> rd.net.dns-resolve-mode=exclusive rd.net.dns-backend=dnsconfd" --update-kernel=ALL如果在 IBM Z 上,更新引导菜单:
# zipl
验证
验证您的 eDNS 配置:
$ dnsconfd status预期输出:
Running cache service: unbound Resolving mode: exclusive Config present in service: { ".": [ "dns+tls://198.51.100.143#dot.dns.example.com" ] } State of Dnsconfd: RUNNING Info about servers: [ { "address": "198.51.100.143", "port": 853, "name": "dot.dns.example.com", "routing_domains": [ "." ], "search_domains": [], "interface": null, "protocol": "dns+tls", "dnssec": true, "networks": [], "firewall_zone": null } ]使用
nslookup验证 DNS 服务器是否有响应:$ nslookup <domain_name>将
<domain_name>替换为您要查询的域。
故障排除
在
unbound中启用详细日志记录:# unbound-control verbosity 5查看相关服务的日志:
$ journalctl -xe -u <service_name>将
<service_name>替换为NetworkManager、dnsconfd或unbound。