那是1998年的一个冬天(??),一座长城轰然耸立,和八达岭长城不同的是,它只阻挡比特流,这便是GFW,又叫防火长城。得益于度娘渣渣一般的搜索结果和天生就有的对未知事物的好奇心,从这座长城上爬进爬出的人可以说是源源不断。那么,该用怎样一种姿势扶墙呢?
$[timeformat('2019-02-12T11:55:44+08:00')]
#VPS#扶墙

GFW运行原理

要想打败一个人,就要先研究他。GFW实现网络封锁的手段主要有以下几种:

  • DNS劫持及缓存污染
  • IP或传输层端口封锁
  • TCP连接重置
  • 关键字阻断

当然还有一些其他技术手段。

常见扶墙姿势

VPN

说到扶墙,大部分人会首先想到VPN。这是一个比较“主流”的技术,它全称是“虚拟私人网络(Virtual Private Network)”,是一种加密通讯技术。VPN是一个统称,它有很多的具体实现,比如PPTP、L2TP、IPSec和openVPN,被设计出来的目的是数据传输安全和网络匿名。它的出现时间远早于GFW,也就是说,它不是为了扶墙而生的,使用它扶墙会有很多问题,最严重的一个就是流量特征过于明显。墙目前已经能够精确识别绝大部分VPN协议的流量特征并给予封锁,所以,vpn这种翻墙方式基本已经废了。

代理

代理(Proxy)又分为正向代理和反向代理,扶墙所用的代理基本都是正向代理,一般用于匿名。正向代理主要有HTTP、HTTPS、Socks等,其中只有HTTPS可以用于扶墙,但由于配置较为复杂,且只能转发TCP流量,对UDP无能为力,因此并没有流行起来。

SS

随着GFW逐渐加大对VPN等扶墙姿势的干扰,人们迫切需要一种简单可靠的技术来突破这座越来越高的墙。

2012年4月20日,V2EX论坛上有人发布了这样一个帖子:

1

这是一款专为国人扶墙设计的基于Socks5的代理协议,相对于VPN,55有极强的隐匿性,同时安装配置简单,中文社区活跃,很快就流行起来。作者最初的版本使用Python实现,通常称为Python版,只有还有cyfdecyf开发维护的Go版本,madeye开发维护的libev版本(由纯C语言编写,基于libev库开发),librehat开发维护的c++版,zhou0开发维护的Perl版等多个版本,其中Python版、Go版、libev版使用人数较多。

2015年,原作者clowwindy被请去喝茶,并随后停止维护55,其GitHub项目页面也被清空,该项目被移除以前就有大量的复刻副本,不少副本仍然有用户维护。55项目页本身也陆续恢复了内容,并交由多人维护。

其中有个比较有名的分支,即breakwa11发起的55R,在原来基础上增加了一些数据混淆方式,修复了部分安全问题并提高QoS优先级。但breakwa11刚开始发放二进制时不发放源码,违反了GPL(GNU通用公共许可协议),让许多用户对其人品表示质疑。

安装及使用55

我使用的是秋水大佬的四合一安装脚本。迫于某些你我都明白的原因,我就尽量不提某些字眼,毕竟搬瓦工5个星期才能免费换一次IP...

服务器端

root用户登录运行以下命令开始下载安装:

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

2

选择想要安装的55的版本,这里就看自己对每一种版本的理解和体验了,推荐Python版或libev版。

之后设置一个密码,为55设置一个端口(推荐默认),选择加密方式(推荐aes-256-cfb)

3

最终安装结果如下:

4

服务器端常用命令如下:

#Shadowsocks-Python 版:
/etc/init.d/shadowsocks-python start | stop | restart | status

#ShadowsocksR 版:
/etc/init.d/shadowsocks-r start | stop | restart | status

#Shadowsocks-Go 版:
/etc/init.d/shadowsocks-go start | stop | restart | status

#Shadowsocks-libev 版:
/etc/init.d/shadowsocks-libev start | stop | restart | status

参数依次是启动,停止,重启,查看状态。

各版本默认配置文件位置:

/etc/shadowsocks-xxx/config.json

客户端

55官网下载:

https://shadowsocks.org/en/download/clients.html

此站点需扶墙。还没爬过去的可以去Github下载Windows版:

55版:

https://github.com/shadowsocks/shadowsocks-windows/releases

55R版:

https://github.com/shadowsocksrr/shadowsocksr-csharp/releases

安卓用户可以直接安装“影梭”:

https://github.com/shadowsocks/shadowsocks-android/releases

iOS用户可以使用小火箭(PP助手就有,无需越狱):

作者有话说

5

55的作者clowwindy在主题为《Shadowsocks.com所售服务与Shadowsocks项目无关》帖子下的留言,写得很有意义:

Shadowsocks没有办法离开去中心化的服务器。要么自己花钱买 VPS,要么用有人分享的账号,要么用有人提供的付费服务,他们各有所长,适合不同的人。所以作为开发者,保持中立,不偏袒其中任何一方,顺其自然发展下去是最好的吧。
很多人要么一窝蜂的支持,要么一窝蜂的反对,还要把它给封禁掉,大概这种心理鲁迅先生也曾批判过。如果你们真的那么讨厌商业,那你们应该首先把你们的苹果设备给摔了,因为它就是商业社会巅峰造极的产物。我反对不喜欢一个东西就要拿出简单粗暴的制裁手段,正是这种习性成就了 GFW。
维护这个项目到现在大概总共回复过几千个问题,开始慢慢想清楚了一件事,为什么会存在 GFW。从这些提问可以看出,大部分人的自理能力都很差,只是等着别人帮他。特别是那些从 App Store 下载了 App 用着公共服务器的人,经常发来一封只有四个字的邮件:“不能用了?” 我觉得这是一个社会常识,花一分钟写的问题,不能期待一个毫无交情的陌生人花一个小时耐心地问你版本和操作步骤,模拟出你的环境来帮你分析解决。
Windows 版加上 GFWList 功能以来,我反复呼吁给 GFWList 提交规则,但是一个月过去了竟然一个提交都没有。如果没有人做一点什么,它自己是不会更新的啊,没有人会义务地帮你打理这些。我觉得,政府无限的权力,都是大部分人自己放弃的。假货坑爹,让政府审核。孩子管不好,让政府关网吧。房价太高,让政府去限购。我们的文化实在太独特,创造出了家长式威权政府,GFW 正是在这种背景下产生的,一个社会矛盾的终极调和器,最终生活不能自理的你每天做的每一件事情都要给政府审查一遍,以免伤害到其他同样生活不能自理的人。这是一个零和游戏,越和这样的用户打交道,越对未来持悲观态度,觉得 GFW 可能永远也不会消失,而墙内的这个局域网看起来还似乎生机勃勃的自成一体,真是让人绝望。


评论