Amazon EC2 + Shadowsocks 翻墙达成

3006190尽管前些日子让Goagent暂时复活,担起翻墙大任。但其仍旧表现不稳定,访问gmail、google日历等服务时的体验,让家中某人时常抱怨。于是开始研究新方法,仍旧未使用VPN,而是通过Amazon EC2 + Shadowsocks的方式,实现了稳定快速好用的“科学上网”。我是用的Macbook Pro,OS 10.10.3。

amazon ec2

Amazon EC2= 亚马逊弹性计算云。早听说Amazon是良心企业,今天才终于用上。EC2只是AWS一年期免费套餐中的一种服务,30G的SSD存储空间和每月15G的流量。需要的赶紧注册并启用,需要信用卡信息。

  1. 创建免费AWS账号,选择EC2服务(还有各种神奇的服务啊,看不懂就先绕行了)。
  2. 创建一个“实例”(image),其实是开了个新的虚拟服务器。有一大堆免费的操作系统可选,经实践,选Ubuntu是可以用于shadowsocks服务的(应该还有其他选择)。实例的设置都按默认就可以,唯一注意的,在安全组(Security group)设置中加一条规则,打开TCP的端口8989(跟后面shadowsocks设置相一致)。——此处对于入站ip的设置,没有固定ip的人恐怕只好先设成对所有ip开放?需要请教有经验的人这里如何设置。
  3. 设置完成并启动实例后,中间有一步需要下载密钥。下载pem文件后,建议放在”系统磁盘-用户-你的用户名”这个目录里,也就是启动“终端”后默认的那个目录下,之后连接会比较便利。
  4. 在浏览器中回到EC2的控制面板,不出意外你将看到这个实例的状态为亮着绿灯的running。点击上方的“连接”,将弹出一个窗口:
    2015-05-19 12.52.06
  5. 我选择用ssh客户端连接,但实在没找到好用的客户端,最后还是用系统自带的“终端”程序,嗯,能用就好。此间,参照了若干前人经验,主要是这篇,然后磕磕碰碰不求甚解地最终实现了……简单归纳下:

5.1 运行终端程序,(可以先敲 ls,回车如果能看到你的密钥文件,就确定该文件就在默认目录里,否则把文件移动过来吧),输入命令(请换成你实际的密钥文件名,以下同):

chmod 400 你密钥的文件名.pem

5.2 从刚刚的Amazon窗口里拷贝这一段,贴在终端程序的命令行里(如果你找到了直接拷贝粘贴就可以,形式如下):

ssh -i 你密钥的文件名.pem ubuntu@你实例的公有ip

5.3 连上了吧?依次运行如下命令:
5.3.1 远程下载脚本:

wget –no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh

5.3.2 变为可执行文件:

chmod +x shadowsocks.sh

5.3.3 运行脚本,安装并启动shadowsocks:

./shadowsocks.sh 2>&1 | tee shadowsocks.log

(如果以上命令无效并提示该脚本没有在root权限运行的英文,请在该命令行最开头加上sudo并空格,再试一次。会让你输入密码,如果未修改过默认是脚本里的密码teddysun.com)

  1. 如果顺利的话,shadowsocks应该已经在你的亚马逊虚拟云服务器上运行了。运行如下命令可以检查其状态:

/etc/init.d/shadowsocks status

  1. 这里下载Mac OSX的客户端。更多的安装说明和下载选择,见使用说明
  2. 安装该客户端并启动,它的图标会出现在屏幕最上端。服务器的设定按照终端程序里刚安装完shadowsocks的提示来填写:

Congratulations, shadowsocks install completed!
Your Server IP:你实例的公有ip
Your Server Port:8989
Your Password:没改过的话就是teddysun.com
Your Local IP:127.0.0.1
Your Local Port:1080
Your Encryption Method:aes-256-cfb

  1. 点按屏幕上端的程序图标,确定你的AWS服务器已连接(若连接前面有个勾)。Shadowsocks 会自动设置为全局 PAC 代理,Chrome、Safari、Twitter 都可以正常使用了。如果你开启了其它翻墙工具,请先将它们关闭。
  2. 如果你不想任何网站都通过代理,而是让程序智能地选择墙内网站的直接访问、墙外网站自动代理的话——菜单栏图标里点“自动代理模式”。并配合Chrome 扩展程序 SwitchySharp使用,请把它的模式设置为「使用系统代理设置」。

