Algo VPN
Algo VPN是一组Ansible脚本,可简化个人WireGuard和IPsec VPN的设置。它使用可用的最安全的默认值,并与常见的云提供商一起工作。更多信息请参见我们的发布公告。
Features Anti-features 部署Algo服务器
让Algo服务器运行的最简单的方法是在本地系统上或从Google Cloud Shell运行它,并让它在云中为您设置一个新的虚拟机。
在云托管提供商上设置帐户。Algo支持DigitalOcean(最友好的用户)、Amazon Lightsail、Amazon EC2、Vultr、Microsoft Azure、Google Compute Engine、Scaleway、DreamCompute、Linode或其他OpenStack-based云托管、Exoscale或其他CloudStack-based云托管或Hetzner云。 拿一份Algo的拷贝。Algo脚本将安装在本地系统上。有两种获取副本的方法:下载ZIP文件。解压缩该文件以创建一个名为algo-master的目录,其中包含Algo脚本。运行命令git clone 创建一个名为algo的目录,其中包含Algo脚本。 安装Algo的核心依赖项。Algo要求在您的系统上安装Python3.6或更高版本以及至少一个支持包。macOS:Catalina将python3作为可选命令行开发工具包的一部分。从终端运行:python3 -m pip install –user –upgrade virtualenv如果提示,安装命令行开发工具和re-run上面的命令。
有关在Catalina之前的macOS版本上安装python3的信息,请参见从macOS部署。Linux:Ubuntu、Debian和Fedora的最新版本已经安装了python3。确保您的系统是up-to-date,并安装支持包:Ubuntu和Debian:sudo apt install -y python3-virtualenvFedora:sudo dnf install -y python3-virtualenvredhat和CentOS 7及更高版本(有关早期版本,请参阅此文档):sudo yum -y install epel-releasesudo yum -y install python36-virtualenvWindows:使用Windows Subsystem for Linux(WSL)创建您自己的在Windows下运行的Ubuntu副本,从中安装并运行Algo。请参阅Windows文档。 安装Algo的其余依赖项。每次下载新的Algo副本时服务器vpn设置,都需要从Algo目录运行这些命令。在终端窗口cd到algo-master(ZIP文件)或algo(git clone)目录中,在Fedora上运行:python3 -m virtualenv –python=”$(command -v python3)” .env && source .env/bin/activate && python3 -m pip install -U pip virtualenv && python3 -m pip install -r requirements.txt,将选项–system-site-packages添加到上面的第一个命令中。
在macOS上提示安装编译器。 设置配置选项。在您最喜欢的文本编辑器中打开文件config.cfg。指定要在users列表中创建的用户。为计划连接到VPN的每个设备创建一个唯一的用户。如果希望以后能够添加或删除用户,则必须在部署期间的Do you want to retain the keys (PKI)?提示符处选择yes。您还应该在部署之前检查其他选项,因为以后改变对它们的想法可能需要您部署一个全新的服务器。 开始部署。回到你的终点站。在Algo目录中,运行./algo,然后按照说明操作。有几个可选功能可用。完全功能的VPN服务器不需要任何功能。这里将更详细地描述这些可选功能。
就这样!服务器部署过程完成后,您将收到以下消息。请记下p12(用户证书)密码和CA密钥,以防以后需要它们,它们只在这次显示。
现在可以设置客户端以连接到VPN。继续配置下面的VPN。
"# Congratulations! #"
"# Your Algo server is running. #"
"# Config files and certificates are in the ./configs/ directory. #"
"# Go to https://whoer.net/ after connecting #"
"# and ensure that all your traffic passes through the VPN. #"
"# Local DNS resolver 172.16.0.1 #"
"# The p12 and SSH keys password for new users is XXXXXXXX #"
"# The CA key password is XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX #"
"# Shell access: ssh -F configs//ssh_config #"
配置VPN客户端
用户需要的证书和配置文件放在configs目录中。请确保这些文件的安全,因为许多文件都包含私钥。所有文件都保存在一个名为新的algovpn服务器的IP地址的子目录下。
Apple Devices
WireGuard用于在苹果设备上提供VPN服务。Algo为wireguard/.conf中定义的每个用户生成一个WireGuard配置文件wireguard/.conf,以及一个QR代码wireguard/.png。
在iOS上,从iOS应用商店安装WireGuard应用程序。然后,使用WireGuard应用程序扫描二维码或将配置文件空投到设备上。
在macOS Mojave或更高版本上,从Mac app Store安装WireGuard应用程序。运行应用程序后,WireGuard将出现在菜单栏中。单击WireGuard图标,选择importtunnel(s)fromfile…,然后选择适当的WireGuard配置文件。
在iOS或macOS上,您可以通过编辑WireGuard应用程序中的隧道配置来启用“按需连接”和/或排除某些受信任的Wi-Fi网络(如您的家庭或工作)。(Algo无法自动为您执行此操作。)
在旧版本的macOS上安装WireGuard要复杂一些。请参见使用macOS作为WireGuard的客户端。
如果您喜欢在Apple设备上使用built-inIPSEC VPN,或者需要自动配置“按需连接”或排除的Wi-Fi网络,请参阅使用Apple设备作为具有IPSEC的客户端。
Android Devices
WireGuard用于在Android上提供VPN服务。安装WireGuard VPN客户端。将相应的wireguard/.conf文件导入您的设备,然后与它建立新的连接。有关更详细的演练,请参阅Android安装说明。
Windows
WireGuard用于在Windows上提供VPN服务。Algo为config.cfg中定义的每个用户生成一个WireGuard配置文件wireguard/.conf。
安装WireGuard VPN客户端。将生成的wireguard/.conf文件导入您的设备,然后与它建立新的连接。
Linux WireGuard Clients
WireGuard在Linux客户机上工作得很好。有关如何在Ubuntu上配置WireGuard的示例,请参见本页。
Linux strongSwan IPsec客户端(e.g.,OpenWRT,Ubuntu服务器等)
请看这一页。
Other Devices
根据平台的不同,您可能需要以下一个或多个文件。
设置SSH隧道
如果您启用了可选的SSH隧道角色,那么将为config.cfg中的每个用户创建本地用户帐户,并且他们的SSHauthorized_key文件将位于configs目录中(用户.ssh.pem). SSH用户帐户没有shell访问权限,无法使用密码进行身份验证,并且只有有限的隧道选项(e.g.,ssh -N是必需的)。这确保SSH用户拥有设置隧道所需的最少访问权限,并且不能在Algo服务器上执行其他操作。
使用下面的示例命令启动SSH隧道,方法是将和替换为自己的隧道。设置隧道后,您可以配置浏览器或其他应用程序,以使用127.0.0.1:1080作为SOCKS代理,通过Algo服务器路由流量:
ssh -D 127.0.0.1:1080 -f -q -C -N <user>@algo -i configs//ssh-tunnel/.pem -F configs//ssh_config
SSH到Algo服务器
您的Algo服务器配置为key-onlySSH访问,以便于管理。打开终端应用程序cd到最初下载Algo的algo-master目录,然后使用成功消息中列出的命令:
ssh -F configs/<ip>/ssh_config <hostname>
其中是您的Algo服务器的IP地址。如果您发现自己经常登录到服务器,那么自动加载algossh密钥将非常有用。将以下代码段添加到~/.bash_profile的底部,以将其永久添加到shell环境中:
ssh-add ~/.ssh/algo > /dev/null 2>&1
或者,您可以选择在SSH配置中包含为创建的任何Algo服务器生成的配置。编辑文件~/.ssh/config服务器vpn设置,在顶部包含以下指令:
Include /configs/*/ssh_config
其中是克隆Algo的目录。
添加或删除用户
如果您选择在部署过程中保存CA密钥,那么Algo自己的脚本可以轻松地在VPN服务器上添加和删除用户。
更新config.cfg中的users列表 打开一个终端cd到algo目录,并用source .env/bin/activate激活虚拟环境 运行命令:./algo update-users
此过程完成后,algovpn服务器将只包含config.cfg文件中列出的用户。
Additional Documentation 特定云提供商的设置说明 从通用平台安装和部署 设置VPN客户端以连接到服务器 Advanced Deployment
如果您已经阅读了所有文档并有进一步的问题,请加入Gitter上的聊天。
Endorsements
我一直在抱怨VPN svc的糟糕状况,大概是时候就该话题进行适当的讨论了。TL;DR:使用Algo。
–肯恩·怀特
在选择VPN提供商/应用之前,请确保您做了一些研究。。。–或者考虑使用Algo
–登记册
Algo非常简单和安全。
–咕噜咕噜
我玩过algovpn,这是一组脚本,可以让你在很短的时间内在云端建立一个VPN,即使你对开发不太了解。我不得不说,我对比特之路的做法印象深刻。
–TechCrunch的Romain Dillet
如果你不愿意把钱花在一个匿名的、随机的VPN提供商那里,这是最好的解决方案。
–Thorin Klosowski给Lifehacker
Support Algo VPN


所有捐款都支持持续发展。谢谢!
Algo是在AGPLv3下授权和分发的。如果你想发布一个基于Algo的closed-source修改或服务,那么请考虑购买一个例外。与上述方法一样,这将有助于支持持续发展。
