5.3. 使用自定义可引导 ISO 安装启用 eDNS 的 RHEL


创建自定义可引导 ISO 来使用 eDNS 强制 策略安装 RHEL,以确保所有 DNS 查询都是在安装过程中和之后安全的。如果需要自定义 CA 证书捆绑包,则必须使用 Kickstart 文件中的 %certificate 部分安装它。然后,您在脚本中引用这个 Kickstart 文件来构建新的 ISO,其中包括用于强制执行严格的 DoT 策略的内核参数。如果您的环境允许回退到未加密的 DNS,您可以执行标准 RHEL 安装并在之后配置 eDNS。

先决条件

  • # 命令提示符开头的命令需要 sudo 或 root 用户访问提供管理特权。有关如何配置 sudo 访问权限的详情,请参考 启用非特权用户来运行某些命令
  • 您已从 产品下载页面下载了最小安装引导 ISO 镜像。
  • 如果您需要自定义 CA 捆绑包,则已有带有 %certificate 部分的 Kickstart 文件。
  • lorax 软件包已安装。

流程

  1. 可选:使用 %certificate 部分创建 Kickstart 文件。确保证书保存在名为 tls-ca-bundle.pem 的文件中。

    %certificate --dir /etc/pki/dns/extracted/pem/ --filename tls-ca-bundle.pem
    -----BEGIN CERTIFICATE-----
    <Base64-encoded_certificate_content>
    -----END CERTIFICATE-----
    %end
    Copy to Clipboard Toggle word wrap
  2. 将 Kickstart 文件和内核参数添加到 ISO 中:

    下面的脚本示例演示了如何在启用了 eDNS 的情况下创建自定义可引导 ISO。您必须创建一个脚本文件来自动化此过程。

    #!/bin/bash
    
    set -ex
    
    KERNELARGS=""
    
    # Enable network
    KERNELARGS+="ip=dhcp "
    
    # Set DoT DNS server
    KERNELARGS+="rd.net.dns=dns+tls://_<server_ip>_#_<dns_server_hostname>_ "
    
    # Set to 'exclusive' to disable fallback to unencrypted DNS. Other values: 'backup', 'prefer'.
    KERNELARGS+="rd.net.dns-resolve-mode=exclusive "
    
    # Set the dnsconfd plugin for NetworkManager
    KERNELARGS+="rd.net.dns-backend=dnsconfd "
    
    # Remove any existing ISO to prevent conflicts with the new build
    rm -f _<output_iso_filename>_
    
    # Create a new bootable ISO with the Kickstart config file and kernel arguments
    mkksiso --ks _<kickstart_file>_ --cmdline "$KERNELARGS" _<input_iso_filename>_ _<output_iso_filename>_
    Copy to Clipboard Toggle word wrap
  3. 运行脚本。

    sh <script_filename>
    Copy to Clipboard Toggle word wrap
  4. 使用自定义 ISO 文件安装 RHEL。

验证

  • 验证您的 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