/ 狼烟 / VPN in Vultr VPS

VPN in Vultr VPS

2016-08-16 posted in [tech]

AWS的VPS到期了,对于猿来说,无法访问墙外服务如Google简直是工作效率的无形杀手..

于是乎,to keep on with AWS or to try others, that is a question..

在AWS上搭梯子说实话也有点费劲(当然现在已经越来越无脑了..),特别是需求在那里,PC上的shadowsocks和iPhone、iPad上的IPsec,缺一不可..

既然如此,借此机会,正好练练笔的同时也做个备忘,此文应运而生..

如能给同道中人些许帮助,也不胜荣幸~~

引子

不想很俗套地去介绍VPS的选择了,毕竟萝卜白菜各有所爱,AWS、Linode、DigitalOcean,Vultr、BandwagonHost and so on..

综合对比,国外的VPS其实也各有优劣,还有其相关的虚拟化技术也五花八门,kvm、xen、openvz都有涉及,超配也是家常便饭..

引子就简单介绍下如何快速便捷地检测到底是采用了哪种虚拟化技术:

# 在Vultr Vultr - CentOS 7.0 x64上来个示例:

$ sudo yum install virt-what

$ virt-what

kvm

很明显,我的这台Vultr VPS基于kvm。

知乎有很多VPS横向纵向对比的问答,如:

有哪些便宜稳定,速度也不错的Linux VPS 推荐?

有哪些好用的美国 VPS 或者独立主机?

所以在这里我就不再赘述了,我已暂时告别AWS,选择了Vultr..

Shadowsocks

Shadowsocks应该是PC上最多的选择吧,安装简单,使用便捷,在线和离线的PAC可以保证墙内流量和墙外流量互不干扰,而且Windows和Mac的都有支持的客户端(吐槽Mac上的Shadowsocks图标真心影响那一排美观的工具栏图标..)。

IPsec

如果只在PC上有翻墙需求,那么Shadowsocks已经足够好了,况且其实现在很多所谓的翻墙服务厂商也就是基于Shadowsocks去提供服务给用户的。

如果PC之外呢,类似Android、iPhone、iPad等移动设备,因为权限或者APP问题,Shadowsocks无法很好地满足需求,那么再搭配IPsec来使用再好不过了,毕竟将VPS的作用最大化,且不需要再安装其它的APP客户端(因为Android、iOS内置了IPsec客户端,在设置中配一下即可),简直不要太完美..

IPsec的安装和配置远比Shadowsocks复杂,而且换个环境可能配置方式也有很多不同,所以这里我不再详细介绍如何手动安装和配置IPsec服务了。

取而代之,我直接采用了Docker镜像来安装IPsec服务:

# 首先在我的Vultr VPS上安装docker,其它平台或其它Linux发行版自行观摩[官方文档](https://docs.docker.com/engine/installation/)

$ sudo yum install docker

# 启动docker服务:

$ sudo service docker start

# 现成的docker镜像也不少..

$ sudo docker search ipsec
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
hwdsl2/ipsec-vpn-server            VPN server with IPsec/L2TP and Cisco IPsec      15                   [OK]
cpuguy83/ipsec                                                                     6                    [OK]
ikoula/docker-l2tp-ipsec-vpn       Docker L2TP / IPSec VPN Client                  3
fcojean/l2tp-ipsec-vpn-server      A docker l2tp ipsec vpn server with multip...   2                    [OK]
r4ffy/ipsec                        Ipsec Server Docker-Version                     1
0xj9/l2tp-ipsec-vpn                                                                1                    [OK]
lotosbin/docker-ipsec-vpn-server   docker-ipsec-vpn-server                         1                    [OK]
r4ffy/ipsecclient                  Ipsec Client OpenSwan                           1
neter/docker-ipsec-vpn-server      docker-ipsec-vpn-server                         0                    [OK]
jpillora/ipsec-vpn-server          A simple, multi-user IPsec/L2TP and Cisco ...   0                    [OK]
chagridsada/multivpn-ipsec         Multiple vpn IPSec docker images                0
crewjam/ipsec                                                                      0
energy1190/ipsec-tools             ipsec-tools                                     0                    [OK]
free/ipsec                                                                         0
matrixanger/rpi-ipsec              L2TP/IPSec for RaspberryPi and other ARM c...   0
jim3mar/ipsec                                                                      0
shirkevich/docker-ipsec            forked from cpuguy83/docker-ipsec               0
ibotty/ipsec-libreswan             minimal priviliged ipsec container for use...   0                    [OK]
kiwenlau/ipsec                                                                     0
mhoger/ipsec-vpn                                                                   0
ciscolabs/ipsec-cpe                                                                0
jaredmichaelsmith/mds-ipsec                                                        0
plitc/easy_ipsec                   easy_ipsec                                      0                    [OK]
furaoing/ipsec-xl2tpd                                                              0
ciscolabs/ipsec

# 选择STARS最多的镜像,或自行参考[作者Github](https://github.com/hwdsl2/docker-ipsec-vpn-server)

$ sudo docker pull hwdsl2/ipsec-vpn-server

$ sudo mkdir /usr/local/ipsec

# 自行修改环境变量..

$ sudo vim /usr/local/ipsec/ipsec.env

VPN_IPSEC_PSK=<IPsec pre-shared key>
VPN_USER=<VPN Username>
VPN_PASSWORD=<VPN Password>

$ sudo modprobe af_key

# 启动docker镜像

$ docker run --name ipsec-vpn-server --env-file /usr/local/ipsec/ipsec.env -p 500:500/udp -p 4500:4500/udp -v /lib/modules:/lib/modules:ro -d --privileged hwdsl2/ipsec-vpn-server

# 自行审阅docker日志..

$ docker logs ipsec-vpn-server

# 检查docker镜像ipsec服务的运行情况

$ docker exec -it ipsec-vpn-server ipsec status

OK,至此大功告成,VPN in Vultr VPS已经安装成功。

Shadowsocks的客户端配置很简单,IPsec记得需要填写两个密码,如上环境变量的KEY-VALUE,一个是VPN_PASSWORD的值,另一个是VPN_IPSEC_PSK的值,还是比较简单的,就不贴图了..

言而总之,本文推荐docker安装shadowsocks和IPsec,简单可控,统一管理~~

国际惯例:

同学们如有VPN的需求,请参考上述教程,鉴于我目前在用Vultr,贴个邀请码吧,请从以下链接点击注册:

顺带吐槽,Vultr的优惠政策略坑爹,且不注明:

优惠政策只能同时生效一种,如果已经应用过优惠码,则其它优惠不叠加,而且充值的赠送$5也不会再入账,虽然页面上仍有提示赠送..