![每个链路 (VPN) systemd 解析的配置,但保持链路不受 systemd-networkd 管理](https://linux22.com/image/172619/%E6%AF%8F%E4%B8%AA%E9%93%BE%E8%B7%AF%20(VPN)%20systemd%20%E8%A7%A3%E6%9E%90%E7%9A%84%E9%85%8D%E7%BD%AE%EF%BC%8C%E4%BD%86%E4%BF%9D%E6%8C%81%E9%93%BE%E8%B7%AF%E4%B8%8D%E5%8F%97%20systemd-networkd%20%E7%AE%A1%E7%90%86.png)
背景
我通过以下方式管理我的 WLAN 接口systemd-networkd并使用systemd 解析对于整个系统。我有多个由 OpenVPN 或 Openconnect 管理的 VPN 连接。我已将它们正确配置为通过systemd 解析API(例如由 完成/etc/openvpn/update-systemd-resolved
)并且它可以工作。
问题
不幸的是,默认情况下,VPN 链接已DNSDefaultRoute=yes
报告为resolvectl
.这意味着当 VPN 连接中断时,系统上的 DNS 解析有时可能会挂起。
目标
我想设置DNSDefaultRoute=no
这些 VPN 接口,但保留它们联合国管理者systemd-networkd,即让VPN工具配置接口。
更一般地说,我的问题是是否可以有一个每个链接systemd 解析配置没有链接由以下人员管理systemd-networkd。
到目前为止我尝试过的
我尝试创建一个/etc/systemd/network/30-tun-no-default-route.network
包含以下内容的文件
[Match]
Name=tun_*
[Link]
Unmanaged=true
[Network]
DNSDefaultRoute=false
我测试了Unmanaged=false
链接是否获得了正确的DNSDefaultRoute=false
设置,但当然到那时systemd-networkd断开 VPN 连接。不幸的是,使用Unmanaged=true
,resolved 似乎忽略了这个设置。
对我来说这似乎是systemd 解析不解释*.network
文件本身。然而,这使得很难为每个链接设置此类与解析相关的设置。也许我应该为此提交一个功能请求?
另一种可能的解决方法是运行 VPN 后脚本resolvectl default-route $IFACE
,但对我来说这似乎不系统,并且违背了大多数情况下进行声明式配置的目的。系统东西。