1.注册AWS
AWS:https://amazonaws-china.com
常规注册操作。需要注意的是AWS的注册需要使用信用卡。
完成后的界面如下:
点击左上角服务,选择EC2,点击右上角,选择亚太地区(东京)。然后点击启动实例。
选择ubuntu系统,下一步点击审核和启动,启动。
在密钥下拉框选择创建新密钥,名称随意,如myawskey,然后下载密钥对(myawskey.pem)。
2.远程连接VPS
在密钥对文件myawskey.pem
所在目录下打开终端。
终端输入:
$ chmod 400 myawskey.pem
$ ssh -i myawskey.pem ubuntu@yourip
3.在VPS上安装Shadowsocks服务器端
$ sudo -s
$ apt-get update
$ apt-get install python-pip
$ pip install shadowsocks
$ pip install --upgrade pip
通过上面的步骤,我们安装好了shadowsocks服务端,加下来就是启动该服务。
首先建立配置文件
$ cd /etc
$ mkdir shadowsocks
$ cd shadowsocks
$ vim ss.json
在ss.json文件中输入如下内容
{
"server":"0.0.0.0",
"server_port":8888,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"your_password",
"timeout":300,
"method":"aes-256-cfb",
"fast_open":false,
"workers": 1
}
然后保存文件并退出,使用如下命令控制ss服务器端
启动:ssserver -c /etc/shadowsocks/ss.json -d start
停止:ssserver -c /etc/shadowsocks/ss.json -d stop
开启AWS入站端口:在启动实例后,把滚动条滚到最右边,点击安全组下的launch-wizard-1
。
点击操作,编辑入站规则。
点击添加规则,端口为8388,来源为任何,点击保存。
4.本机安装Shadowsocks客户端
下载并安装Shadowsocks。
Mac版:https://github.com/shadowsocks/ShadowsocksX-NG
Windows版:https://github.com/shadowsocks/shadowsocks-windows
Android版:https://github.com/shadowsocks/shadowsocks-android
iOS版:本人使用的是Shadowrocket
在服务器配置配置外网ip,端口号,密码,加密方式即可。
5.开启ipv6功能
通过开启ipv6功能,使用校园网就可以免费上外网而不走流量啦。
a. 登陆AWS控制台,进入VPC控制台,在您的VPC选项卡中选中你EC2实例所绑定的VPC编辑 -> 添加IPv6CIDR,关掉弹出层。 b. 选择子网并选中你的EC2实例对应的子网(亦可给全部子网进行相同操作)并编辑IPv6CIDR -> 添加IPv6CIDR.(IPv6CIDR后两位可以自定义,默认即可),关掉弹出层。 c. 选择路由表,选择路由点编辑 -> 添加其他路由,第一个空填::/0,第二个空选一个网关,默认即可,点击保存。 d. 回到EC2控制台,给EC2实例添加一个IPv6地址。添加IP的地方在操作 -> 联网 -> 管理IP地址里 点一下分配让他自动分配就行。
部分系统需要登陆进去使用DHCP自动获取一下。
dhclient -6
通过上面的步骤,我们的实例已经可以通过ipv6的方式访问了,最后还需要设置一下shadowsocks服务器端。
$ cd /etc/shadowsocks
$ vim ss1.json
在ss.json文件中输入如下内容
{
"server":"your_ipv6_addr",
"server_port":8886,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"your_password",
"timeout":300,
"method":"aes-256-cfb",
"fast_open":false,
"workers": 1
}
然后保存文件并退出,使用如下命令控制ss服务器端
启动:ssserver -c /etc/shadowsocks/ss1.json -d start --pid-file ss1.pid
停止:ssserver -c /etc/shadowsocks/ss1.json -d stop --pid-file ss1.pid
这里因为开启了多个ss进程,要指定一下pid-file,否则会冲突,显示已经启动。(可能是这个原因吧)