如何配置 OpenVPN 客户端在连接时使用不同的 DNS 服务器

如何配置 OpenVPN 客户端在连接时使用不同的 DNS 服务器

如何使用 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 服务器。

相关内容