我有一个 ProtonVPN 帐户,并始终连接到 VPN 服务器以保护互联网隐私。不幸的是,ProtonVPN 目前不提供基于 Linux 的客户端,因此他们建议通过 OpenVPN 连接到他们的服务器。
我安装了软件包openvpn
network-manager-openvpn
并network-manager-openvpn-gnome
按照官方指南加载其.ovpn 配置文件。
连接正常,但每当我在 Ubuntu 上连接到 VPN 时,我都必须从预配置的 .ovpn 文件中手动选择特定服务器。相反,在他们的 Android 客户端上,例如,我只需点击一个按钮,无需考虑就可以连接到随机服务器。
有什么办法可以让网络管理员选择一个随机的 .ovpn 配置,而不是我必须手动选择一个?(我不怕命令行,但最好不要在我的系统中添加另一个 PPA。)
答案1
一个简单的命令行脚本可以像这样工作:
#!/bin/bash
RANGE=200
number=$RANDOM
let "number %= $RANGE"
fname="us${number}.ovpn"
openvpn "$fname"
假如说:
- 您的 OpenVPN 配置文件的命名遵循类似 的方案
us176.ovpn
,即由两个字母的国家代码和一个运行号码组成。 - 可用的 OpenVPN 配置文件从
us1
到运行us200
。
您必须调整范围,并添加存储配置文件的目录。根据确切的文件名格式(我不知道 ProtonVPN 的格式),您可能需要进行其他修改,但您明白了。请注意,您需要以 sudo 身份执行脚本,OpenVPN 才能这样工作。
编辑:如果您的 VPN 在连接时要求输入用户名和密码,您可以像这样修改脚本的最后一行:
openvpn --config $fname --auth-user-pass /dir/to/userpass.txt
其中 userpass.txt 包含位于两行上的用户名和密码(如果您愿意这样存储的话)。
答案2
我从未这样做过,但据我了解,openvpn 手册中,您可以在.ovpn
配置文件中写入多个连接配置文件/远程 vpn-server-ip。与–remote-random
软件结合使用时openvpn
会为您选择一个,否则会选择列表中指定的第一个服务器。我不知道这是否适用于 NetworkManager,但当您从终端运行命令时应该可以工作,例如
sudo openvpn my.config.file.ovpn
。
引用手册:
--远程主机 [端口] [协议]
远程主机名或 IP 地址。 在客户端,可以指定多个 --remote 选项以实现冗余,每个选项指向不同的 OpenVPN 服务器。 为此目的指定多个 --remote 选项是更通用的连接配置文件功能的一个特例。
请参阅
<connection>
下面的文档。OpenVPN 客户端将按照列表指定的顺序尝试连接到主机:端口上的服务器--remote 选项。proto 表示连接远程时使用的协议,可以是“tcp”或“udp”。
如果连接失败,客户端将转到列表中的下一个主机。 请注意,在任何给定时间,OpenVPN 客户端最多会连接到一台服务器。
[...]
<connection>
定义客户端连接配置文件。客户端连接配置文件是一组 OpenVPN 选项,用于描述如何连接到给定的 Open‐VPN 服务器。客户端连接配置文件在 OpenVPN 配置文件中指定,每个配置文件都用 和 括
<connection>
起来</connection>
。以下是连接配置文件使用的示例:
客户端开发
<connection>
远程 198.19.34.56 1194 udp
远程 198.19.34.56 443 tcp
远程 198.19.34.56 443 tcp http 代理 192.168.0.8 8080 http 代理重试
[...]
OpenVPN 客户端将依次尝试每个连接配置文件,直到成功连接。
--remote-random 可用于初始“扰乱”连接列表。
答案3
有一个内置配置。
只需像这样添加所有服务器:
远程 XX.XXvpn.xxx 端口远程 XX2.XXvpn.xxx 端口...
然后添加此行 remote-random
就这样。