科学上网的终极姿势:在 Vultr VPS 上搭建 Shadowsocks

2016.12.21 26896 Views 26896 教程 SS

作为一个离开 Google 生活就无法自理的人类,我曾经发帖、提问、翻遍各种网站,四处寻找靠谱的科学上网利器。结果,确实也找到过一些能满足当下需求的产品,但是不久后各种杯具就发生了。

Chrome 扩展红杏 & SSX 服务

(ノ ゚Д゚)ノ == ┻━┻ 这是人民日益增长的物质文化需求同落后的社会生产之间的矛盾啊!

这些服务要么价格不低,要么稳定性太差,还可能随时被查封,实在让人很为难。这时候我想,反正都是通过海外服务器来提供建服务的,为什么不干脆自己来搭呢?结果是,整个人都跟着网速起飞了😄下图是完成后观看 YouTube 4K 视频的截图。

观看 YouTube 4K 视频

所以,如果你和我一样不满足上述那些服务,又不怕麻烦的话,这里有一份详细而对小白友好的折腾指南。事先说明,如果你希望不花钱就能用上优质的服务──醒醒,别做梦了,免费和优质从来不可能划上等号。不过如果共享或建立多账户来出售的话,能赚钱也说不定(误)。

1 一些背景和原理

因为整个折腾过程对没有技术背景的人来说,还是略显复杂的,所以有必要先粗浅地介绍一下所涉及的概念和原理。如果不感兴趣可以跳过第一部分,直接看操作步骤。

1.1 什么是 Shadowsocks

shadowsocks的工作原理

Shadowsocks(ss) 是由 Clowwindy 开发的一款软件,其作用本来是加密传输资料。当然,也正因为它加密传输资料的特性,使得 GFW 没法将由它传输的资料和其他普通资料区分开来(上图),也就不能干扰我们访问那些「不存在」的网站了。

1.2 什么是 VPS 和 Vultr

VPS (Virtual private server) 译作虚拟专用伺服器。你可以把它简单地理解为一台在远端的强劲电脑。当你租用了它以后,可以给它安装操作系统、软件,并通过一些工具连接和远程操控它。

Vultr 是一家 VPS 服务器提供商,有美国、亚洲、欧洲等多地的 VPS。它家的服务器以性价比高闻名,按时间计费,最低的资费为每月 $2.5。

Vultr VPS 定价

比 Vultr 价格更低的服务商也有许多,最知名的莫过于「搬瓦工」,和 V 家差不多的配置只要 $19.9 每年。不过后者过于出名,据说超售严重,实测夜间速度足以让人痛哭流涕。

1.3 什么是 Linux 和 SSH

Linux 是免费开源的操作系统,大概被世界上过半服务器所采用。有大量优秀的开源软件可以安装,上述 Shadowsocks 就是其一。你可以通过命令行来直接给 Linux 操作系统「下命令」,比如 $ cd ~/Desktop 就是进入你根目录下的 Desktop 文件夹。

进入根目录下的 Desktop 文件

而 SSH 是一种网络协议,作为每一台 Linux 电脑的标准配置,用于计算机之间的加密登录。当你为租用的 VPS 安装 Linux 系统后,只要借助一些工具,就可以用 SSH 在你自己的 Mac/PC 电脑上远程登录该 VPS 了。

2 购买和连接 VPS

首先,访问 Vultr.com 注册帐号,网站目前还没有被墙,访问速度不错。

2.1 注册 Vultr

Vultr 官网似乎常年有活动,目前是注册新用户后绑定 VISA 信用卡就送 $50,有效期2个月(活动暂已过期)。

换句话说,注册后两个月内可以免费使用 5 个最低配置的 VPS,简直良心。如果需要,也可以使用上图我的 推荐链接 注册,激活后一个月内有付费行为就可以获赠 $20(活动暂已过期)。

2.2 部署 VPS

注册完成后,在左边选择“Servers”标签,点击右边的加号部署新的服务器。

添加新的服务器

选择一个你想要的节点。推荐东京和洛杉矶,速度快,不过因为使用的人比较多,稳定性可能会受影响。

选择节点

为 VPS 选择安装系统。这里可以随自己喜欢,选择 Windows 以外的任意 Linux 系统。下面的教程以 CentOS 6x64 为例。

选择系统

