墙里面的世界还是有点闷的,偶尔还是需要出去透透气的。虽说 vpn 网上也是一搜一大把,但是限制很多,稳定性也不容乐观,不如自己动手,丰衣足食。
Amazon Web Services,强大的亚马逊云服务,首年免费,功能齐全,值得拥有。
# AWS 篇
首先你得有一个 Amazon 账号,要是没有就先注册一个吧,戳我
填写相关信息即可
需要注意的只有一点,需要绑定信用卡,扣款一美元,然后电话验证,注册完毕。
# 创建实例
完成 Amazon 注册后,会自动进入控制台(初次注册的用户可能需要等待一小段时间,等系统初始化完毕),选择我们需要的 EC2 实例即可。此时需要注意的是,右上角可以选择虚拟机实例所在的位置,国内用户可以选择东京的节点,接入速度很快。确认了地区后,后面创建的实例都是该地区的。
点击左上角的 EC2 进入 EC2 控制面板,面板内会陈列你当前的实例资源,安全组资源,密钥对资源等。点击启动实例,创建一个新实例。
选择 AMI,也就是为实例选择操作系统的镜像,AWS 提供的镜像很多,横跨 Linux / Freebsd / Debian / SUSE / Windows 等多个发行版本。我选择了免费套餐中的 Ubuntu 14.04 LTS。
选择实例类型,AWS 提供多种实例类型以应对不同类型 / 负载的业务,现阶段还是选择了免费套餐的 t2.micro。
配置实例基本信息,没特殊要求的话默认即可。
添加存储,免费套餐可支配的为 30GB,默认分配大小为 8GB。
配置实例标签,主要用来做集群的资源管理,暂时用不到。
配置安全组,这步比较重要。之后我们需要通过 ssh 连接这个实例,所以 22 端口需要打开,可以选择针对某个 IP 开放,默认 0.0.0.0 为对全网开放。另外后面的 Shadowsocks 也需要一个端口,我使用 8088,这个端口也需要对 (IP / 全网) 开放。
审核并启动实例。几分钟后,可以在实例列表中即可见到我们的新实例,状态为 running。至此,一个用于 VPN 的 EC2 实例创建完成。
# 访问实例
访问实例,我们需要一组密码对。我们可以选择创建密钥对或导入密钥对,我们使用创建密钥对来创建一组新的密钥。 输入密钥对的名字,AWS 会生成公钥文件(xxx.pem)并提供下载,保存到一个安全的位置。
密钥必须不公开可见,SSH 才能工作。如果需要,请使用此命令:
chmod 400 xxx.pem |
访问步骤如下:
1. 打开 SSH 客户端。
2. 查找您的私有密钥文件(xxx.pem),向导会自动检测您用于启动实例的密钥。
3. 通过其公有 IP 连接到您的实例:
如公有 IP:54.199.201.116,则:
ssh -i "xxx.pem" ubuntu@54.199.201.116 |
关于用户名,不同的 AMI,默认用户名也不相同,Ubuntu 默认用户名为 ubuntu。其它 AMI 的默认用户名可以在官方连接文档中找到。
# Shadowsocks 篇
Shadowsocks 是一个轻量级的 socket5 代理,用户可以选择工业级的加密算法来保护网络中传输的流量不被污染。开源且全平台支持。
# 服务端
Shadowsocks 的服务端有很多个版本的实现,基于 Python / C / Go / C++ 等多种语言。我选用了 Python 的实现,基于 pip 安装和管理都很方便。如果你想要选择其它版本,可以在这里找到。
登录实例后,首先安装 pip,之后安装 shadowsocks。
sudo apt-get install pip | |
sudo pip install shadowsocks |
AWS 速度非常快,基本上几秒钟就安装完毕了。
服务端安装完成后,我们可以通过命令行来启动 server 端程序。
# 监听 8088 端口 密码为 password 加密方式为 aes-256-cfb | |
# 可以追加 -d start 使 server 作为守护进程执行 | |
ssserver -p 8088 -k password -m aes-256-cfb |
也可以通过创建配置文件 config.json 来进行配置
{ | |
"server":"server_ip", #EC2 实例的 IP,注意这里我们不能填写公有 IP,需要填写私有 IP 或者 0.0.0.0 | |
"server_port":8088, #server 端监听的端口,需要在 EC2 实例中开放此端口 | |
"local_address": "127.0.0.1", | |
"local_port":1080, | |
"password":"password", #密码 | |
"timeout":300, | |
"method":"aes-256-cfb", #加密方式 | |
"fast_open": false #是否开启 fast open | |
} |
如果想要把 VPN 分享给其它人而不泄露自己的密码,也可以在配置文件中设置多端口 + 多密码的模式,如:
{ | |
"server":"server_ip", #EC2 实例的 IP,注意这里我们不能填写公有 IP,需要填写私有 IP 或者 0.0.0.0 | |
"local_address": "127.0.0.1", | |
"local_port":1080, | |
"port_password": | |
{ | |
"8088”: “password8088”, | |
"8089”: "password8089” | |
} | |
"timeout":300, | |
"method":"aes-256-cfb", #加密方式 | |
"fast_open": false #是否开启 fast open | |
} |
配置完成后,以守护进程的方式开启 / 停止 Shadowsocks
ssserver -c config.json -d start | |
ssserver -c config.json -d stop |
至此,服务端配置完成。
# 客户端
下载 ShadowsocksX 的最新版本,填写 EC2 的公有 IP,密码,即可完成配置。
至此一个免费一年的 vpn 已搭建完毕,enjoy it~