Osheep

时光不回头,当下最重要。

AWS EC2打造自己的省钱VPN

前言

一直都是自己在AWS上架设shadowsocks服务器,速度有保障。EC2在第一年申请的时候基本是免费的,所有AWS上的EC2实例都是24小时开着的。到了第二年的EC2会按照0.025USD/小时收费(这是东京区的收费标准,其它区收费会有点不一样)。算下来如果不停机的话一个月要22USD左右,有点小贵。再者我这个VPN都是在家里自用的,也就是只有晚上才用,白天的时候基本就是空着的。理想的状态是,想用的时候打开EC2的实例,不用的时候关掉。但是每次开关EC2实例都需要登录到AWS控制台,很麻烦。再者,EC2实例每次启动IP地址都会变动,意味着shadowsocks客户端的设置也要每次跟着改,光是这个就够烦的了。为了省时省力,所以决心用AWS CLI结合GO语言,写一个简单的程序能够方便地启动和终止VPN和shadowsocks客户端,不用每次都手动改设置。
基本功能列举如下:

  • 可以在本机启动和停止EC2实例
  • 可以自动获取当前的EC2实例IP地址
  • 获取IP地址之后自动将shadowsocks客户端连接到服务端

设置AWS

创建实例

AWS的设置很简单,首先创建一个AWS的帐号,然后创建一个EC2的t2.nano的实例。t2.micro首年是免费的,所以如果是新用户的话,可以直接使用t2.micro的实例。t2.nano和t2.micro的区别就是内存,micro是1GB而nano是500MB。对于我一个人使用而言,nano足以。
AWS的实例有三种交费方式:按小时,按年以及竞标。具体的区别和收费方式可以查看官方的文档。本文的目的是针对按小时计费这种方式。按小时计费的计费区间是从实例开始运行一直到实例终结或者停止。本文的目的就是提供一种命令行工具可以简单地在本地终端控制AWS实例的开始和停止,以此达到省费用的目的。
创建实例的时候会选择操作系统,这里选择AWS支持的ubuntu的最新版就可以了。

创建security group

另外还需要创建一个security group,在security group里面需要对inbound条件进行设置。默认的只开启了HTTP协议的80端口。为了能访问shadowsocks服务,需要把TCP的8388端口打开(8388是shadowsocks服务的默认端口,如果你用的不是默认端口,这里也要做相应的修改)。

安装shadowsocks服务端

大概来讲先安装pip,然后再安装shadowsocks。执行以下命令即可:

apt-get install python-pip
pip install shadowsocks

设置开机启动

修改/etc/init.d/rc.local这个文件,在文件的最末加入下面代码:

sudo ssserver -k "your-password" -d start //把your-password替换成你自己的密码

这样简单设置一下,在EC2实例启动的时候,就会自动启动shadowsocks服务端程序。

AWS CLI

安装和配置AWS CLI

AWS CLI是一套用来在本地控制AWS实例的命令行工具。安装方法有很多种,这里不详说。可访问github主面获取更多的安装信息。访问这里获取更多的配置信息。

AWS CLI控制服务器

主要用到三个命令:

aws ec2 start-instances --instance-id
aws ec2 stop-instances --instance-id
aws ec2 describe-instances --instance-id

安装shadowsocks客户端

和服务端一样的安装方法,只是不需要设置开机启动。

使用auto-vpn工具

auto-vpn工具可以在github拿到。需要根据README的指示自己编译一下。把编译出来的二进制文件放到/usr/local/bin目录下,就可以直接在终端里面运行了。
只需要在终端里面输入一行命令auto-vpn start,就可以将布置了shadowsocks服务端的EC2实例运行起来,并且在本地启动shadowsocks的服务端。在使用完毕之后输入auto-vpn stop就可以停止EC2实例并且关闭shadowsocks客户端。如果想要查看EC2实例的当前状态可以输入auto-vpn status命令。

点赞