亚马逊AWS-EC2搭建Shadowsocks服务记录

前一段时间我用了三年多的梯子最终倒下了,查找原因是 IP 被列入黑名单,而且超过 48 小时也没有解禁,这是之前从来都没有碰到过的事情。

由于我一直只留有这一个 Shadowsocsk 翻墙账号,因此这个挂掉之后,我就完全陷入防火长城之内了,有很多不便:

1、Google 搜索不可用
墙内可用的搜索引擎找不到任何有关翻墙的有效信息,即使有零星的也打不开页面。
2、找不到提供 Shadowsocks 或者其它翻墙服务的服务商
因为提供和分享翻墙服务在国内是违法行为,因此你不可能通过国内的 IM、邮箱等工具联系到服务商。
3、其它翻墙服务不可用的诸多不便
例如 Chrome 浏览器不能同步数据了;Google photos 不能上传照片了;Google Voice 号码收不到短信验证码了;Telegram 也不能聊天了……

翻墙变成了一项难度颇高的事情,也是一件很有必要的事情。

后来找到了一个零时的 Shadowsocks 账号,虽然非常慢,但至少可以使用 Google 搜索,并且可以打开需要的网页了。

从网络了解到,可以使用亚马逊 AWS-EC2 搭建 Shadowsocks 服务,而新用户是可以有一年的免费使用期限的,反正我这个是备用账号,虽然搭建完成之后网络延迟有点高,但至少应急是完全没有问题的。下面就记录下搭建的过程。


一、创建亚马逊 AWS 账号

这个需要能够完成美元支付的信用卡,一般标有 VISA 或者 Mastercard 标的都可以(包括双标信用卡),银联信用卡虽然可以绑定,但是不能支付。

注册时尽量填写真实的信息,尤其是手机号码,需要验证码完成账号验证。注册需要支付 1 美元费用(据说一年期满后没有超限使用是会退还的)。

注册时认准地址包含「aws.amazon.com」,不要在 .cn 的亚马逊中国区注册了。

这是我注册的免费套餐的大概信息,详细可以在相应板块查看。




二、开始搭建

在开始搭建之前需要选好所在地区,我选择的是日本。你选择的是什么区域,分配到的服务器 IP 地址(翻墙用的服务器 IP 地址)就是什么区域的。

1、在服务中选择计算——EC2。


2、在创建实例中选择「启动实例」。


3、在下面的服务器系统映像列表中勾选「仅免费套餐」,选择一个自己适合的,我选择的是第二个——Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type,包含 Python 软件包。


4、下一步选择实例类型,默认即可。

5、点击右下角的「审核和启动按钮」,这时候需要创建一个密钥对。只有通过这个密钥对才可以与服务器进行连接,所以非常重要。我给的密钥对文件命名为「MyAWS」。

6、大概稍等一到两分钟这个实例就创建好了。创建好之后可以在实例页面看到实例的相关信息,包括后面会用到的关键信息:「公有 DNS」、IPv4 公有 IP(根据前面选择的区域分配)等。在「启动实例」按钮旁边选择「连接」。


7、选择后弹出一个帮助说明页面:


这个页面的说明信息就是根据自己的信息提供的,因此基本上可以直接复制来用。

8、在 Windows 下可以用 OpenSSH 工具连接,而 macOS 系统可以直接使用系统自带的「终端」工具。下面的操作说明以 macOS 系统为例。

1)修改前面的 .pem 密钥对文件的可见性,在终端中输入以下命名:

chmod 400 MyAWS.pem

如果无效可以在命令中包含文件路径,方法是直接在「chmod 400」命令后,敲一个空格,然后把这个 .pem 文件拖到终端窗口中去,于是命令变成了(我在操作时都加入了路径,注意红色部分替换成自己的):

chmod 400 /xxx/MyAWS.pem

2)再用如下命令进行连接:

ssh -i /xxx/MyAWS.pem ec2-user@xxx.ap-northeast-1.compute.amazonaws.com

注意:每次重新启动实例之后,@ 后面的字符串部分都会变更,需要在 AWS 的说明页面进行更改再连接。

下面提示是否继续,输入 yes.

3)获取超级管理员 root 权限:

sudo su

4)安装 Shadowsocks 服务:

sudo yum install -y python-setuptools
sudo easy_install pip
sudo pip install shadowsocks

如果有提示有些服务可以升级,根据页面提供的帮助代码完成服务升级。

5)配置 Shadowsocks 服务:

a)创建 Shadowsocks 目录:

mkdir /etc/shadowsocks

b)创建配置文件(下面以单个用户为例):

sudo vim /etc/shadowsocks/config.json

在打开的配置文件中输入以下信息:

{

    "server": "0.0.0.0",
    "server_port": 443,
    "local_address": "127.0.0.1",
    "local_port": 1080,
    "password": "Zhangsan",
    "timeout": 300,
    "method": "aes-256-cfb",
    "fast_open": false,
    "workers": 1

}

上面的「server_port」为服务端口号,默认 443 就可以了,当然换成其它的也行。「password」一栏设置成自己需要的密码。其它信息均默认。编辑完输入「:wq」回车即保存退出(这里是 VIM 编辑器操作,不熟悉可以搜索查看)。

6)启动 Shadowsocks 服务

sudo /usr/local/bin/ssserver -c /etc/shadowsocks/config.json -d start

注意上面红色部分是 Shadowsocks 服务所在路径,如果报错请根据自己的实际情况调整。

同样停止和重启的命令分别是:

sudo /usr/local/bin/ssserver -c /etc/shadowsocks/config.json -d stop
sudo /usr/local/bin/ssserver -c /etc/shadowsocks/config.json -d restart

7)设置开机启动

sudo vi /etc/rc.local
sudo /usr/local/bin/ssserver -c /etc/shadowsocks.json -d start


三、在亚马逊 AWS-EC2 实例控制面板中设置防火墙规则

把实例信息的显示滑块拖到右边,点击「安全组」下面的超链接。

在打开的页面中一次点击 操作——编辑入站规则:


在弹出的端口信息中,端口范围填入「443」(根据自己的实际情况填写端口号),其它默认:


到此,整个 Shadowsocks 服务端的搭建工作就完成了,我们可以使用 Shadowsocks 客户端工具来翻墙上网了。下面是我打开的 YouTube 播放页面,延迟有一些,但作为备用已经足够了。


注意:每次重新启动实例之后,分配到的公有 IP(目前使用的是 IPv4)都会改变,因此客户端设置需要跟着变更。


Shadowsocks 客户端工具选择可以参照这个页面:
Windows、macOS、iOS、Android值得推荐的软件一览

评论

此博客中的热门博文

如何批量下载Twitter用户的原始图片

使用ADB不root删除小米MIUI系统自带应用

中国大陆正常收取 Gmail 邮件的方法