25.3. 通过特定接口路由 DNS 流量


NetworkManager 支持在系统中配置 DNS 服务器的不同机制,其中包括将配置添加到 /etc/resolv.conf 文件并配置 DNS 服务,如 systemd-resolveddnsmasqdnsconfd

连接配置文件中提到的每个 DNS 服务器都与特定网络接口关联。DNS 后端服务 systemd-resolveddnsmasq 确保每个 DNS 名称服务器只能通过正确的网络接口访问。但是,其他后端服务不支持此功能。因此,NetworkManager 具有一个自动添加专用路由的功能,以便仅通过正确的接口访问每个名称服务器。您可以设置 ipv4.routed-dnsipv6.routed-dns 属性来使用此功能。

示例情况:

  • 连接配置文件 1: <example-connection-1>

    • 默认网关: 192.0.2.254
    • DNS 服务器: 10.0.0.1
    • 搜索域:example-domain.com
  • 连接配置文件 2: <example-connection-2>

    • 默认网关: 198.51.100.254 (此网关无法访问 10.0.0.0/24 网络)
    • DNS 服务器:203.0.113. 1

在本例中,您有两个连接配置集: <example-connection-1><example-connection-2> 通过 enp1s0enp7s0 网络接口进行连接。如果 <example-connection-2> 首先连接了第二个配置集,则此连接的默认网关 198.51.100.254 具有较低指标,并且优先于第一个配置集。因此,RHEL 在连接到第一个配置集的 DNS 服务器时使用第二个连接的默认网关。因此,DNS 解析会失败。要解决这个问题,请为两个连接配置文件启用 ipv4.routed-dns 设置,以便 NetworkManager 通过正确的接口为 10.0.0.1 DNS 服务器创建一个专用路由,本例中为 enp1s0

先决条件

  • 连接配置集已经存在。

流程

  1. 修改连接配置文件,以启用为名称服务器创建路由:

    1. 对于连接配置文件 1,请输入:

      # nmcli connection modify <example-connection-1> ipv4.routed-dns yes
      Copy to Clipboard
    2. 对于连接配置文件 2,请输入:

      # nmcli connection modify <example-connection-2> ipv4.routed-dns yes
      Copy to Clipboard
  2. 重新激活连接:

    # nmcli connection up <example-connection-1>
    
    # nmcli connection up <example-connection-2>
    Copy to Clipboard

验证

  • 显示要访问 IP 地址的路由:

    # ip route get 203.0.113.1
    203.0.113.1  dev  enp1s0  table  20053  src  10.0.0.1  uid  0
    Copy to Clipboard

    此命令验证名称服务器是否通过正确的接口访问,并使用策略路由方法将 DNS 服务器的所有路由放在特殊路由表 20053 中。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat