systemd resolvectl 放入 dns 文件

systemd resolvectl 放入 dns 文件

我的设置

  • 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

在 中terminal,使用nm-connection-editor并创建各种 VPN/常规连接配置文件,并使用这些设置...

在此处输入图片描述

在此处输入图片描述

答案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 拥有

相关内容