Algo VPN 是一组 Ansible 脚本,用于简化个人 WireGuard 和 IPsec VPN 的设置。它使用了最安全的默认配置,并支持主流云服务提供商。
更多信息请查看我们的发布公告。
获取 Algo 服务器运行的最简单方法是在本地系统上运行,或者从 Google Cloud Shell 运行,让它为您在云中设置一台_新的_虚拟机。
在云托管提供商处注册账户。 Algo 支持 DigitalOcean(最友好)、Amazon Lightsail、Amazon EC2、Vultr、Microsoft Azure、Google Compute Engine、Scaleway、DreamCompute、Linode、其他基于 OpenStack 的云托管、基于 CloudStack 的云托管或 Hetzner Cloud。
获取 Algo 副本。 Algo 脚本将从您的本地系统运行。有两种获取方式:
下载 ZIP 文件。解压文件,创建一个名为 algo-master 的目录,其中包含 Algo 脚本。
使用 git clone 创建一个名为 algo 的目录,其中包含 Algo 脚本:
git clone https://github.com/trailofbits/algo.git
设置配置选项。 使用您喜欢的文本编辑器打开 config.cfg。在 users 列表中指定您要创建的用户。为您计划连接到 VPN 的每台设备创建一个唯一用户。在部署前,您还应检查其他选项,因为之后改变主意可能需要您部署全新的服务器。
启动部署。 回到终端。在 Algo 目录中,运行适合您平台的脚本:
macOS/Linux:
./algo
Windows:
.\algo.ps1
首次运行脚本时,它会自动安装所需的 Python 环境(Python 3.11+)。后续运行时会立即启动,并适用于所有平台(macOS、Linux、通过 WSL 的 Windows)。Windows PowerShell 脚本在需要时会自动使用 WSL,因为 Ansible 需要类 Unix 环境。有几个可选功能可用,对于功能完整的 VPN 服务器来说,这些都是非必需的。这些可选功能在部署文档中描述。
就是这样!您现在可以设置客户端连接到您的 VPN。继续下面的配置 VPN 客户端。
"# 恭喜! #"
"# 您的 Algo 服务器正在运行。 #"
"# 配置文件和证书位于 ./configs/ 目录中。 #"
"# 连接后,请前往 https://whoer.net/ 检查 #"
"# 确保所有流量都通过 VPN。 #"
"# 本地 DNS 解析器 172.16.0.1 #"
"# 新用户的 p12 和 SSH 密钥密码为 XXXXXXXX #"
"# CA 密钥密码为 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX #"
"# SSH 访问:ssh -F configs/<server_ip>/ssh_config <hostname> #"
用户需要的证书和配置文件位于 configs 目录中。请务必确保这些文件的安全,因为许多文件包含私钥。所有文件都保存在以新 Algo VPN 服务器 IP 地址命名的子目录下。
IPsec 用户重要提示:如果您以后想要添加或删除用户,必须在服务器部署时对 Do you want to retain the keys (PKI)? 提示选择 yes。这将保留用户管理所需的证书颁发机构。
Apple 设备使用 WireGuard 提供 VPN 服务。Algo 为 config.cfg 中定义的每个用户生成 WireGuard 配置文件 wireguard/<username>.conf 和 QR 码 wireguard/<username>.png。
在 iOS 上,从 iOS App Store 安装 WireGuard 应用。然后,使用 WireGuard 应用扫描 QR 码或通过 AirDrop 将配置文件传输到设备。
在 macOS 上,从 Mac App Store 安装 WireGuard 应用。运行应用后,WireGuard 将出现在菜单栏中。点击 WireGuard 图标,选择 Import tunnel(s) from file...,然后选择相应的 WireGuard 配置文件。
在 iOS 或 macOS 上,您可以通过编辑 WireGuard 应用中的隧道配置来启用“按需连接”和/或排除某些受信任的 Wi-Fi 网络(例如您的家庭或工作网络)。(Algo 无法自动为您完成此操作。)
如果您更希望在 Apple 设备上使用内置的 IPsec VPN,或者需要自动配置“按需连接”或排除的 Wi-Fi 网络,请参阅 Apple IPsec 客户端设置指南 以获取详细配置说明。
Android 使用 WireGuard 提供 VPN 服务。安装 WireGuard VPN 客户端。将相应的 wireguard/<name>.conf 文件导入您的设备,然后使用它设置新连接。有关详细的安装和配置说明,请参阅 Android 设置指南。
Windows 使用 WireGuard 提供 VPN 服务。Algo 为 config.cfg 中定义的每个用户生成 WireGuard 配置文件 wireguard/<username>.conf。
安装 WireGuard VPN 客户端。将生成的 wireguard/<username>.conf 文件导入您的设备,然后使用它设置新连接。有关更详细的操作说明和故障排除,请参阅 Windows 设置说明。
Linux 客户端可以使用 WireGuard 或 IPsec:
WireGuard:WireGuard 与 Linux 客户端配合良好。有关在 Ubuntu 和其他发行版上配置 WireGuard 的逐步说明,请参阅 Linux WireGuard 设置指南。
IPsec:对于 strongSwan IPsec 客户端(包括 OpenWrt、Ubuntu Server 和其他发行版),请参阅 Linux IPsec 设置指南 以获取详细配置说明。
对于使用 WireGuard 的 OpenWrt 路由器,请参阅 OpenWrt WireGuard 设置指南 以获取特定于路由器的配置说明。
对于上面未涵盖的设备或手动配置,您需要特定的证书和配置文件。您需要的文件取决于您的设备平台和 VPN 协议(WireGuard 或 IPsec)。
如果您开启了可选的 SSH 隧道角色,系统将为 config.cfg 中的每个用户创建本地用户账户,并且它们的 SSH authorized_key 文件将位于 configs 目录中(user.pem)。SSH 用户账户没有 shell 访问权限,不能使用密码认证,并且只有有限的隧道选项(例如,需要 ssh -N)。这确保了 SSH 用户拥有设置隧道所需的最小权限,并且无法在 Algo 服务器上执行其他操作。
使用下面的示例命令启动 SSH 隧道,将 <user> 和 <ip> 替换为您自己的。隧道设置好后,您可以将浏览器或其他应用程序配置为使用 127.0.0.1:1080 作为 SOCKS 代理,通过 Algo 服务器路由流量:
ssh -D 127.0.0.1:1080 -f -q -C -N <user>@algo -i configs/<ip>/ssh-tunnel/<user>.pem -F configs/<ip>/ssh_config
您的 Algo 服务器已配置为仅通过密钥进行 SSH 访问以进行管理。打开终端应用,cd 到您最初下载 Algo 的 algo-master 目录,然后使用成功消息中列出的命令:
ssh -F configs/<ip>/ssh_config <hostname>
其中 <ip> 是您 Algo 服务器的 IP 地址。如果您发现自己经常登录服务器,那么自动加载您的 Algo SSH 密钥将会很方便。将以下代码片段添加到 ~/.bash_profile 的末尾,以将其永久添加到您的 shell 环境中:
ssh-add ~/.ssh/algo > /dev/null 2>&1
或者,您可以选择将生成的任何 Algo 服务器的配置包含到您的 SSH 配置中。编辑 ~/.ssh/config 文件,在顶部添加以下指令:
Include <algodirectory>/configs/*/ssh_config
其中 <algodirectory> 是您克隆 Algo 的目录。
Algo 使得在初始部署后轻松添加或删除 VPN 服务器上的用户。
对于 IPsec 用户:您必须在初始服务器部署时对 Do you want to retain the keys (PKI)? 提示选择 yes。这将保留用户管理所需的证书颁发机构。您还应保存部署期间显示的 p12 和 CA 密钥密码,因为它们只显示一次。
要添加或删除用户,首先编辑 config.cfg 文件中的 users 列表。根据需要添加新用户名或删除现有用户名。然后,在终端中导航到 algo 目录并运行:
macOS/Linux:
./algo update-users
Windows:
.\algo.ps1 update-users
过程完成后,将为任何新用户在 configs 目录中生成新的配置文件。Algo VPN 服务器将更新为仅包含 config.cfg 文件中列出的用户。被删除的用户将无法再连接,新用户将拥有全新的证书和配置文件可供使用。