近几年国内互联网“整风运动”愈演愈烈,各种翻墙服务都相继倒下,走丢的国外网站和服务也一个接一个,好在公司可以随意访问google,而回到家里,就没法用了,因此,为了科学上网,迫切需要有新的梯子,去看看外面的世界。俗话说,授人以鱼不如授人以渔,与其找梯子,不如自己建梯子。国外的vps给我们提供了一个理想的建梯子环境。本文使用亚马逊的 EC2 vps,使用著名的 shadowsocks 来自建一个梯子。

申请亚马逊 EC2

之前用的是阿里云,但机房在国内,还是受到监管,没法搭建梯子,最近在亚马逊 AWS 上,开了一台云主机,新用户,免费使用1年,想着不用白不用。申请过程还是比较容易的,跟着步骤来,中间有两个地方可能稍微有点麻烦,一个是绑定信用卡,要准确填写信用卡的到期时间,不然验证会失败,然后就是在验证过程中,会给你打电话,让你按照电话提示,在手机上输入屏幕上的验证码,我接到电话时,电话里悄无声息,啥都没听到,不过还是把屏幕上的验证码输入了,然后就通过了,神奇。。。

申请成功后,就可以像阿里云那样使用了,需要注意的是,阿里云和亚马逊对于云主机的安全非常看重,因此有安全组的概念,防止用户的云主机被不法分子利用,沦为肉鸡。初始状态下,云主机除了22端口开放供SSH登录,其他端口都是不开的,当时在阿里云主机上 启用HTTPS 服务时,就因为没开放指定端口,导致不成功。所以在亚马逊云的安全组配置中,我有了提防,然并卵,还是躺枪了。刚开始配置时,在安全组的页面上配置,死活没生效,后来看一篇文章,才知道,需要在实例面板,拖到最右边,有个安全组选择,只有这个安全组才是生效的,如下图,坑爹啊。。。根据选择的安全组配置下端口,比如下面要用的8388,保持,然后就OK了。在本地电脑上,尝试可否通过telnet your_ip port连到vps的指定端口。
安全组配置

使用 shadowsocks

vps 准备工作做好后,就可以用 shadowsocks 搭建梯子工具了。首先要明白 shadowsocks 的工作原理,简单的说,shadowsocks 分为客户端和服务端,客户端装在你的电脑上,服务端装在远程 vps 上。shadowsocks 客户端会把你发出去的敏感的数据包,做一个加密,然后发到你国外的 vps 上,由于已经加密,墙不知道你发出去的是什么数据,也就没法封了,国外的 vps 装有 shadowsocks 服务端程序,它接收到你发的数据,解密,然后去请求指定网站,拿到响应,再加密,传给你的客户端,解密后,你就能看到想要的内容了。

服务端配置

首先在 vps 上装服务端程序,有 Python 基础的话,很简单,先装好Python的pip包管理器,如果是 ubuntu,可以使用下面命令安装。

1
2
sudo apt-get upgrade
sudo apt-get install python-pip

装好pip后,再来安装 shadowsocks,很简单,也一条命令

1
pip install shadowsocks

没报错的话,说明安装成功,然后可以开始准备配置文件了,用任意编辑器,写一个名为 config.json 文件,文件内容如下:

1
2
3
4
5
6
7
8
9
10
{
"server":"0.0.0.0",
"server_port":8388,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"password",
"timeout":600,
"method":"aes-256-cfb",
"fast_open":false
}

退出保存,然后就可以启动 shadowsocks 服务了

1
sudo ssserver -c /path/to/config.json -d start

其中-c 参数后面接的是你的配置文件所在路径

客户端配置

服务端准备好后,再准备客户端,在 github 上下载对应的 shadowsocks 安装,win,mac,andriod都有,iOS在app store 下wingy+,8块钱,各平台配置大同小异,如在 mac 下,配置服务器如下图所示
shadowsocks配置

模式选择自动代理模式,配置好后,客户端的工作也基本做完了,但还别急着打开浏览器访问墙外的网站,因为浏览器出去的流量,还没有经过客户端的 shadowsocks 加密,需要下个chrome插件 : switchyOmega,填写代理规则,具体配置,可以看这篇文章,非常详细。打不开的朋友也没关系,我导出了一份配置,一键导入,非常方便,具体操作步骤:在下载完插件后,浏览器启用插件,然后点插件图标,进入设置菜单,在插件的设置页,选择导入导出子菜单,在在线恢复输入框中,输入我的备份地址:https://xujimmy.com/OmegaOptions.bak ,如下图
恢复设置
恢复完后,点击插件图标,选择自动切换模式,插件图标会变绿,完成以上步骤,应该就可以愉快科学上网了~

开启BBR,让网速更快

虽然上面可以正常上网,但速度还是让人捉急,我试过在youtube上看视频,卡成 ppt,下面开启 BBR,优化下网速,该方法适用范围:

  • 系统:CentOS 6+,Debian 7+,Ubuntu 12+
  • vps虚拟架构: KVM、Xen、VMware
  • 内存:>128M

BBR是Google开源的一个TCP网络拥塞控制算法,其主要解决两个问题:

  1. 充分利用宽带
  2. 降低网络延迟

根据实地测试,在部署了最新版内核并开启了 TCP BBR 的机器上,网速甚至可以提升好几个数量级。这里不打算说该算法的原理,有兴趣的可以看知乎上这个回答。这里主要记录下,怎么使用这个黑魔法。其实很简单,已经有大神给我们写了一键开启脚本,以root用户,运行命令如下:

1
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

这个命令先升级你的内核版本,然后开启BBR。运行完后,会提示重启机器,重启完后,登录,看看是否开启BBR,运行以下命令

1
sysctl net.ipv4.tcp_available_congestion_control

1
sysctl net.ipv4.tcp_congestion_control
1
lsmod | grep bbr

如果以上几个命令返回的结果里,都有bbr,则说明开启成功,再访问下youtube,看看网速是不是像施了魔法样,一点都不卡呢?

小结

自Google提出云计算以来,该领域已经得到长足发展,云计算,从一个概念,到现在各大厂商开始涉足,并出现丰富的产品线,让广大的用户,不用自己购买昂贵的物理主机服务器,通过按需付费的方式购买虚拟主机(vps),即可快速使用,确实是一种重大创新。作为一个今年才开始使用云主机的码农来说,确实太晚了,目前从事的工作,也是和云计算相关。从使用云主机到现在,我已经深深喜欢上了这种产品,一度到处找便宜的 vps。目前国内比较著名,有口碑的就是阿里云和腾讯云。国外比较知名的 vps 厂商有vultr,bandwagon,linode,aws等。作为学计算机码农和学生,都建议尝试使用下 vps。

参考