当有更多连接处于活动状态时在 NetworkManager 中选择首选 DNS

当有更多连接处于活动状态时在 NetworkManager 中选择首选 DNS

早上好。

我遇到过这种情况,我已将主接口eth0设置为其 DNS,并设置了第二个接口(NetworkManager 中的连接),tun0这是一个 VPN,但 NetworkManager 并不知道这一点。对于 NetworkManager 来说,这只是另一个连接。事实上,我无法使用选项,例如connection.secondaries等等... 我的意思是,我没有为 VPN 使用任何 NetworkManager 插件,它只是一个“启动”的第二个连接。

据我所知,NetworkManager 将使用它systemd-resolved来设置 DNS,因为该/etc/resolv.conf文件是符号链接/run/systemd/...,而 NetworkManager 的默认行为应该是通过解析来设置 DNS。事实上,NetworkManager 中没有其他配置。

确实,我可以看到 中反映出的 eth0 DNS 变化/run/systemd/...。此外,如果我从 eth0 中删除 DNS,NetworkManager 将采用 中的 DNS tun0,因此我可以确认我正确设置了 中的 DNS tun0

因此,现在我想使用 中的 DNS tun0,但我不想修改 eth0 连接。由于eth0是主连接(它具有autoconnect=yes和更高的优先级),我发现始终使用的 DNS 是 中的 DNS eth0

我尝试通过tun0多种方式设置优先级,例如使用选项ipv4.dns-priority,但没有成功。

因此,我的第一个问题是:

  • 我怎样才能告诉 NetworkManager 使用 DNS tun0,而无需修改第一个连接 eth0(两个连接都处于“启动”状态)?

由于我无法做到这一点,所以我在寻找替代方案:由于resolved应该能够同时使用多个 DNS,每个 DNS 都绑定到一个接口,我认为也许可以同时激活eth0和中的 DNS tun0,然后使用防火墙规则阻止其中一个。同样,没有运气,如果来自的 DNS被阻止,我将根本没有 DNS,因此在这种情况下根本不使用eth0设置的 DNS 。tun0

所以,我的第二个问题是:

  • 我怎样才能告诉 NetworkManager 设置两个 DNS(因为我使用已解析,所以应该是可能的,因为已解析允许使用绑定到不同接口的多个 DNS)以便它们全部被使用(我将使用防火墙管理它们)?

编辑

正如评论中所建议的,我补充说我正在使用 Ubuntu 19.10 进行测试。

相关内容