我的设置
- Ubuntu 20.04
- 更改 /etc/resolv.conf 的愚蠢专有 vpn 客户端
问题
- 每次任何接口重新连接时,NetworkManager 都会发挥作用,重做 resolv.conf
到目前为止,一切都很好。
使用 resolvectl,我重新进行了 vpn 接口的 DNS 设置,并且它运行良好,直到下一次接口重新连接。
# resolvectl dns tun0 10.10.10.10
# resolvectl domain tun0 "~example.com ~example.org"
我如何使它永久存在?
我尝试创建该文件(和一些其他变体),但没有成功。
/etc/systemd/network# cat tun0.network
[Match]
Name=tun0
[Network]
LLMNR=yes
MDNS=no
DNSSEC=no
SERVERS=10.10.10.10
DOMAINS=~example.com ~example.org
我想知道在哪里可以找到针对每个接口(是否为 vpn)进行 DNS 设置的特定配置文件。
更多背景信息
我的目标是有一个文件可以将 VPN DNS 配置放在其中,这样每次 NetworkManager 重做网络配置时都会考虑专有 VPN DNS 设置,特别是将某些域解析到某些 DNS 服务器的拆分。
通过 resolvectl 进行配置可以按我预期的方式进行,但是每次 NetworkManager 重新进行网络配置时它都会被“忘记”。
我有其他通过 NetworkManager 管理的 VPN 连接,并且运行良好。由专有解决方案管理的 VPN 连接则不行。
答案1
答案2
我仍然没有找到答案,但我找到了解决方法。
我放置了一个脚本,/etc/NetworkManager/dispatcher.d
每次发生网络相关事件时都会执行该脚本:
#!/bin/bash -e
echo "Receive event from ${DEVICE_IFACE:-dummy} ${NM_DISPATCHER_ACTION:-dummy} " >> /tmp/dispatch.log
[[ "${DEVICE_IFACE:-dummy}" = "tun0" ]] && [[ "${NM_DISPATCHER_ACTION:-dummy}" = "up" ]] && {
resolvectl dns tun0 10.10.10.10
resolvectl domain tun0 ~example.com ~example.org
resolvectl dnssec tun0 off
} >> /tmp/dispatch.log
笔记检查权限、执行位,并且必须由 root 拥有