我想知道,从系统恢复唤醒计算机后如何重新建立openvpn?我正在尝试使用openvpn cli,而不是通过带有.ovpn文件的网络管理器。
我发现已经有一个openvpn启动脚本可以扫描.conf文件(您可以将扩展名从.ovpn更改为.conf)。但是,为了在唤醒计算机后重新启动openvpn,我能够创建在Ubuntu 16.04 LTS上运行的systemd服务。
将文件命名为openvpn-reconnect.service并将以下内容放入其中:
[Unit]
Description=Restart OpenVPN after suspend
After=suspend.target
After=hibernate.target
After=hybrid-sleep.target
[Service]
ExecStart=/bin/systemctl restart openvpn.service
[Install]
WantedBy=suspend.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target
我建议首先确保默认情况下仅使用您VPN的dns服务器。通过注释掉(添加#),禁用bugout和完全毫无意义的dnsmasq本地dns服务器,ubuntu使用具有dns分辨率的垃圾(请参阅此处文章:disable-dnsmasq-as-your-local-dns-server-in-ubuntu)像这样编辑网络管理器配置文件时,移至dns = dnsmasq行的开头:
sudo emacs /etc/NetworkManager/NetworkManager.conf
然后,保存文件后,单击GUI网络管理器小程序,选择“编辑连接”,选择要使用的主要(非VPN)网络,单击“ IPv6设置”选项卡,通过单击“忽略”来忽略IPv6流量。 IPv6设置”选项卡,然后在“方法”菜单中选择“忽略”。保存更改,然后使用以下命令重新启动网络管理器
sudo service network-manager restart
现在,让ovpn通过命令行工作:
创建一个auth.txt文件,其中包含:
<username>
<password>
例如,示例auth.txt可能包含两行,如下所示:
user1234
password1234
编辑.ovpn(或.conf)文件以使用auth.txt进行自动登录:查找包含auth-user-pass的行,并将auth.txt附加到末尾,如下所示:
...
auth-user-pass auth.txt
...
如果您的文件包含选项auth-nocache,请删除该行。auth-user-pass和auth-nocache不兼容!openvpn手册页明确指出
Further, using --daemon together with --auth-user-pass (entered
on console) and --auth-nocache will fail as soon as key renego‐
tiation (and reauthentication) occurs.
此行话实质上意味着,在您浏览或流式传输或在配置文件中包含auth-nocache行时,openvpn会自发地消失。
将.ovpn文件重命名为.conf文件:
mv <filename>.ovpn <filename>.conf
将必要的.conf,.pem和.crt文件放在目录中将目录的内容复制到/ etc / openvpn:
sudo cp <path-to-auth-crt-pem-and-conf-files>/* /etc/openvpn
通过编辑/etc/default/openvpn(/etc/init.d/openvpn的配置文件),指定在启动openvpn时应自动启动的连接
sudo emacs /etc/default/openvpn
例如,如果我有两个名为US-East和US-East-Strong的.conf文件,请在#AUTOSTART =“ all”下添加.conf文件的名称,然后减去扩展名。
#AUTOSTART="all"
#AUTOSTART="US-East"
#AUTOSTART="US-East-Strong"
从要激活的单个连接的AUTOSTART指令中取消注释(删除#号)。每次将哪个连接更改为自动启动时,请运行:
sudo systemctl daemon-reload
sudo systemctl stop openvpn*
sudo systemctl start openvpn.service
要在挂起后使openvpn重新连接,请使用openvpn-reconnect.service
将服务文件放在systemd可以找到的位置:
sudo cp openvpn-reconnect.service /lib/systemd/system
使用以下命令启用和创建符号链接:
sudo systemctl enable openvpn-reconnect.service
要检查openvpn连接的状态,请使用:
systemctl status openvpn@<conf-filename-minus-extension>.service
例如,如果我的配置文件名为US-East.conf:
systemctl status [email protected]
如果可滚动,请键入q退出到shell。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句