每个链接的 DNS over TLS 设置(NetworkManager + systemd-resolved)

blu*_*isk 7 network-manager networking dns wireguard

Ubuntu 20.10。尝试修复分割连接的 DNS(用于工作的 Wireguard VPN 和用于其他所有内容的公共链接),但在 NetworkManager+systemd 解析的设置中陷入困境。

问题是我需要对通过 Wireguard 链接(仅限于单个域)的任何查询禁用 DNS-over-TLS。

/etc/systemd/resolved.conf似乎只允许全局设置。因此,当我在那里启用 DNS over TLS 时,它对于我的wireguard 链接也处于活动状态。

我可以使用 手动关闭 Wireguard 链接resolvectl dnsovertls wg0 no,但每次重新启动 systemd-resolved 时,它都会重新打开。

如果我理解正确的话,systemd-resolved 的每个链接设置是由 NetworkManager 管理的。但是 NetworkManager 的关键文件( /etc/NetworkManager/system-connections/中的文件)似乎没有 dns over tls 的设置。

我怎样才能让这个设置持续存在?

小智 3

我遇到了同样的问题,并且能够通过使用 NetworkManager-dispatcher 来解决它,它允许在连接事件上运行脚本。

我不确定是否可以在 Ubuntu 上工作,因为我使用的是 Fedora,但这是我所做的:

  1. 启用 NetworkManager-dispatcher.service
systemctl enable NetworkManager-dispatcher.service
Run Code Online (Sandbox Code Playgroud)
  1. 在 /etc/NetworkManager/dispatcher.d/ 目录中创建包含以下内容的脚本:
systemctl enable NetworkManager-dispatcher.service
Run Code Online (Sandbox Code Playgroud)

替换udp-other为您的 VPN 连接的名称(或者,您可以使用$CONNECTION_UUID)并确保脚本的所有者和组是 root 并且它被标记为可执行文件。


And*_*all 2

现在可以通过在此提交connection.dns-over-tls中添加的设置来实现这一点。

要为所有 NetworkManager 管理的连接设置默认值,请编辑NetworkManager.conf以包括例如:

[connection]
connection.dns-over-tls=0
Run Code Online (Sandbox Code Playgroud)

要设置单个连接,请执行:

nmcli connection modify MyConnection connection.dns-over-tls 0
Run Code Online (Sandbox Code Playgroud)