如何在 Ubuntu CLI 上自动启动 openvpn(客户端)?

如何在 Ubuntu CLI 上自动启动 openvpn(客户端)?

我使用的是 Ubuntu 12.04 64 位。*.ovpn如果我输入以下内容,则文件可以运行:

sudo openvpn client.ovpn

现在我想openvpn在启动计算机时启动它。

我怎样才能做到这一点?

答案1

  1. 下载OpenVPNConfigFile.ovpn。请注意,您可以将文件重命名为任何您喜欢的名称。

  2. 将 ovpn 文件移动到/etc/openvpn

  3. cd /etc/openvpn文件夹并输入sudo nano yourserver.txt

    your_server_user_name
    your_server_passowrd
    

    保存并关闭

  4. sudo nano OpenVPNConfigFile.ovpn

    找到auth-user-pass并添加yourserver.txt在它旁边,这样它就变成

    auth-user-pass yourserver.txt
    

    这将允许您在每次启动 openvpn 连接时跳过输入凭据

  5. 重命名OpenVPNConfigFile.ovpnOpenVPNConfigFile.conf

    sudo mv OpenVPNConfigFile.ovpn OpenVPNConfigFile.conf
    
  6. sudo nano /etc/default/openvpn

    取消注释AUTOSTART="all"

  7. sudo service openvpn start

    您应该会看到一条消息,提示您已连接。每次启动计算机时都会建立连接。

答案2

openvpn软件包附带一个初始化脚本。该脚本会自动为中的每个文件(注意扩展名)/etc/init.d/openvpn设置连接。.conf/etc/openvpn

根据此处的信息找到了这一点:https://openvpn.net/index.php/open-source/documentation/howto.html#startup

如果您在 Linux 上通过 RPM 或 DEB 包安装 OpenVPN,安装程序将设置一个启动脚本。执行时,启动脚本将扫描 /etc/openvpn 中的 .conf 配置文件,如果找到,将为每个文件启动一个单独的 OpenVPN 守护程序。

答案3

我在这方面遇到了一些困难,最终写出了使用 systemd 手动设置的所有说明。

这对我使用 Ubuntu 16.10 和 openvpn 2.3.11 很有效

设置你的 vpn 以从 bash 运行

这些示例使用 expressvpn,但大多数工作方式相同

下载你的 vpn 提供商的 ovpn 配置文件,例如my_express_vpn_阿姆斯特丹_2虚拟专用网络

将其移动到/etc/openvpn/并将其重命名为以结束配置文件

sudo mv ~/Downloads/my_express_vpn_amsterdam_2.ovpn /etc/openvpn/amsterdam-2.conf

您的 VPN 提供商将为您提供通过 openvpn 连接的用户名和密码。将用户名和密码分别保存在各自的行上

sudo vim /etc/openvpn/express-vpn-crednetials.txt
# add these lines
YOUR_VPN_USERNAME
YOUR_VPN_PASSWORD
# save the file

现在编辑/etc/openvpn/amsterdam-2.conf 查找一行auth-user-pass,并将其替换为您的凭证文件的路径

auth-user-pass /etc/openvpn/express-vpn-crednetials.txt

测试你的配置!像这样启动 openvpn

sudo openvpn --config /etc/openvpn/amsterdam-2.conf

openvpn 应该无需询问用户名或密码即可连接

删除 openvpn 的现有(损坏)服务配置

sudo rm /etc/systemd/system/multi-user.target.wants/openvpn.service

将 openvpn 设置为作为 systemd 服务运行

openvpn 自带的配置已损坏,因此我删除了它并根据以下内容创建了一个新配置这个答案

为 openvpn 创建 systemd 服务

sudo vim /usr/lib/systemd/system/openvpn@service

添加此配置:

[Unit]
Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I
After=syslog.target network.target

[Service]
PrivateTmp=true
Type=forking
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf

[Install]
WantedBy=multi-user.target

用作%i通配符,以便此服务可用于多个 vpn 配置。将其设置为amsterdam-2.conf我们之前创建的文件

sudo systemctl start [email protected]

systemd 服务现在应该在 amsterdam vpn 上运行。检查其状态如下

sudo systemctl status [email protected]

您应该会看到几行以 结尾的输出,Initialization Sequence Completed并且您的 vpn 应该正在运行。

希望这有帮助!相关阅读:

答案4

如果你看一下,就会发现有预构建脚本/usr/lib/systemd/system/[email protected]

因此您实际上只需要 2 个步骤:

  1. 将您的配置文件复制到/etc/openvpn/client/mv client.ovpn /etc/openvpn/client/client.conf
  2. 启动服务:sudo systemctl start [email protected]

如果有文件/etc/openvpn/client/ttt.conf,那么服务命令应该是sudo systemctl start [email protected]

相关内容