我有一个守护进程,从我自己的自托管 vpn 开始,可以很好地运行:
sudo openvpn --config /home/philip/open_vpn/client1.ovpn
现在我换成了付费 VPN 服务,上面的功能虽然管用,但每次都需要我手动输入凭证。这意味着我的自动启动功能会中断。
查看网络管理器的 GUI,似乎我可以让任何单独的网络自动连接到 vpn,但未知网络是我使用 vpn 的最重要时刻。
如何才能使自动 VPN 正常工作而不必每次都输入我的电子邮件和密码?
答案1
以下是我让它工作的方法。在我包含所有 vpn ovpn 文件的文件夹中,我创建了一个名为 的文件auth.txt
。其中包含以下内容,替代我的实际凭证:
Username
Password
然后我打开了我想要使用的 ovpn 文件,找到了auth-user-pass
我修改过的一行,如下所示,将路径替换为 auth.txt 文件的完整路径:
auth-user-pass /home/philip/open_vpn/auth.txt
然后我创建了一个名为的 bash 脚本start_vpn.sh
,如下所示:
#!/usr/bin/env bash
sudo openvpn --config /home/philip/open_vpn/nord/ca24.nordvpn.com.udp1194.ovpn
然后我创建一个 systemd 启动脚本,/etc/systemd/system/start-openvpn.service
其内容如下:
[Service]
ExecStart=/home/philip/open_vpn/start_vpn.sh
[Install]
WantedBy=default.target
然后我使用以下命令启用 systemd 作业:
systemctl enable start-openvpn.service
奖金:
如果你和我一样有数百个 ovpn 文件,你可能想要一次性更新所有这些文件中的行。这是sed
我在包含 ovpn 文件的文件夹中使用的命令,你需要更新以反映你的系统:
sed -i *nordvpn* -e 's/auth-user-pass/auth-user-pass \/home\/philip\/open_vpn\/auth.txt/g'