5.4. 在现有 RHEL 安装中启用 eDNS


您可以在现有 RHEL 安装中启用加密的 DNS (eDNS),以使用 DNS-over-TLS 处理所有 DNS 流量。

先决条件

  • # 命令提示符开头的命令需要 sudo 或 root 用户访问提供管理特权。有关如何配置 sudo 访问权限的详情,请参考 启用非特权用户来运行某些命令
  • 已有 RHEL 安装。
  • 以下软件包安装在您的系统中:

    • dnsconfd
    • dnsconfd-dracut
    • grubby
  • 如果在 IBM Z 系统中,会安装 zipl 工具。

流程

  1. /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_1>,dns+tls://<server_ip_2><dns_server_hostname_1>,dns+tls://<server_ip_2><dns_server_hostname_2>
    Copy to Clipboard Toggle word wrap

    有关全局 DNS 选项的详情,请查看您系统上的 NetworkManager.conf (5) 手册页中的 GLOBAL-DNS SECTION

  2. 可选: 要使用自定义 CA 捆绑包来验证上游 DoT 服务器,请将 PEM 格式的文件复制到 /etc/pki/dns/extracted/pem/tls-ca-bundle.pem 文件中。

    注意

    /etc/pki/dns/extracted/pem 中添加或删除证书后,重启 dnsconfd 服务以应用更改。

  3. 启用 dnsconfd 服务:

    # systemctl enable --now dnsconfd
    Copy to Clipboard Toggle word wrap
  4. 重新载入 NetworkManager:

    # systemctl reload NetworkManager
    Copy to Clipboard Toggle word wrap
  5. 为所有安装的内核重新生成 initramfs,使其包含 dnsconfd 及其配置:

    # for kernel in `rpm -q kernel --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n'`; do
        dracut -f --kver="$kernel"
    done
    Copy to Clipboard Toggle word wrap
  6. 为当前和新安装的内核版本设置内核参数:

    # 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
    Copy to Clipboard Toggle word wrap
    • 如果在 IBM Z 中,更新引导菜单:

      # zipl
      Copy to Clipboard Toggle word wrap

验证

  • 验证您的 eDNS 配置:

    $ dnsconfd status
    Copy to Clipboard Toggle word wrap

    预期输出:

    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
        }
    ]
    Copy to Clipboard Toggle word wrap
  • 使用 nslookup 验证 DNS 服务器是否响应:

    $ nslookup <domain_name>
    Copy to Clipboard Toggle word wrap

    将 & lt;domain_name > 替换为您要查询的域。

故障排除

  • unbound 中启用详细日志记录:

    # unbound-control verbosity 5
    Copy to Clipboard Toggle word wrap
  • 查看相关服务的日志:

    $ journalctl -xe -u <service_name>
    Copy to Clipboard Toggle word wrap

    <service_name& gt; 替换为 NetworkManagerdnsconfdunbound

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat