ore*_*tis 78 dns openvpn systemd-resolved
当我通过 Gnome 网络管理器连接到 VPN 网络时,我丢失了 DNS 解析,实际上,我无法访问 VPN 网络内部或外部的资源。
当我使用 Ubuntu 16.04 并使用 VPN 时,“ /etc/resolv.conf/
”文件将包含我连接的 (VPN) 网络的 DNS 服务器。现在它总是包含以下条目:
nameserver 127.0.0.53
search myprovider.com
Run Code Online (Sandbox Code Playgroud)
据我127.0.0.53
所知,system-resolved
.
我怀疑这是一个错误,因为 VPN 在 Ubuntu 16.04 上运行良好。当我使用 VPN 服务时,有什么方法可以设置我网络的 DNS 服务器?
更新:
我尝试使用帖子末尾附加的配置文件连接到 OpenVPN 网络,但出现以下错误:
Authenticate/Decrypt packet error: cipher final failed
Run Code Online (Sandbox Code Playgroud)
我已经验证服务器使用 lzo 压缩并且我也启用了它。连接保持活动状态,但我无法导航到 VPN 内部或外部的任何页面。
在下面列出的配置文件中,我已经包含了回复中发布的解决方案
client
dev tun
proto udp
remote openvpn.bibsys.no 1194
remote my-server-2 1194
resolv-retry infinite
nobind
user myuser
group myuser
persist-key
persist-tun
ca ca-cert.pem
cert openvpn.crt
key openvpn.key
cipher AES-256-CBC
comp-lzo yes
script-security 2
up /etc/openvpn/scripts/update-systemd-resolved
down /etc/openvpn/scripts/update-systemd-resolved
down-pre
Run Code Online (Sandbox Code Playgroud)
Qli*_*max 106
问题
该文件/etc/resolv.conf
不会被/etc/openvpn/update-resolv-conf
脚本更新,因为resolvconf
默认情况下未安装在 ubuntu 18.04 上。
事实上,该脚本的第一行之一会检查/sbin/resolvconf
可执行文件:
[ -x /sbin/resolvconf ] || exit 0
Run Code Online (Sandbox Code Playgroud)
安装 resolvconf viaapt-get
不是解决方案,因为/etc/openvpn/update-resolv-conf
脚本/etc/resolv.conf
使用推送的 DNS 条目更新文件,但 tun 设备似乎忽略了它。
解决方案
Ubuntu 18.04 使用systemd-resolved
,因此您所要做的就是为systemd-resolved
via安装 openvpn 帮助程序脚本
sudo apt install openvpn-systemd-resolved
Run Code Online (Sandbox Code Playgroud)
或使用这些 GitHub 说明
config.ovpn
添加以下行更新您的文件:
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
Run Code Online (Sandbox Code Playgroud)
而不是/etc/openvpn/update-resolv-conf
在 conf.
为防止 DNS 泄漏,您应该将此行添加到config.ovpn
文件末尾(根据此 systemd 问题评论):
dhcp-option DOMAIN-ROUTE .
Run Code Online (Sandbox Code Playgroud)And*_*fer 47
我在这篇博文中找到了解决方案。虽然提到了两个解决方案,但我更喜欢使用第二个解决方案,因为这意味着我的 DNS 是由 OpenVPN 服务器设置的(第一个解决方案意味着无论我是否连接到 OpenVPN 服务器,我都使用相同的 DNS 服务器)。
简而言之:
sudo mkdir -p /etc/openvpn/scripts
sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved -P /etc/openvpn/scripts/
sudo chmod +x /etc/openvpn/scripts/update-systemd-resolved
然后通过将上/下脚本更改为以下内容来编辑您的 OpenVPN 客户端文件(例如 client.ovpn):
script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
up /etc/openvpn/scripts/update-systemd-resolved
down /etc/openvpn/scripts/update-systemd-resolved
Run Code Online (Sandbox Code Playgroud)
(我已经注释掉了原来的上/下设置)。
小智 6
实际上,这个问题有一个更简单的解决方案。问题在于 DNS 流量以及 Ubuntu 18 如何管理它。默认情况下,IP 转发被禁用,这是 OpenVPN 提供正确网络所需要的。您所要做的就是运行以下命令:
sudo nano /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)
打开此文件后,查找包含net.ipv4.ip_forward
. 如果此行已被注释,请删除该行前面的 # 符号(如果未注释,则您有另一个问题)。保存文件,然后重新启动 OpenVPN 服务器实例。
升级到 Ubuntu 18 后,此修复不需要对客户端或 OpenVPN 代码进行任何修改。经过测试并确认有效。
但是,这显然需要您可以管理服务器。不幸的是,该错误存在于许多仅使用 18.04 连接到由其他人管理的 OpenVPN 服务器的人中......
归档时间: |
|
查看次数: |
133479 次 |
最近记录: |