结果:墙内网站会不通过代理直接连接(访问ip138.com,显示本机ip仍然是北京联通的),墙外的实验了Gmail,google搜索,google日历,facebook,twitter,youtube,速度都很快!而且迄今基本没出现连接障碍。

后续:1. 再长期观察其稳定可靠性;2. 有空再来研究手机端的使用方法;3. 搞清Amazon EC2的安全组入站ip的规则设定问题。

update 2016/01:
半年多的运行,事实证明,非常方便、可靠、稳定!观看youtube视频基本无障碍。另,可以使用dropbox啦,只需要在dropbox的设置里,把网络代理设为socks5,127.0.0.1,1080 (和前面的服务器设定一致),shadowsocks保持在自动代理模式,就可以用了。

参考文献:
AWS教程——AWS入门

Shadowsocks Python版一键安装脚本

Shadowsocks使用说明

Shadowsocks for OSX 帮助

用Amazon EC2一键配置shadowsocks服务器

翻墙七种武器之霸王枪:Shadowsocks



无觅相关文章插件,快速提升流量

Comments 5

  1. Nathan 说 (2015-05-19, 16:49):

    怎么能得到一个ip?

    直接跟贴回复

    Nathan 说 (2015-05-19, 16:52 ):

    搞定了

    直接跟贴回复

  2. Nathan 说 (2015-05-19, 18:10):

    win7下有没有教程?

    直接跟贴回复

    Oh My Media 说 (2015-05-19, 18:26 ):

    你看看github上的使用说明,有windows客户端的

    直接跟贴回复

    Nathan 说 (2015-05-20, 19:51 ):

    彻底放弃,无论 MAC/WIN,估计门槛就是在安全那

    直接跟贴回复

    Oh My Media 说 (2015-05-20, 22:19 ):

    可惜,难道是我手气较好?成功之后迄今还用的不错。速度也快。

    关于安全组,一个是默认的ssh连接,这个我开放了所有ip,端口是默认的22吧;另外新增一条规则,是TCP连接,端口8989,ip我也开放的所有。你也是如此设置的吗?

  3. kanadekurumi 说 (2016-08-23, 17:56):

    已经到5.3.3 运行脚本

    但是登陆google显示
    504 Connect to http://www.google.com.hk:80 failed: SOCKS protocol error

    The following error occurred while trying to access http://www.google.com.hk/search?q=Amazon+EC2%E7%A7%98%E9%92%A5%E5%AF%B9%E6%80%8E%E4%B9%88%E5%AF%BC%E5%87%BA:

    504 Connect to http://www.google.com.hk:80 failed: SOCKS protocol error

    直接跟贴回复

  4. kuyus 说 (2016-10-20, 10:16):

    路过~混个脸熟。

    直接跟贴回复

  5. Hadsital 说 (2017-02-16, 08:46):

    引用秋水逸冰的脚本 不打算标注一下吗!!?

    直接跟贴回复

Trackbacks & Pingbacks 2

  1. From 使用AWS搭建SHADOWSOCKS服务 | Goking Headline on 2015-11-20 at 10:58

    […] 部分引用:http://ohmymedia.com/2015/05/19/1621/ […]

  2. From Configure EC2 for Shadowsocks | Play My Way on 2016-02-22 at 12:28

    […] [2] AMAZON EC2 + SHADOWSOCKS 翻墙达成 […]

Post a Comment

“高调再高,苟能律己,慎勿律人,高亦无害。低调再低,不逾底线,若能持守,低又何妨。” ——秦晖
欢迎留言,不论长短,但请尽量清楚地表达你的观点,谢谢。另,留言中链接超过两条或被程序自动判为垃圾信息。