17.4. 通过某个接口路由 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 服务器 10.0.0.1 时使用第二个连接的默认网关。因此,DNS 解析失败。要解决这个问题,请为两个连接配置文件启用 ipv4.routed-dns 设置,以便 NetworkManager 通过正确的接口(本例中为 enp1s0)为 10.0.0.1 DNS 服务器创建一个专用的路由。

先决条件

  • 连接配置文件已存在。

流程

  1. 修改连接配置文件,以能够创建到名称服务器的路由:

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

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

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

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

验证

  • 显示要到达的 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 Toggle word wrap

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat