回国VPN搭建:AWS EC2 + Shadowsocks

2018/03/24 VPN

马上回国了想找一个靠谱的VPN都费劲,不如自己搭一个,据说稳定性还不错。这样即使被墙了也可以换服务器地址。记一下大体流程。

新建AWS EC2 实例

首先要有一个AWS的账号,可能需要绑定信用卡。我当时用学生邮箱申请的,绑定的是debit card,也可以正常使用,还有100刀的credit,由于之前的滥用已经只剩28刀。

EC2可以免费用一年,我的这个账号已经用了大半年了,打算先继续用,等到期后新注册一个新号再用一年。这里的免费是指一个月750hours的时间,所以如果想建两个实例一起跑一个月就妥妥超时间了,慎重。

新建一个EC2实例,地点在东京,离国内近且线路稳定。我选了免费的t2.micro,由于只做VPN用,所以性能无所谓。系统选的Ubuntu,比较熟悉。

第三步配置中,IAM Roles新建了一个专门访问此VPN实例的Role,目前看来没什么用,可以略过。

第四步配置中,储存容量写了15G。每个月有30G的免费使用量,其实用不了这么多,但是如果以后想在这里放点东西呢- -

标签配置中,建了一个username: hu_minghao的键值对,是根据教程学的,但是也没发现具体用处。

安全组配置中,暂时设置为All traffic。

设置完毕,启动实例。创建并保存登陆密钥。密钥很重要,是连接服务器的唯一凭证,需要保存在能记得住的地方。

安装Shadowsocks服务端

安装shadowsocks

使用密钥ssh连接到服务器,AWS在实例上点击Connect有详细命令。

任何关于配置和安装Shadowsocks的说明,可以查阅Shadowsocks的项目Wiki

这里选择用pip安装shadowsocks。先进入root权限(以下所有操作都应该在root下执行)

sudo -i

更新apt,安装pip

apt-get update
apt-get install python-pip

使用pip安装shadowsocks

pip install shadowsocks

配置shadowsocks

在etc目录下创建shaodowsocks目录,并创建配置文件config.json

mkdir /etc/shadowsocks
vim /etc/shadowsocks/config.json

配置文件内容为

{
    "server": "0.0.0.0", //填写你的AWS服务器公有IP
    "server_port": 443,
    "local_address": "127.0.0.1",
    "local_port": 1080,
    "password": "password", //填写密钥
    "timeout": 300,
    "method": "aes-256-cfb",
    "fast_open": false,
    "workers": 1
}​

启动shadowsocks

ssserver -c /etc/shadowsocks/config.json -d start​

更改后可以用stop和restart命令停止和重启。服务器用久了有时需要重启,这时shadowsocks服务也需要重启。如果想配置开机自动启动参考这里

安装Shadowsocks客户端

服务端搭建完毕,接下来在各个需要翻墙的设备中下载Shadowsocks客户端应用,下载地址。(下载地址需要翻墙访问。。)

在客户端中添加ssserver服务器,配置页面填写的就是在服务器配置的config里的内容,包括IP,端口号,加密方式,密码等。保存后开启代理即可开始科学上网。

有三种代理模式:

  • 全局代理: 一切请求都通过代理服务器转发
  • GFW代理: 只有在GFW列表中的网站请求通过代理服务器转发
  • 手动代理: 手动设置通过代理服务器转发的请求

一般用GFW模式就可以满足大部分需求。

注意浏览器里的内置代理或插件可能影响功能。

iOS里ss客户端日常被下架,查shadowsocks或wingy随便找一个免费app,能连ss代理就可以使用,我现在用的叫shadowbroken。

我的iPad连上VPN后死活连不上网,什么都刷不出来,不连没事,找不到原因。

FAQ

问题1: 启动shadowsocks报错EVP_CIPHER_CTX_cleanup

解决1: vim openssl.py文件将里面的所有CIPHER_CTX_cleanup改成CIPHER_CTX_reset再重新启动

具体参考https://blog.csdn.net/youshaoduo/article/details/8074519

问题2: Privacy问题

解决2: chmod所有ssserver目录,which ssserver查看根目录

参考

参考教程http://celerysoft.github.io/2016-01-15.html

Shadowsocks官网https://shadowsocks.org/en/index.html

Search

    Table of Contents