如何低成本搭建自己的私有VPN

对于国内的开发者来说,网络被墙的滋味估计每个人都一样。

本文就分享一下我在研究搭建自己的私有VPN的心得,提供给各位一个方案,不需要任何客户端,低成本就能享有一个自己的私有VPN服务器,从此上网是如此的美好。

当然我也使用过一些收费VPN,是省力,但是用起来经常出问题,速度还不行。自己搭的,都是可控范围内的,出了问题自己也清楚是什么问题。

创建一个云电脑

我们有两个国外云主机服务商可以选择,当然其它的任何可以运行ubuntu 16.04的云主机都可以。
一个是Vultr 链接:Vultr
一个是DigitalOcean 链接:DigitalOcean
比较常用的就是以上两个了,如果您有其它的国外的云主机在线,也可以继续往下部署。
前提是IP在国内要能访问!重要!

打开以上两个链接,注册账号即可以获取$10美元的额度在您的账户中。开通账户的时候需要提供信用卡,或者paypal等支持手段,Vultr有支付宝选项,所以对国内的开发者来说Alipay是首选。

通过服务商的UI创建云主机,步骤很简单,就是选择一下主机部署区域,操作系统,费用价格等信息,选最低配就行了。关于部署区域选择美国,英国这些都可以。关于操作系统选择Ubuntu 16.04 x64即可。创建好了后,会有公网IP显示,在本地ping下此IP,如果通了说明此IP可以作为VPN服务器。如果不通,则需要重新创建一个,新的创建好了后,将老的删除即可。费用是创建了后即时产生,一般Vultr是按小时算的,最低成本的一小时只有$0.004美元。换算成人民币费用其实非常低了,可以接受IP不通时,换主机的成本。创建好的主机不管是运行还是停止状态,都会按小时收费。这点需要注意,不用的时候,需要将主机删除。这样才不会产生不必要的费用。
收费一般都是先充值,按使用情况逐步扣费。

关于创建主机有疑问,可以在联系页面邮件给我,或者评论,我会在空的时候第一时间回复的。

下面是vultr创建的步骤的一些图片:(DigitOcean都大同小异的,可以自己参照创建)

vultr-create-001

点击蓝色的加号开始创建

vultr-create-002

选择区域,一般都选择New York,Chicago,Los Angeles, Miami等。

vultr-create-003

选择操作系统和硬件配置,按箭头配置即可。如果$2.5/mo临时卖出的话,可以等段时间。不想等就可以直接选择$5/mo,稍微价格高些。

vultr-create-004

点击Deploy Now开始部署,部署需要点时间,一般3-5分钟左右。

vultr-create-005

IP和root用户登录密码,需要的时候可随时回来点击两张纸的图标复制。可以不用记。

连接我们的云主机

主要是通过SSH协议来连接,如果有不懂的,可以下载下面的软件进行连接。
对于开发高手,相信都懂SSH是啥,可以略过本节。
不懂的或者没有LINUX经验的没有关系,按下面的步骤来就行。

下载PUTTY

PUTTY

下载完成后,首先打开putty.exe,

putty001

输入root,回车,复制刚刚给出的密码,在下面的窗口处右键即可输入密码,然后回车。

putty002

以下是登录成功页面,至此您已经有了一台自己的linux云主机了。

putty003

 

部署VPN

这里使用的是一个我最近找到的不错的开源项目,Algo,地址是 https://github.com/trailofbits/algo
大家可以收藏一下,强烈推荐!

登录成功以后在PUTTY终端中输入以下命令:(可以复制以下内容,然后在PUTTY窗口中右键再按回车键)
一次一行,注意[# ]不需要复制:

# apt-get update && sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip python-setuptools python-virtualenv -y

下载相关Algo文件及安装依赖

# git clone https://github.com/trailofbits/algo.git
# cd algo
# python -m virtualenv –python=`which python2` env && source env/bin/activate && python -m pip install -U pip && python -m pip install -r requirements.txt

编辑文件config.cfg
# nano comfig.cfg

putty004

将红框内的dan和jack替换成自己想要的名称,可以只留一行,因为是自己用,留一行即可,参照下图:利用键盘的方向键移动光标,和在记事本的操作差不多。

putty005

编辑完成后,先按Ctrl+O保存,再按Ctrl+X退出。

然后开始部署:

# ./algo

What provider would you like to use?
1. DigitalOcean
2. Amazon Lightsail
3. Amazon EC2
4. Microsoft Azure
5. Google Compute Engine
6. Scaleway
7. OpenStack (DreamCompute optimised)
8. Install to existing Ubuntu 16.04 server

Enter the number of your desired provider
输入8选择 Install to existing Ubunto 16.04 server

Enter the IP address of your server: (or use localhost for local installation)
直接回车选择localhost安装

What user should we use to login on the server? (note: passwordless login required, or ignore if you’re deploying to localhost)
直接回车使用root,不需要密码,因为是本地安装

Enter the public IP address of your server: 这一步输入putty登录时使用的IP,也就是云主机的IP,输入完成后回车。

当到这个问题的时候输入y再回车
Do you want the VPN to support Windows 10 or Linux Desktop clients? (enables compatible ciphers and key exchange, less secure)
输入y,回车,因为我们需要window 10 或者linux desktop的连接。当然,如果没有这个需求,可以直接回车忽略。

接下来一路回车即可。

耐心等一会儿即可完成部署。

完成后会提示:
“\”# 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 #\”\n”,
” “,
” “
将你的xxxxxxxx的内容记下来,配置VPN连接的时候会用到。
恭喜,您的VPN服务器部署成功!

在 configs 目录的 公网IP 目录下会有一些文件,这些文件用来配置客户端。我们可以使用winscp软件将该目录复制到本地。

WinSCP下载地址:
WinSCP

打开winscp,输入IP,用户名:root,密码:(云主机那儿可以看到)
提示密钥相关的时候选yes,双击进入algo,再双击进入configs目录,将右边的IP目录拖到左边本地目录,注意先在左边选择自己知道的常用文件夹位置,比如桌面,下载完成后就可以开始配置客户端了。

配置客户端连接

iOS:
把 ***.mobileconfig 文件通过邮件发给自己,再在iphone上用safari登录自己的邮箱,再点击下载附件。
safari会自动识别mobileconfig文件,提示是否安装,全部点是,提示输入密码的时候输入之前The p12 and SSH keys password for new users is xxxxxxxx
后面的xxxxxxxx内容即可。

打开VPN进行连接,打开设置,点击VPN旁边的开关即可连接。

其它的客户端连接可以参照algo开源项目的文档,里面也有详细描述。

我要打赏,谢谢您的支持!

Advertisements

如何低成本搭建自己的私有VPN”的一个响应

    1. 在vultr中部署server应该是大同小异的,加一台服务器的操作如果在vultr的ui层面发生变化 的话,按新的Ui操作来就行了。不过这种操作应该变化不大的,不太明白第一个图会有什么区别。我只是截了一部分,如果你不明白其它的,能否详细说明一下?

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s