通过 OpenVPN 远程推送 DNS 服务器到客户端

通过 OpenVPN 远程推送 DNS 服务器到客户端

当我尝试通过 OpenVPN 服务器配置推送 DNS 服务器时,我没有将该服务器设置为所连接客户端系统上的第一个 DNS 服务器。它最终被指定为备用 DNS 服务器。

push "dhcp-option DNS 89.238.75.146" # DNS-Server 1 (local djbdns)

为了克服某些网络限制(如果存在),我会使用 443 TCP。——这意味着我的 DNS 查询是通过 TCP 发送的(如果我手动重新配置 DNS 服务器),从性能角度来看,这不能很好地扩展。

有没有什么好的解决办法?

马里乌斯

答案1

我注意到它根据“客户端”而有所不同。如果我使用网络管理器,我会获得 DNS,但如果我使用“常规” openvpn 服务(在 Ubuntu 中),我不会获得 DNS。我没有深入研究这个问题,因为我通常让网络管理器连接我的 vpn。

答案2

如果一个人致力于openvpn终端向量,请放置一个名为的 bash 脚本~/bin/m0vpn(用于名为的 VPN m0),这样我只需打开终端并输入以下内容即可连接:

m0vpn

脚本如下:

#!/bin/bash
OVPNFILE="$HOME/.config/vpn/m0/client.ovpn"
TEMPRESOLV="nameserver 10.0.0.2\ndomain prd1.m0\n"
# The next two lines create a temporary /etc/resolv.conf which includes the original.
# For extra security you may modify this behavior (to use Only your own DNS server)
# ^ But then, you must connect to an IP address (no hostname) from your .ovpn file!
sudo printf "$TEMPRESOLV" | cat - /run/resolvconf/resolv.conf > /tmp/resolv.conf
sudo mv /tmp/resolv.conf /etc/resolv.conf
printf "Temporary /etc/resolv.conf:\n$TEMPRESOLV"
sudo openvpn $OVPNFILE
sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
echo "Reset resolv.conf"

也许有一天NetworkManager就能简单地使用该.ovpn文件。

相关内容