这可能是这个问题,但我对网络事务不够熟悉,无法确定。
我使用名为 Cyberghost 的 VPN 服务来保持互联网隐私。在使用时遇到 DNS 泄漏后,network-manager
我尝试使用命令行并实施在线推广的修复程序。显然block-outside-dns
仅适用于 Windows。因此我遵循本教程并添加了以下几行
script-security 2
up /etc/resolv.conf
down /etc/resolv.conf
到 cyberghost 提供的 .ovpn 文件。
尝试使用连接时
sudo openvpn --config /home/username/CG/DE/DE.ovpn
但是我收到以下错误:
Options error: --up script fails with '/etc/resolv.conf': Permission denied
Options error: Please correct this error.
Use --help for more information.
不使用 up 和 down 命令进行连接可以正常工作,但会导致 DNS 泄漏。使用 sudo 权限手动编辑时我没有遇到问题,resolv.conf
因此我不确定为什么 openvpn 缺少这样做的权限。
感谢您的想法和帮助,
亚历克斯
系统:Kubuntu 17.04
openvpn 2.4.0-4ubuntu1.3
完整的.ovpn 文件如下:
client
remote 1-de.cg-dialup.net 443
dev tun
proto udp
auth-user-pass /home/username/CG/DE/auth.txt
resolv-retry infinite
redirect-gateway def1
persist-key
persist-tun
nobind
cipher AES-256-CBC
auth MD5
ping 5
ping-exit 60
ping-timer-rem
explicit-exit-notify 2
script-security 2
remote-cert-tls server
route-delay 5
tun-mtu 1500
fragment 1300
mssfix 1300
verb 4
comp-lzo
ca /home/username/CG/DE/ca.crt
cert /home/username/CG/DE/client.crt
key /home/username/CG/DE/client.key
script-security 2
up /etc/resolv.conf
down /etc/resolv.conf
答案1
无论这是否是你真正想要或需要做的,这里要注意这一点:
up /etc/resolv.conf
down /etc/resolv.conf
此功能并非如此工作。相反,软件包会通过在 openvpn 客户端配置文件中的and之后指定可执行脚本来openvpn-systemd-resolved
动态更新文件(根据链接的(且不完整!)“教程”)。但还请注意,此功能有不同版本;/etc/resolv.conf
up
down
更高版本使用 dbus,我引用的是;先前版本只使用脚本和临时文件。这就是为什么文章/文档/教程之间存在一些不一致的原因。
因此,假设此包已安装(通过apt-get
或apt
):
sudo apt-get install openvpn-systemd-resolved
并验证服务是否正在运行(如果没有运行:请启用它并手动启动它):
sudo service systemd-resolved status
然后,应该安装一个脚本/etc/openvpn/update-resolv-conf
(或者可能在/etc/openvpn/scripts/
其他发行版中安装)修改适合/etc/resolv.conf
你。
因此,您的 openvpn 客户端配置文件(在非 Windows 客户端上,按照惯例应该带有“ .conf
”后缀,如果是,它们将自动被读取/etc/openvpn
;但在 Windows 上,它们通常用于.ovpn
与 openvpn 进行正确的文件关联)——例如,openvpn 客户端配置文件将包含
script-security 2
setenv PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
然后你会注意到,它是/etc/openvpn/update-systemd-resolved
需要可执行的脚本(默认情况下是),并且/etc/resolv.conf
将是一个简单的文本文件,然后用正确的domain
, nameserver
,search
条目进行更新(它是不是可执行脚本)。
将其结合在一起的最后一个元素是修改/etc/nsswitch.conf
为包含以下内容(替换现有hosts:
条目):
# Use systemd-resolved first, then fall back to /etc/resolv.conf
hosts: files resolve dns myhostname
查看链接 update-systemd-resolved github 页面了解详细信息和选项。
答案2
我能想到的唯一解决方案就是运行
sudo -s
然后运行
openvpn --config file.ovpn
如果不起作用,请尝试运行
sudo chown root /etc/resolv.conf
或者
sudo chown $USER /etc/resolv.conf
作为最后的手段
sudo chmod 777 /etc/resolv.conf
chmod 777
仅在其他方法均无效时使用,因为它可能会导致安全漏洞。