我使用 VPN(由这方法)在 Ubuntu 16.04 上通过默认网络管理器进行连接。经常——在大约 5 分钟的流媒体或大约 1 小时的正常浏览之后——它会切断,我的意思是一切都失败了,包括直接连接到给定的 IP。
经过深入研究后/var/log/syslog
,我发现了以下一系列事件,这似乎是罪魁祸首:
Apr 8 17:41:43 ***** nm-openvpn[9107]: [83d27bda14f33782df085b09962c2dfa] Inactivity timeout (--ping-restart), restarting
Apr 8 17:41:43 ***** nm-openvpn[9107]: SIGUSR1[soft,ping-restart] received, process restarting
Apr 8 17:41:45 ***** nm-openvpn[9107]: WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Apr 8 17:41:45 ***** nm-openvpn[9107]: NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
Apr 8 17:41:45 ***** nm-openvpn[9107]: RESOLVE: Cannot resolve host address: us-east.privateinternetaccess.com: Temporary failure in name resolution
Apr 8 17:42:20 ***** nm-openvpn[9107]: message repeated 8 times: [ RESOLVE: Cannot resolve host address: us-east.privateinternetaccess.com: Temporary failure in name resolution]
有时前面有以下内容:
Apr 8 10:47:28 ***** nm-openvpn[4716]: TLS Error: Unroutable control packet received from [AF_INET]*.*.*.*:**** (si=3 op=P_CONTROL_V1)
Apr 8 10:47:56 ***** nm-openvpn[4716]: message repeated 3 times: [ TLS Error: Unroutable control packet received from [AF_INET]*.*.*.*:**** (si=3 op=P_CONTROL_V1)]
然而,我发现的所有内容都表明存在时间同步问题,而我没有遇到过这个问题。
以下是openvpn
网络管理器生成的进程:
/usr/sbin/openvpn --remote us-newyorkcity.privateinternetaccess.com 1194 udp --comp-lzo --nobind --dev tun --auth-nocache --reneg-sec 0 --syslog nm-openvpn --script-security 2 --up /usr/lib/NetworkManager/nm-openvpn-service-openvpn-helper --bus-name org.freedesktop.NetworkManager.openvpn.Connection_8 --tun -- --up-restart --persist-key --persist-tun --management /var/run/NetworkManager/nm-openvpn-b0ce41de-070b-42c7-af39-90961791ebeb unix --management-client-user root --management-client-group root --management-query-passwords --auth-retry interact --route-noexec --ifconfig-noexec --client --auth-user-pass --ca /etc/openvpn/ca.crt --user nm-openvpn --group nm-openvpn --chroot /var/lib/openvpn/chroot
(我找不到 NM 中哪里可以更改这些选项……)
知道问题可能出在哪里吗?
答案1
最近遇到了同样的问题,并在 bugs.launchpad.net 上看到了这篇帖子,它帮我解决了这个问题! 详细帖子在这里,但我会继续列出说明。
简而言之,OpenVPN 由于权限问题无法重新连接。(总是这样,不是吗!?)
您需要为 systemd 创建一个 Drop-in“插件”。
- 创建目录来保存插件配置文件:
$ cd /etc/systemd/系统
$ sudo mkdir NetworkManager.service.d
$ cd NetworkManager.service.d
- 创建一个新的conf文件:
$ sudo nano disable-openvpn-reduced-privileges.conf
在文件中添加以下内容:
# Disable NetworkManager's OpenVPN plug-in from performing chroot and dropping privileges by default (null assignment)
[Service]
Environment="NM_OPENVPN_CHROOT="
Environment="NM_OPENVPN_USER="
Environment="NM_OPENVPN_GROUP="
保存文件并退出 nano。为了使更改生效,您可以重新启动 NetworkManager 服务并退出并重新启动 openvpn 连接,或者如果对您来说更简单,只需重新启动计算机即可。
您可以通过多种方式测试它是否正常工作:
Systemd 应该显示插入式配置正在使用中:
$ systemctl 状态网络管理器
NetworkManager.service - Network Manager
Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/NetworkManager.service.d
+-disable-openvpn-reduced-privileges.conf
当 openvpn 运行时,它应该以 root 用户身份运行。可以使用 ps 或任何其他进程列表/监视器来验证这一点。我个人使用 htop。
强制重新启动正在运行的 openvpn 连接并查看是否成功:
$ sudo killall -SIGUSR1 openvpn