根据需求选择套餐。只供个人科学上网用的话,$5 绰绰有余(Vultr 已新推出 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 并回车。

登录服务器1

然后输入密码,也就是把服务器状态页中密码那块复制一下,再 ⌘ + v 贴过来。这里不管是输入还是粘贴,屏幕上都不会显示字符,所以贴完后也是看不到字符的,回车就行。

登录服务器2

当出现上图那串 [root@vultr ~]# 时,说明已成功登录。

3 部署 Shadowsocks

Shadowsocks 需要同时具备客户端和服务器端,所以它的部署也需要分两步。

3.1 部署 Shadowsocks 服务器端

这里使用 teddysun 的一键安装脚本。

以下是3条命令,每次输入一行、回车,等待屏幕上的操作完成后再输入下一条。

wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh
chmod +x shadowsocks.sh
./shadowsocks.sh 2>&1 | tee shadowsocks.log

最后一步输完,你应该会看到下图中内容──是要你为 Shadowsocks 服务设置一个个人密码。

设置 ss 密码

输好回车后会让你选择一个端口,输入 1-65535 间的数字都行。

设置 ss 端口

之后可以选择加密方式,这个就看个人喜好了,默认是 aes-256-gcm。

选择加密方式

遵照上图指示,按任意键开始部署 Shadowsocks。这时你什么都不用做,只需要静静地等它运行完就好。结束后就会看到你所部署的 Shadowsocks 的配置信息。

ss 配置信息

记住黄框中的内容,也就是服务器 IP、服务器端口、你设的密码和加密方式。

3.2 TCP Fast Open

实际上只要具备上述四个信息,你就可以在自己的任意设备上进行登录使用了。但是为了更好的连接速度,你还需要多做几步。

首先是打开 TCP Fast Open,输入以下命令,意为用 nano 这个编辑器打开一个文件。

nano /etc/rc.local

你的「终端」会刷新一下,出现下图。

nano 编辑界面

别慌张,它就是个文本编辑器。用方向键把光标移到最末端,粘贴下面这一行内容,然后按 Ctrl + X 退出。

echo 3 > /proc/sys/net/ipv4/tcp_fastopen

输入“Y”并回车确认退出。

nano 退出保存

然后依法炮制,输入:

nano /etc/sysctl.conf

在文末加上下面的内容,保存退出。

net.ipv4.tcp_fastopen = 3

再打开一个 Shadowsocks 配置文件。

nano /etc/shadowsocks.json

把其中 "fast_open" 一项的 false 替换成 true

"fast_open":true

如果你希望添加多用户的话,可以将 "password" 字段如下图修改。其中,"22345":"password1"意为该用户使用 22345 端口、以“password1”为密码连接登录 Shadowsocks。

增加多端口多密码

如果添加了多用户,需要更改防火墙规则,开放刚刚新增的端口。centOS 6 系统开放办法如下。保存退出后,输入以下命令,注意一次输入一行,并把 <newport> 替换为刚添加的端口:

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport <newport> -j ACCEPT
iptables -I INPUT -m state --state NEW -m udp -p udp --dport <newport> -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables restart

最后,输入以下命令重启 Shadowsocks。

/etc/init.d/shadowsocks restart

3.3 安装 Shadowsocks 客户端

相比服务器端的安装,客户端的安装就简单了许多。首先,根据操作系统下载相应的客户端。

打开客户端,在「服务器设定」里新增服务器。然后依次填入服务器 IP、服务器端口、你设的密码和加密方式。

新增服务器

然后启用代理,就可以实现科学上网了。

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>

这里依然使用 @teddysun 的一键安装脚本,输入以下命令。

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

按任意键开始安装,安装需要一段时间,等待一会即可。

一键安装 BBR

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。

重新使用 SSH 登录 VPS,这时 BBR 应该已经开启了。你可以使用以下两行命令验证一下。

uname -r
lsmod | grep bbr

如果输出的内核版本为 4.9 以上版本,且返回值有 tcp_bbr 模块的话,说明 bbr 已启动。

检查 BBR 启动

至此,整个搭建过程就大功告成了!接下来,尽情地享受自由的网络吧😄

5 一些也许对你有用的教程

在客户端的代理设置上,还有些更强大和个性化的选择,你可以参考下文中的教程自行探索。

5.1 关于浏览器

依然记得自己使用「红杏」的畅快体验──哪个网站不能访问了,按下图标添加到规则列表中,就可以「科学」地访问了。这种无缝的体验,靠 Shadowsocks 加另一款 Chrome 扩展 SwitchyOmega 也能实现,这里是使用教程

5.2 关于桌面应用

部署 Shadowsocks 完成后,浏览器就能实现科学上网了,但是像 Dropbox 等部分桌面应用的流量,还不能由 Shadowsocks 来代理。要实现桌面应用的代理,需要再借助其他应用,比如 ProxifierSurge for Mac 等。

5.2 关于手机

安卓手机只需要下载安装 Shadowsocks 安卓版,并与桌面版一样,填入服务器 IP、端口、密码和加密方式,就可以设置全局或分应用代理。但是要实现「真正意义上」的 PAC 规则的话(也就是自定义哪些域名走代理、哪些不走),可以试试目前还在内测中的「Android 版 Surge」——Surfboard

iOS 则可以通过类 Surge 的 App 实现 PAC 规则下的自动翻墙。

Surge 目前定价 328 元,另有 Mac 版(另外收费)。作为一款兼具「科学上网」功能的网络开发调试利器,它完全值这个价。觉得太贵的话,可以使用相对便宜的 Wingy 或者 Potatso,不过二者都没有前者来得稳定好用。

参考文章

sponsor_1809

Comments
Write a Comment
  • monmas reply

    您好,我的加密模式是aes-256-gcm,在ss客户端里没有这个选项,我要怎么更改呢?谢谢

  • monmas reply

    @monmas 我已经改好了 会了 😄

  • jayjay reply

    非常简洁明了,我已经按照指南一步步配置了。中途唯一的不同是我的CentOS缺少nano,我用yum install了一个。其他步骤都是一致的。感谢博主的无私分享。

  • jayjay reply

    另外,我还没有安装锐速,听一些帖子说,锐速现在不能用了?是不是这样呢?

  • jayjay reply

    我用的CentOS 6.9 另外一家的VPS 安装锐速的时候报错:“锐速暂不支持该内核,程序退出.自动安装判断比较严格,你可以到http://www.91yun.org/serverspeeder91yun手动下载安装文件尝试不同版本”,不过91yun.org的网站打不开了。如何解决?谢谢!

  • jayjay reply

    不过 我后来想想还是把锐速给卸载了

  • @jayjay 锐速官方已经不对个人用户开放了,不过还有一些非官方版本可用。另外还有一些 net speeder 之类的 TCP 加速工具能用

  • jayjay reply

    我本来是用的别的VPS 今天试了 vultr 但是似乎IP又不是被墙了 ssh 不上去 总是 time out

  • Formblackt reply

    非常感谢楼主 我可以用了。

  • Formblackt reply

    赞助20~ 注意查收~

  • @Formblackt 谢谢支持 🙏

  • Allan reply

    感谢楼主,部署成功。

  • kirk reply

    po主你好,教程很棒啊,学习一下!另外想问的是你blog的评论系统是什么? 谢谢。

  • @kirk https://bitcron.com

  • 1476377353 reply

    你好,教程很nice,但发现在电脑上可以看1080p的youtube,在手机上打开youtube都很难。想请教一下,关于这个问题有解决的可能吗

  • @1476377353 如果不是在电脑上使用了双边加速,应该是手机上代理设置不正确,可以开启全局代理试一下

  • Lanchr reply

    博主,根据的你的链接,链接上信用卡后,找不到赠送的金额?是不赠送了吗?

  • Lanchr reply

    从mudium看到的进去注册的,没想到来着一看过期了,呜呜呜~~~

  • @Lanchr 嗯活动过期了,不过新增了一档 2.5 刀的 VPS,翻墙够用了

  • hotsuitor reply

    你好,请问你的Mac终端是如何设置成向右的箭头的?我也想这样设置,请教。

  • @hotsuitor 搜 ohmyzsh

  • hitsuitor reply

    @Yale 感谢!已经安装成功。

  • Kris reply

    能否请你有偿帮我远程安装?我不懂技术,弄起来很麻烦哇。邮件联系

  • 我叫123 reply

    为什么我的还是连接不了?

  • leo reply

    你好,我在执行nano /serverspeeder/etc/config 这步的时候,打开的文件是空的,什么都没有。没有办法 “将 advinacc 的 0 改为 1” 。请问是什么原因呢?

    • Arthur reply

      @leo 你没有到Vultr 环境下,你要先 SSH 登录一下

  • @leo 估计是安装包的原因吧,可以 cd /serverspeeder/etc/ 进入文件夹然后 ls -a 看下有没有 config 文件,没有的话可以通过 touch config 来创建,然后再编辑

  • leo reply

    @Yale 真是奇怪,今天重新部署了一遍锐速,可以了。谢谢!

    • Arthur reply

      @leo 你部署锐速成功了?

  • qianwj reply

    @monmas @Yale 你好,我也遇到了相同的问题,请问是怎么修改成功的?

  • monmas reply

    @qianwj 直接输入就好了

  • zhangyuxuan reply

    博主大大!您好!我是mac系统,在2.3连接VPS这一步时,在终端输入后,显示的是

    Last login: Fri Feb 16 15:29:46 on ttys000

    zhangyuxuandeMacBook-Air:~ zhangyuxuan$ ssh root@45.32.31.236

    ssh: connect to host 45.32.31.236 port 22: Operation timed out

    zhangyuxuandeMacBook-Air:~ zhangyuxuan$

    请问这是什么原因呀

  • @zhangyuxuan 连接超时了,估计是网络问题

  • CYT reply

    您好,很感谢您的分享。

    我在进行3.2步时,输入Y并回车,显示 Error writing /etc/rc.local: Permission denied

    请问这个问题该如何解决?

    • @CYT 在最前面加 sudo,sudo nano /etc/rc.local

  • Ann reply

    在shadowsocks.json文件里添加多用户的方式“port_password"{"12345":"password1", "12346":"password2",...}貌似不好使...

    • @Ann 防火墙未开放新增的端口,解决办法已更新在文中

  • superme reply

    哎,从17年底到现在,和谐太快了,,,真的是自己搭建的已经毁进去两台机子了 vultr的ip都被墙的差不多了 我个人的建议,如果不是特别刚需,或者大流量刚需的话,建议找一些免费提供节点的网站,机场比较好,自己搭建的难度高,风险大,大年30被墙一台机子, 两会又被墙了ip都要哭了 顺手推荐个免费的机场 ssr .superssr. me 这个机场免费用户提供3M带宽,不限制注册,还算可以吧。。。

    • @superme 哪儿的节点?我从16年到现在3个节点自用从来没被封过

  • 13046812345 reply

    你好 在putty那里输入ip和密码之后显示Access Denied要怎么办

  • 425601853 reply

    您好 命令./shadowsocks.sh 2>&1 | tee shadowsocks.log中的"|"符号我打出来怎么是">"呢?求解决办法 谢谢

    • @425601853 复制命令贴进去试试

  • Coreat reply

    你好,在开放端口的时候每输入一条命令都会出现“-bash: syntax error near unexpected token `输入的端口'”,应该怎么解决呢?

    为什么系统认为我是bot啊XD

    • Coreat reply

      @Coreat 是不是因为我没有在Vultr里设置防火墙个说

      • @Coreat 看报错是指令的句法错了

  • 书虫 reply

    能把centOS 7更改防火墙规则写一下吗? 现在服务器版本变成7了,谢谢了

  • Arthur reply

    大神如果一个 ip 开多个用户多个端口的话会不会影响速度?

  • cook reply

    博主你好 ,我除了开启锐速 ,其他都安装好了,系统选择的是 Ubuntu 16.04 x64 ,IP地址也可以ping 通 ,就是打不开 google ,是哪里设置的不对吗?

    • cook reply

      @cook 重启了系统可以打开了。我如果更换服务器系统为 CentOS ,那还需要再设置一遍吗

      • @cook 更换系统应该是要重装的

  • 呵呵哒 reply

    把ip,port,password给别人,别人是不是用ss客户端也能直接上外网?多人共用这一个ip

    • @呵呵哒 可以

  • Leeloleelol reply

    我用的BBR,还是感谢博主~

  • Leeloleelol reply

    我目前用的vultr东京节点 也是找了好久才找到的没被ban的IP,目前安全使用了大半年

  • Matty reply

    尊敬的博主你好,谢谢你的无私分享。

    我现在通过vultr的成功登录了View console,依次执行三个命令,但是在执行第一个命令的时候出了问题。

    显示failed:Network is unreachable,

    我想问下这是什么问题?

  • Matty reply

    另外 我用putty连接也是显示网络错误,很奇怪,明明可以上外网。

  • terry reply

    是这样的,我操作3.2 TCP Fast Open步骤的时候,应该该是某个步骤输错了,而且也保存了,就是能不能自己重新输入一遍,去检索哪儿错了,还有就是,这个步骤错了,会不会影响系统稳定性。。谢谢

  • 我记得以前是安装锐速加速的,现在改成BBR了么?还有,我想问个问题,为什么我帮别人安装完的时候,电脑的速度大概500kb左右,但是手机在同样的网络下【同一个wifi】却能达到2M甚至3M

    • @fangder 锐速安装条件太严苛,BBR效果差不多。https://github.com/shadowsocks/shadowsocks-windows/issues/1875 参考下吧

      • @Yale 感谢回复,也确实,BBR安装确实很简单。也试了下BBR,感觉提升还是蛮明显的。这个其实我也参考过,但是还是不行,win10系统。虽然我自己的能达到1.2-1.3M左右,但始终是没有手机的高。哎,无解

  • Aragronsam reply

    很棒的教程,感谢博主,还有,问哈,博主的博客主题是?很棒

    • @Aragronsam 自己写的 https://github.com/zoomyale/bitcron-theme