快速搭建Algo VPN

Algo VPN

老大哥说话算话,最近国内很多VPN果然都被封掉了,我等屁民为了能好好写代码不得不想办法自己弄个VPN。 在看了不少网上的教程,发现用 Algo VPN 应该是最简单的方法了。这个VPN的好处,这篇文章说了很多,我就不一一翻译了。我觉得这个VPN最大的好处就是可以屏蔽很多广告😋。

自己搭建VPN就需要在国外有个服务器也就是VPS,我这里介绍一个最简单的方法就是用 DigitalOcean 的服务器,每个月的成本是 5$

搭建Algo VPN服务器

虽然AlgoVPN提供在不同的云服务器上不同搭建方法, 比如 DigitalOcean , Amazon EC2, Microsoft Azure. 下面我简单介绍怎么在 DigitalOcean 上搭建:

  1. 首先在 DigitalOcean 上注册一个帐号.

  2. 下载Algo. 把下载的压缩包解压.

  3. 安装 Algo 的依赖包. 打开你的终端. 你至少需要安装 python. 然后 cd 进入 algo-master 这个解压得到的文件夹 , 然后在终端中运行:

    • macOS:
      $ python -m ensurepip --user
      $ python -m pip install --user --upgrade virtualenv
      
    • Linux (deb-based):
      $ sudo apt-get update && sudo apt-get install \
          build-essential \
          libssl-dev \
          libffi-dev \
          python-dev \
          python-pip \
          python-setuptools \
          python-virtualenv -y
      
    • Linux (rpm-based): See the Pre-Install Documentation for RedHat/CentOS 6.x
    • Windows: See the Windows documentation
  4. 安装 Algo 剩下的依赖包. 在同一个终端下运行:
     $ python -m virtualenv env && source env/bin/activate && python -m pip install -U pip && python -m pip install -r requirements.txt
    

    在macOS上,可能需要安装cc。 直接按确定,会自动安装的。

  5. 设置VPN用户.config.cfg 这个文件里设置用户. 如果没用特定的设置,将会自动生成两个默认用户名。

  6. 开始搭建. 在 Algo 这个文件夹里,运行./algo 就可以开始自动搭建VPN服务器了。
    • 这里需要选择云服务器的位置, DigitalOcean 提供全球不同区域的服务器, 如果你主要在国内使用VPN, 建议选择新加坡或者印度班加罗尔的数据中心. 对比在国内访问 DigitalOcean 不同区域服务器的网速.

    • 选择服务器
    • 第二步需要在 DigitalOcean 的获得一个API token. 这个token可以在DigitalOcean的 settings/api 里生成。
    • 选择服务器位置

后面几步直接按确定接受默认选项就行了。如果想做更高级的配置这里有更详细的解释 deploy-from-ansible.md

好了!如果没有出现问题的话,你就能得到自己的VPN了。最近一次测试,我发现在自动搭建过程中可能出现以下错误:

TASK [cloud-digitalocean : Tag the droplet] ************************************
failed: [localhost] (item=staging) => {"failed": true, "item": "staging", "msg": "error tagging resource '73204383': param is missing or the value is empty: resources"}
failed: [localhost] (item=dbserver) => {"failed": true, "item": "dbserver", "msg": "error tagging resource '73204383': param is missing or the value is empty: resources"}
Debugger invoked
(debug) c
...
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Failed as requested from task"}

解决方法如下,将下面的代码保存在一个文件中do_tag.patch, 然后运行 patch -b -p0 < do_tag.patch

--- ./env/lib/python2.7/site-packages/ansible/modules/core/cloud/digital_ocean/digital_ocean_tag.py.orig	2017-12-02 09:42:56.044524930 -0500
+++ ./env/lib/python2.7/site-packages/ansible/modules/core/cloud/digital_ocean/digital_ocean_tag.py	2017-12-02 09:43:14.245074861 -0500
@@ -242,7 +242,7 @@
     module = AnsibleModule(
         argument_spec=dict(
             name=dict(type='str', required=True),
-            resource_id=dict(aliases=['droplet_id'], type='int'),
+            resource_id=dict(aliases=['droplet_id'], type='str'),
             resource_type=dict(choices=['droplet'], default='droplet'),
             state=dict(choices=['present', 'absent'], default='present'),
             api_token=dict(aliases=['API_TOKEN'], no_log=True),

如果没有错误,会得到以下信息,然后记下 p12 (user certificate) 的密码,之后需要用到。

        "\"#----------------------------------------------------------------------#\"",
        "\"#                          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 is XXXXXXXX             #\"",
        "\"#----------------------------------------------------------------------#\"",

VPN的使用

你需要用在 configs 这个文件夹里的文件来设置手机或者电脑上的VPN. 所有的文件都会自动生成在以 Algo VPN 服务器的 IP 地址命名的文件夹里。 如果不知道怎么用这些配置文件,这里有更详细的解释。 因为这里文章里已经讲得很清楚了,我就不翻译了。