有没有办法随机选择 OpenVPN 服务器?

有没有办法随机选择 OpenVPN 服务器?

我有一个 ProtonVPN 帐户,并始终连接到 VPN 服务器以保护互联网隐私。不幸的是,ProtonVPN 目前不提供基于 Linux 的客户端,因此他们建议通过 OpenVPN 连接到他们的服务器。

我安装了软件包openvpn network-manager-openvpnnetwork-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

就这样。

相关内容