科学上网的终极姿势,在Vultr VPS上搭建Shadowsocks
作为一个离开Google生活就无法自理的人类,我曾经发帖、提问、翻遍各种网站,四处寻找靠谱的科学上网利器。确实也找到过一些能满足当下需求的产品,但是不久后,就被封的被封、跑路的跑路了。
而且这些服务通常价格不低,稳定性也差强人意。这时候我想,反正都是通过海外服务器来提供建服务的,为什么不干脆自己来搭呢?既能独享带宽,又安心可控,而且选取合适的提供商的话,价格也很平易近人。
果然,搭建完以后,网速起飞了😄。下图是完成后观看YouTube 4K视频的截图。
所以,如果你和我一样不满足那些服务,又有耐心的话,这里有一份详细而对小白友好的折腾指南。事先说明,如果你希望不花钱就能用上优质的服务──醒醒,别做梦了,免费和优质从来不可能划上等号。
1 一些背景和原理
因为整个折腾过程对没有技术背景的人来说,还是略显复杂的,所以有必要先粗浅地介绍一下所涉及的概念和原理。如果不感兴趣可以跳过第一部分,直接看操作步骤。
1.1 什么是Shadowsocks
Shadowsocks(ss)是由Clowwindy开发的一款软件,其作用本来是加密传输资料。当然,也正因为它加密传输资料的特性,使得GFW没法将由它传输的资料和其他普通资料区分开来(上图),也就不能干扰我们访问那些「不存在」的网站了。
但是时至今日,Shadowsocks的安全性被发现是存在缺陷的,其IP和端口可以被嗅探到。因而,有了基于它但增加了混淆能力的ShadowsocksR项目、Simple-obfs插件,以及v2ray项目等。
它们本质上,都是依托墙外服务器的网络代理软件。ssR和官方版ss均已不再更新,目前还在更新的只有shadowsocks-libev,可以说是最轻量的ss版本,也是本文推荐安装使用的版本。
1.2 什么是VPS和Vultr
VPS(Virtual private server)译作虚拟专用伺服器。你可以把它简单地理解为一台在远端的强劲电脑。当你租用了它以后,可以给它安装操作系统、软件,并通过一些工具连接和远程操控它。
Vultr是一家VPS服务器提供商,有美国、亚洲、欧洲等多地的VPS。它家的服务器以性价比高闻名,按时间计费,最低的资费为每月$2.5。
比Vultr价格更低的服务商也有许多,最知名的莫过于「搬瓦工」,和V家差不多的配置只要$19.9每年。不过后者过于出名,据说超售严重,实测夜间速度足以让人痛哭流涕。
1.3 什么是Linux和SSH
Linux是免费开源的操作系统,大概被世界上过半服务器所采用。有大量优秀的开源软件可以安装,上述Shadowsocks就是其一。你可以通过命令行来直接给Linux操作系统「下命令」,比如 $ cd ~/Desktop
就是进入你根目录下的 Desktop
文件夹。
而SSH是一种网络协议,作为每一台Linux电脑的标准配置,用于计算机之间的加密登录。当你为租用的VPS安装Linux系统后,只要借助一些工具,就可以用SSH在你自己的Mac/PC电脑上远程登录该VPS了。
2 购买和连接VPS
首先,访问Vultr.com注册帐号,网站目前还没有被墙,访问速度不错。
2.1 注册Vultr
Vultr官网定期会有一些促销活动,可以留意。另外,如果使用我的推荐链接注册,激活后可以获赠$50试用金,有效期两个月。
换句话说,注册后两个月内可以免费使用5个最低配置的VPS。可以趁这段时间,把不同国家的节点试个遍,不过到期后记着删除多余的服务器。
2.2 部署VPS
注册完成后,在左边选择“Servers”标签,点击右边的加号部署新的服务器。
选择一个你想要的节点。推荐东京和洛杉矶,速度较快,不过这也受运营商网络、你的地理位置影响,如果有试用金可以多建几个自行对比。
为VPS选择安装系统。这里因为安装脚本限制的原因,请选择CentOS 6+,Debian 7+,Ubuntu 12+的系统,具体哪个可以随自己喜欢。下面的教程以 Ubuntu 18.10 为例。
根据需求选择套餐。只供个人科学上网用的话,$5绰绰有余(部分节点会有限时2.5刀套餐)。
剩下都可以使用默认值。最后一项你可以自定义服务器的名字和标签,以方便区分。
另外,上图第6步中,SSH Keys的作用是,可以让你登录VPS时不用每次手动输密码。若只将其用作Shadowsocks服务器,仅需要在配置时登录一次,可以完全忽略它。如果要同时作他用,可参考此文生成并添加SSH Key。
等待系统安装完成。当显示“Running”时,就表示部署已完成。之后你可以随时停用、重启或销毁它。
2.3 连接VPS
如果你使用的是PC,连接VPS需要借助一些工具,比如Putty。你可以参考这篇百度经验完成安装,安装完成后步骤与下文Mac一致。
Mac只要打开「终端」应用即可开始使用SSH连接VPS。你的「终端」界面可能和下图略有差别,但是差不远──都有一个闪烁的光标,前面会有一个 $
符号。
首先,在Vultr上你刚部署的服务器右边点“Manage”,找到服务器的IP地址(标黄部分)和密码。
在「终端」或Putty等应用中,输入下面的命令并回车。注意把 <host>
替换成你服务器的IP地址。
ssh root@<host>
接下来屏幕上会出现一连串提示,意为无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?直接输入yes并回车。
然后输入密码,也就是把服务器状态页中密码那块复制一下,再⌘ + v
贴过来。这里不管是输入还是粘贴,屏幕上都不会显示字符,所以贴完后也是看不到字符的,回车就行。
当出现上图那串 [root@vultr ~]#
时,说明已成功登录。
3 部署Shadowsocks
Shadowsocks需要同时具备客户端和服务器端,所以它的安装也需要分两步。
3.1 部署Shadowsocks服务器端
这里使用@秋水逸冰的一键安装脚本,几乎不需要多余的操作,只需根据提示做选择即可。
首先输入以下3行命令,每次输入一行、回车,等待屏幕上的操作完成后再输入下一条。
wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log
最后一步输完,你应该会看到下图中内容──是要你选择需要安装的Shadowsocks版本。这里选择4)shadowsocks-libev,因为正如上文所说,这是目前唯一在持续更新且最为轻量的版本。
选好输入回车后,会让你输入Shadowsocks的密码。
然后选择一个端口,输入1-65535间的任意数字都行。
之后可以选择加密方式,默认是aes-256-gcm。如果没有特殊偏好,保持默认即可。
之后会提示你是否需要安装simple-obfs。这是ss的一个插件工具,可以起到混淆的作用,防止IP和端口被嗅探到,建议选 y
安装。
如果上一步选择了 y
,这里可以选择一种混淆方式。通常 tls
要比 http
的混淆效果更好,所以选 tls
。
之后所有的配置就完成了,按任意键开始部署Shadowsocks-libev。这时你什么都不用做,只需要耐心地等它运行完就好。
结束后就会看到你所部署的Shadowsocks的配置信息。
记住红色的内容,也就是服务器IP、服务器ss端口、你设的密码、混淆方式和加密方式。
3.2 检查和配置Shadowsocks
安装完成以后,Shadowsocks的服务器端就已经配置完了,你可以输入以下命令检查是否已经开始运行。
/etc/init.d/shadowsocks-libev status
如果出现类似 Shadowsocks-libev is running...
的字样,说明已经开始正常运行了。
这时你已经可以在自己的任意设备上进行登录使用了。如果你要修改ss的配置,或者忘了当初自己设置的密码和端口,可以用以下命令来打开配置文件。
nano /etc/shadowsocks-libev/config.json
意为用 nano
这个编辑器打开 config.json
这个配置文件。你的「终端」会刷新一下,出现下图。
如果某天你的ss突然无法使用了,很可能就是端口被封了。这时你可以直接在这里,将端口修改为1-65535间任意其他数字。编辑完成后,按 Ctrl + X
,再输入 Y
并回车确认退出。
需注意的是,如果你更新了配置文件,得重启 ss 才能生效。重启命令如下:
/etc/init.d/shadowsocks-libev restart
如需添加多端口或多用户——很遗憾,shadowsocks-libev无法通过简单的修改配置文件来实现。不过,作者另外开发了一个ss-manager,来管理和开启多端口,感兴趣的话可以参考这篇教程。
另外,有些系统会默认开启防火墙,不开放上述我们设好的端口,这样的话无法连接Shadowsocks服务器,就无法代理了。这时候需要开启允许端口的外部访问,下面还是以Ubuntu为例:
1)查看端口开放情况,如果只看到了22端口,说明其他端口都没有开放
sudo ufw status
2)开启某个端口,比如这边以7832为例
sudo ufw allow 7832
3)重启防火墙
sudo ufw reload
3.3 安装Shadowsocks客户端
相比服务器端的安装,客户端的安装就简单了许多。首先,在这个页面找到并下载自己操作系统对应的客户端。
打开客户端,在「服务器设定」里新增服务器。然后依次填入服务器IP、服务器端口、你设的密码和加密方式。
此处如果之前有安装simple-obfs,需在插件一栏填写 obfs-local
,插件选项填写 obfs=tls
或 obfs=http
(视乎你选择的混淆方式)。
然后启用代理,就可以实现科学上网了。
4 开启BBR
完成上述步骤后,使用过程中可能会发现连接速度有时不太令人满意。这就是加速工具们发挥功能的时候了。常用的加速工具有「锐速」、TCP BBR、kcptun,等等。原理虽各不相同,但都是通过一些技术手段,来实现连接和传输速度的提升。
4.1 什么是BBR
TCP BBR是Google于2016年发布的,一种避免网络拥塞的算法。目的是要尽量跑满带宽, 并且尽可能避免排队的情况。
实际使用下来,BBR的速度提升效果并不比「锐速」(据说已倒闭)、kcptun(多倍发包耗流量)等差。而且BBR已植入Linux 4.9+版本的内核中,服务器开启后就能有显著的效果提升。
4.2 安装BBR
和 2.3 中的步骤一样,首先需要使用SSH登录VPS。
ssh root@<host>
这里依然使用@秋水逸冰的一键安装脚本,输入以下命令。
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
按任意键开始安装,安装需要一段时间,等待一会即可。
安装完成后,脚本会提示需要重启VPS,输入 y
并回车后重启。
重新使用SSH登录VPS,这时BBR应该已经开启了。你可以使用以下两行命令验证一下。
uname -r
lsmod | grep bbr
如果输出的内核版本为4.9以上版本,且返回值有 tcp_bbr
模块的话,说明bbr已启动。
至此,整个搭建过程就大功告成了!接下来,尽情地享受自由的网络吧😄
5 一些也许对你有用的教程
在客户端的代理设置上,还有些更强大和个性化的选择,你可以参考下文中的教程自行探索。
5.1 关于浏览器
依然记得自己使用「红杏」的畅快体验──哪个网站不能访问了,按下图标添加到规则列表中,就可以「科学」地访问了。这种无缝的体验,靠Shadowsocks加另一款Chrome扩展SwitchyOmega也能实现,这里是使用教程。
5.2 关于桌面应用
部署Shadowsocks完成后,浏览器就能实现科学上网了,但是像Dropbox等部分桌面应用的流量,还不能由Shadowsocks来代理。要实现桌面应用的代理,需要再借助其他应用,比如Proxifier、Surge for Mac等。
5.2 关于手机
安卓手机只需要下载安装Shadowsocks安卓版,并与桌面版一样,填入服务器IP、端口、密码和加密方式,就可以设置全局或分应用代理。如果要实现复杂PAC规则(自定义哪些域名走代理、哪些不走)和代理组的话,可以试试「Android版Surge」——Surfboard。
iOS则可以通过类Surge的App实现PAC规则下的自动翻墙。
Surge目前定价328元,另有Mac版(另外收费)。作为一款兼具「科学上网」功能的网络开发调试利器,它完全值这个价。觉得太贵的话,可以使用相对便宜的Wingy或者Potatso。