Red Hat Training

A Red Hat training course is available for RHEL 8

第 38 章 在不同域中使用不同的 DNS 服务器

默认情况下,Red Hat Enterprise Linux(RHEL)将所有 DNS 请求发送到 /etc/resolv.conf 文件中指定的第一个 DNS 服务器。如果这个服务器没有回复,RHEL 会使用这个文件中的下一个服务器。

在一个 DNS 服务器无法解析所有域的环境中,管理员可将 RHEL 配置为将特定域的 DNS 请求发送到所选 DNS 服务器。例如,您可以配置一个 DNS 服务器来解析对 example.com 的查询,配置另一个 DNS 服务器来解析对 example.net 的查询。对于所有其他 DNS 请求,RHEL 使用与默认网关连接中配置的 DNS 服务器。

重要

systemd-resolved 服务仅作为技术预览提供。红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些预览可让用户早期访问将来的产品功能,让用户在开发过程中测试并提供反馈意见。

如需有关 技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。

38.1. 将特定域的 DNS 请求发送到所选 DNS 服务器

您可以配置 systemd-resolved 服务和 NetworkManager,将特定域的 DNS 查询发送到所选 DNS 服务器。

如果您完成这个过程,RHEL 将使用 /etc/resolv.conf 文件中由 systemd-resolved 提供的 DNS 服务。systemd-resolved 服务启动一个 DNS 服务,该服务侦听端口 53 ,IP 地址 127.0.0.53。该服务会动态将 DNS 请求路由到 NetworkManager 中指定的对应 DNS 服务器。

注意

127.0.0.53 地址只能从本地系统访问,而不能从网络访问。

先决条件

  • 系统配置了多个网络管理器连接。
  • 在负责解析特定域的 NetworkManager 连接中配置 DNS 服务器和搜索域

    例如:如果 VPN 连接中指定的 DNS 服务器应该可以解析对 example.com 域的查询,则 VPN 连接配置文件必须有:

    • 配置一个可以解析 example.com 的 DNS 服务器
    • ipv4.dns-searchipv6.dns-search 参数中将搜索域配置为 example.com

步骤

  1. 启动并启用 systemd-resolved 服务:

    # systemctl --now enable systemd-resolved
  2. 编辑 /etc/NetworkManager/NetworkManager.conf 文件,并在 [main] 部分中设置以下条目:

    dns=systemd-resolved
  3. 重新载入 NetworkManager 服务:

    # systemctl reload NetworkManager

验证步骤

  1. 验证 /etc/resolv.conf 文件中的 nameserver 条目是否指向 127.0.0.53

    # cat /etc/resolv.conf
    nameserver 127.0.0.53
  2. 验证 systemd-resolved 服务是否监听本地 IP 地址 127.0.0.53 上的端口 53

    # ss -tulpn | grep "127.0.0.53"
    udp  UNCONN 0  0      127.0.0.53%lo:53   0.0.0.0:*    users:(("systemd-resolve",pid=1050,fd=12))
    tcp  LISTEN 0  4096   127.0.0.53%lo:53   0.0.0.0:*    users:(("systemd-resolve",pid=1050,fd=13))

其他资源

  • NetworkManager.conf(5) man page