如何使用 systemd 配置基于 Debian 的构建,以便当通过 OpenVPN 客户端连接到我的 VPN 提供商时,系统使用 VPN 提供商的 DNS 服务器?
答案1
我对此经历了一段相当长的旅程,所以我只想记录我的发现和解决方案。
显然,过去配置此功能的黄金标准是一个名为的帮助程序脚本更新-systemd-解决但显然,这已不再适用于最新版本的 NetworkManager。
这些是我设置我想要的配置所经历的步骤。 (这假设您已经配置并连接了 OpenVPN 客户端。)
# Make a copy of any existing resolv.conf configuration
sudo mv /etc/resolv.conf /etc/resolv.conf.original
# This sets resolvd to redirect to the systemd-resolve 127.0.0.53 redirect
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
# Edit the systemd-resolve configuration file
sudo vi /etc/systemd/resolved.conf
- 设置
DNS=
为您的本地 LAN/路由器 DNS IP(即 192.168.1.1) - 设置
Domains=
为您的本地 LAN 域(即 my.company.com)
sudo service systemd-resolved restart
resolvectl status
全局条目现在应该反映您在中设置的值/etc/systemd/resolved.conf
Global
Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1
DNS Domain: my.company.com
现在在 openvpn.client.conf 文件所在的同一目录中创建一个帮助程序脚本,
/etc/openvpn
或者/etc/openvpn/client
这是我用于 NordVPN 的示例
sudo vi /etc/openvpn/nordvpn.systemd.resolve.sh
# Make the script executable
sudo chmod 750 /etc/openvpn/nordvpn.systemd.resolve.sh
#!/bin/sh
set -e
systemd-resolve -i tun0 \
--set-dns=103.86.96.100 --set-dns=103.86.99.100 \
--set-domain=~. \
--set-dnssec=off
现在,修改您实际的 openvpn.client.conf 文件(我的名称是nordvpn.conf,但你的可能不同)
sudo vi /etc/openvpn/nordvpn.conf
...并添加以下行:(使用您上面创建的脚本的名称)
script-security 2
up /etc/openvpn/nordvpn.systemd.resolve.sh
现在重新启动您的 OpenVPN 客户端:服务名称可能会有所不同,具体取决于您配置 OpenVPN 客户端 systemd 服务的方式
sudo systemctl restart [email protected]
确认重启过程中没有错误:
sudo systemctl status [email protected]
resolvectl status
全局条目应反映您设置的值/etc/systemd/resolved.conf
,tun 界面应显示您通过脚本添加的 DNS 值
Global
Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1
DNS Domain: my.company.com
Link # (tun0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 103.86.96.100
DNS Servers: 103.86.96.100 103.86.99.100
DNS Domain: ~.
现在,当您连接到 VPN 时,您将使用 VPN 提供商的 DNS 服务器,但当您未连接时,您将恢复到 LAN DNS 服务器。