Red Hat Training

A Red Hat training course is available for RHEL 8

第 36 章 在不同域中使用不同的 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)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些预览可让用户早期访问将来的产品功能,让用户在开发过程中测试并提供反馈意见。

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

36.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. 验证 nameserver 文件中的 /etc/resolv.conf 条目是否指向 127.0.0.53:

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

    # netstat -tulpn | grep "127.0.0.53:53"
    tcp   0   0 127.0.0.53:53   0.0.0.0:*   LISTEN   1050/systemd-resolv
    udp   0   0 127.0.0.53:53   0.0.0.0:*            1050/systemd-resolv

其它资源

  • 详情请查看 dns man page 中的 NetworkManager.conf(5) 参数描述。