早上好。
我遇到过这种情况,我已将主接口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 进行测试。