diff --git a/readme.md b/readme.md index 437fba6..8486125 100644 --- a/readme.md +++ b/readme.md @@ -57,19 +57,21 @@ Thank you. ## 前言 -翻越GFW有很多种方法,大浪淘沙,很多的方法都已经消失了,在我能够想起来的过去的,现在的,做一简单的记录: +中国国家防火墙(非官方)是管理中国出入境网络流量的一套软硬件系统的集合,其被中国网民戏称为中国防火长城(Great Firewall, GFW)。长期以来,由于 GFW 的存在,在中国大陆境内无法访问 Google,Twitter,Facebook 等境外网站,因为能够定向屏蔽境外网站,GFW 事实上将互联网划分为了中国大陆内网与境外互联网两种互联网体系。在大多数情况下,“墙” 会被用来代指 GFW。 + +翻越 GFW 有很多种方法,大浪淘沙,很多的方法都已经消失了,在我能够想起来的过去的,现在的,做一简单的记录: ### 经典思路 -1. 修改电脑内部的 host 文件,通过自主指定相关网站的 IP 地址的方式实现,即避开 DNS,简单粗暴,这种方式现在依然存在; -2. GFW 主要攻击手段之一是 DNS 污染,于是便有了强制指定DNS的方式以避免IP被污染的方法,这种方法经常会结合1使用; -3. 原本用来作为一种匿名,安全,保密的 VPN 服务也被发掘出翻墙的潜力,其原理比较简单,选择一个没有被 GFW 封杀的服务器,通过该服务器将相关网站的流量转发到自己的设备,而设备与VPN服务器之间的通信并不在GFW的屏蔽范围之内,于是便达成了翻墙的目的。VPN 最初的目的是用于企业服务,方便员工远程登录企业内网进行操作,主要协议有 PPTP、L2TP、IPsec、IKEv2、openVPN 等等; +1. 修改电脑内部的 host 文件:通过自主指定相关网站的 IP 地址,避开 DNS 以达到翻墙的目的,这种方法最为简单粗暴,但依然存在,同时存在相关的软件项目定期更新 host 列表; +2. 强制指定系统DNS:GFW 主要攻击手段之一是 DNS 污染,于是便有了强制指定系统 DNS 的方式以避免返回无效 IP 地址,这种方法经常会结合 1 使用; +3. VPN:原本用来作为一种匿名,安全,保密的 VPN 服务也被发掘出翻墙的潜力,其原理比较简单,选择一个没有被 GFW 封杀的服务器,通过该服务器将相关网站的流量转发到自己的设备,而设备与VPN服务器之间的通信并不在GFW的屏蔽范围之内,于是便达成了翻墙的目的。VPN 最初的目的是用于企业服务,方便员工远程登录企业内网进行操作,主要协议有 PPTP、L2TP、IPsec、IKEv2、openVPN 等等; 4. GoAgent,自由门,fqrouter 等一系列网络服务; ### 新思路 -4. Shadowsocks类:主要包括各类Shadowsocks衍生版本,ShadowsocksR,Shadowsocks-libev等,特点是加密了通信过程中的数据以及流量分流; -5. 内网穿透:比较典型的是[ZeroTier](https://www.zerotier.com),简单解释就是假装自己在国外上网,这么说的主要原因是因为当两台设备同时加入到ZeroTier的服务器之后,两台设备会拥有同一IP段内的IP地址,此时两台电脑相当于处于一个虚拟局域网之中,可以用iPad连接电脑远程运行MATLAB; -6. V2Ray:V2Ray 是 Project V 下的一个工具。Project V 是一个包含一系列构建特定网络环境工具的项目,而 V2Ray 属于最核心的一个。官方介绍 Project V 提供了单一的内核和多种界面操作方式。内核(V2Ray)用于实际的网络交互、路由等针对网络数据的处理,而外围的用户界面程序提供了方便直接的操作流程。不过从时间上来说,先有 V2Ray才有Project V; +4. Shadowsocks 类:主要包括各类 Shadowsocks 衍生版本,ShadowsocksR,Shadowsocks-libev等,特点是加密了通信过程中的数据以及流量分流; +5. 内网穿透:比较典型的是 [ZeroTier](https://www.zerotier.com),建立一个中继的管理服务器,加入服务器的客户端相当于处于同一个局域网中,不仅可以翻墙,由于其虚拟内网的特性,可以实现局域网内多设备联动。ZeroTier 有一个公有的服务器,官方称之为 Earth,同时用户可以自建 ZeroTier 中继服务器,官方称之为 Moon。 +6. V2Ray:V2Ray 是 Project V 下的一个工具。Project V 是一个包含一系列构建特定网络环境工具的项目,而 V2Ray 属于最核心的一个。官方介绍 Project V 提供了单一的内核和多种界面操作方式。内核(V2Ray)用于实际的网络交互、路由等针对网络数据的处理,而外围的用户界面程序提供了方便直接的操作流程。不过从时间上来说,先有 V2Ray才有Project V;如今 V2Ray 的开发者已经失联,V2Ray 的开发维护工作基本上已经陷入停滞。 7. 大杀器:奇怪的名字,似乎是一个有趣的人开发的,个人没有关注过。 ## Shadowsocks @@ -77,11 +79,11 @@ Thank you. 2012年4月22日,V2EX 用户 clowwindy 分享了一个自己自用一年多的翻墙工具:**Shadowsocks** ![](image/cwpostss.png) -在日常中,当我们谈到 Shadowsocks (Shadowsocks),实际上说的是围绕 Shadowsocks 所建立起来的一套完整的翻墙组件,其中包括了 Shadowsocks 协议,Shadowsocks 客户端,但本质上是 Shadowsocks 一套加密协议,被加密后的网络数据隐匿了目标地址与内容特征,使得 GFW 无法对我们期望的流量进行污染或者拦截,从而实现网络自由。传统的 VPN 技术的主要目的是保证数据安全,降低数据泄漏的风险,因此,当开启 VPN 之后,所有的流量都会通过 VPN 通道进行传输,这意味着无需代理的网络流量被转发到远程的 VPN 服务器,即使个人建立了 VPN 通道,也难以避免网络访问效率上的下降,同时也难以避免个别的版权内容无法播放的情况。 +在日常中,当我们谈到 Shadowsocks (Shadowsocks),实际上指的是围绕 Shadowsocks 所建立起来的一套完整的翻墙组件,其中包括了 Shadowsocks 协议,Shadowsocks 服务端,Shadowsocks 客户端。然而本质上,狭义的 Shadowsocks 是一套加密协议,被加密后的网络数据隐匿了目标地址与内容特征,使得 GFW 无法对我们期望的流量进行污染或者拦截,从而实现网络自由。传统的 VPN 技术的主要目的是保证数据安全,降低敏感数据泄漏的风险,因此,当开启 VPN 之后,所有的流量都会通过 VPN 通道进行传输,这意味着无需代理的网络流量也会被转发到远程的 VPN 服务器,即使个人建立了 VPN 通道,也难以避免网络访问效率上的下降,同时也难以避免版权内容在服务器 IP 所在地区无法播放的情况。 -相对于传统的 VPN 技术,Shadowsocks 的建立初衷便是为了翻墙,因此 Shadowsocks 接管网络之后,并没有需求对所有的流量进行加密处理,通过引入配置文件(PAC)实现了网络分流技术,也就是配置文件中的网站走代理通道,配置文件之外的地址全部走直连通道,一个客户端,两套出口,互不干扰,极大的提升了上网体验。 +相对于传统的 VPN 技术,Shadowsocks 的建立初衷便是为了翻墙,因此 Shadowsocks 接管网络之后,并不会对所有的流量进行加密处理,通过引入配置文件(PAC)实现了网络分流技术,也就是配置文件中的网站走代理通道,配置文件之外的地址全部走直连通道,一个客户端,两套出口,互不干扰,极大的提升了上网体验。 -初生的 Shadowsocks 点燃了开发者的热情,基于各类语言的 Shadowsocks 实现与主流平台的客户端如雨后春笋一般很快建立起来了,这是一段热情而又喧闹的时期,参与在其中的人们毫不吝惜自己的聪明才智与旺盛精力,围绕 Shadowsocks 这个内核与骨架,每个人都在努力作出自己的贡献。彼时,对成熟的传统的翻墙业务足以应对不成熟的 GFW,Shadowsocks 只不过是刚刚萌发的幼芽,脆弱而生机勃勃,默默吸收着养分。 +初生的 Shadowsocks 点燃了开发者的热情,基于各类语言的 Shadowsocks 实现与主流平台的客户端如雨后春笋一般很快建立起来了,这是一段热情而又喧闹的时期,参与在其中的人们毫不吝惜自己的聪明才智与旺盛精力,围绕 Shadowsocks 这个内核与骨架,每个人都在努力作出自己的贡献。彼时,传统而又相对成熟的 VPN 业务足以应对不成熟的 GFW,Shadowsocks 只不过是刚刚萌发的幼芽,脆弱而生机勃勃,默默吸收着养分,等待着时机的爆发。 最初的 Shadowsocks 客户端都内置了节点信息,网上也有人分享自己的节点,虽然速度略慢,稳定性不佳,但丰俭由人,普通用户安装后无需额外配置即可食用,有需求有技术的群体可以在自己的服务器上搭建 Shadowsocks 服务。唯一遗憾的是当年的 iOS 上并没有网络通道的权限,要么使用 Shadowsocks 浏览器有限翻墙,要么越狱安装客户端接管网络,实现 Shadowsocks 代理。 @@ -91,11 +93,12 @@ Thank you. >Two days ago the police came to me and wanted me to stop working on this. Today they asked me to delete all the code from GitHub. I have no choice but to obey. > >I hope one day I’ll live in a country where I have freedom to write any code I like without fearing. -I believe you guys will make great stuff with Network Extensions. +> +>I believe you guys will make great stuff with Network Extensions. >Cheers! -当晚,clowwindy 把他所维护的几个 shadowsocks 实现的代码仓库内的 IShadowsocksues 面板全部关闭,所有帮助信息全部删除,并将所有的描述都改成了 Something happened。于此同时,他还清空了这些组织的 membership,或者将所有成员全部转入隐私状态,不对外公开。 +当晚,clowwindy 把他所维护的几个 shadowsocks 代码仓库内的 Isuesses 面板全部关闭,所有帮助信息全部删除,并将所有的描述都改成了 Something happened。于此同时,他还清空了这些仓库 / 组织的 membership,或者将所有成员全部转入隐私状态,不对外公开。 空气中弥漫着不寻常。 @@ -109,7 +112,10 @@ I believe you guys will make great stuff with Network Extensions. 至此,Shadowsocks 原作者退出。 #### 一些话 -clowwindy 的遭遇却退了热情的开发者,但后续工作并未停止,前前后后也着实发生了很多的事情,前因后果在此不计。ShadowsocksR 的作者 breakwa11 是一个极富争议性的人,她接手了后续 Shadowsocks的开发工作,却违反开源协议封闭源代码,同时发布的过程中暗示自己是原作者,在 [shadosocks-windows/Issue108](https://github.com/shadowsocks/shadowsocks-windows/issues/293#issuecomment-132253168) 中 clowwindy 做出了一些回应: +clowwindy 的遭遇并未完全消灭所有开发者的热情,因此后续的开发维护工作并未停止,在这段不安的时间里,前前后后也着实发生了很多的事情,乱花渐欲迷人眼,前因后果在此不计。 + +ShadowsocksR 的作者 breakwa11 是一个极富争议性的人,她接手了后续 Shadowsocks的开发工作,却违反开源协议封闭源代码,同时发布的过程中暗示自己是原作者,在 [shadosocks-windows/Issue108](https://github.com/shadowsocks/shadowsocks-windows/issues/293#issuecomment-132253168) 中 clowwindy 做出了一些回应: + >那是自然的咯。这边加了什么功能,它(SSR)马上扒过去合并了。它那边加了什么却不会贡献出来给其他人用,久而久之,不就是它那边功能更多了吗。 >一直以来我什么都没说是因为我对他还有点希望,所以得给他一点面子不是。一开始我还只是纳闷他为什么不发 pull request,过了一段时间我才明白,这个世界上也有这一类的人。不尊重 GPL 就算了,把作者名字换成自己的,还在主页上加上官方的字样。为什么我们这边反而不说官方呢?因为我希望这个项目是没有官方的,人人都是贡献者。想不到这个社会人人都围着官转,人人都巴不得当官 。 @@ -128,19 +134,21 @@ clowwindy 的遭遇却退了热情的开发者,但后续工作并未停止, #### SSR之死 -紧接着 breakwa11 的遭遇不论真假,同样令人胆寒 +争议始终是存在着的,但是这也未曾阻挡 SSR 前进发展的步伐,越来越多的人开始转向 SSR,SS 逐步落入下风,但是也有一批拥促。平静的水面下隐藏着汹涌的暗流,爆发的那一刻已然迟已,开发者 breakwa11 的遭遇不论真假,同样令人胆寒 2017年7月19日,breakwa11 在 Telegram 频道 ShadowsocksR news 里转发了深圳市启用 Shadowsocks 协议检测结果,被大量用户转发,引发恐慌。 -2017年7月27日,breakwa11 遭到自称 "ESU.TV" 的不明身份人士人身攻击,对方宣称如果不停止开发并阻止用户讨论此事件将发布更多包含个人隐私的资料,随后 breakwa11 表示遭到对方人肉搜索,而被他们所公开的个人资料属于完全无关人士,是自己当时随便填写的信息,为了防止对方继续伤害无关人士,breakwa11 决定删除 GitHub 上的所有代码、解散相关交流群组,停止 ShadowsocksR 项目。 +2017年7月27日,breakwa11 遭到自称 "ESU.TV" 的不明身份人士人身攻击,对方宣称如果不停止开发并阻止用户讨论此事件将发布更多包含个人隐私的资料,随后 breakwa11 表示遭到对方人肉搜索,而被他们所公开的个人资料属于完全无关人士,是自己当时随便填写的信息,为了防止对方继续伤害无关人士,breakwa11 决定删除 GitHub 上的所有代码、解散相关交流群组,停止 ShadowsocksR 项目。他在 Telegram 发出以下这段话: >这次的人肉事件,让我严重怀疑我自己做 SSR 是不是对的,首先不管资料对不对,从行为上看,就是有人希望我死,希望这个项目死,恨一个人能恨到如此程度。我知道我很做作,因此得罪了很多人,尤其最近公开 Shadowsocks 可被检测的问题,更是让很多人义愤填膺,非要干掉我不可。尽管从我的角度看,我只是希望通过引起关注然后促进 Shadowsocks 那边进行修改,这并不是希望 Shadowsocks 死掉的意思,我每次提出的问题之后不是都得到了改进了吗,包括 OTA 和 AEAD,AEAD 我也是有参与设计的,你们可以问 Syrone Wong,以及 NoisyFox 证实,而且 Shadowsocks-windows 有一部分也是我参与修改的。但如今,人肉的资料我也稍微看了一下,真是太令人心寒,连对方的支付宝流水都拉出来了,这样真的好吗?我并不希望因为我自己的问题而害了另一个人。我期望和那些反对我的人来一笔交易,我可以以停止开发 SSR 作为交换,删除项目及相关的东西,以后不再出现,SSR 群从此解散,账号注销,删除代码。对于我来说,这个项目不过是我用来证实自己的想法的一个东西,可有可无,制作也只是兴趣,扔掉也没有什么可惜的,反正替代品非常多,根本就不缺我这一个。你们老说我圈粉,你们真想太多了,真没这个必要。如果可以以这个换取另一人免受网络暴力,我也觉得这是值得的。相反的,如果人肉的结果仍然公开了,那就是我的行为已经救不了了,那我就可以继续开发 SSR。不过也不会太久,估计最多只多坚持一年到我毕业之前。谢谢这两年来大家的支持,这次应该是真正的和大家再见,看结果吧,今天晚上 12 点以 SSR 群解散作为标志,如果解散了那就正式和大家说一声再见 +当然12点,breakwa11 解散了 Telegram 群组。 + 至此,SSR 作者退出。 ## 传承 -clowwindy 的遭遇与随后的退出,其实在暗示着 GFW 的成长,它不仅仅是技术上的博弈,它的概念开始扩展至更广泛的领域,技术永远都是有漏洞的,但与此同时,开发者也是。奔涌的潮水会退回去,但下一次,下一次,它依然会积蓄着力量汹涌而来。 +clowwindy 与 breakwa11 的遭遇与随后的退出,其实在暗示着 GFW 的成长,它不仅仅是技术上的博弈,它的概念开始扩展至更广泛的领域,技术永远都是有漏洞的,但与此同时,开发者也是。奔涌的潮水会退回去,但下一次,下一次,它依然会积蓄着力量汹涌而来。 得益于 clowwindy 最初开源 Shadowsocks 的决定,大量的 fork 使得 Shadowsocks 依然在更新之中,从 GitHub 现有结果来看,各个平台(甚至是路由器)的 Shadowsocks 仍然不断的在更新,在提交 IShadowsocksue,也有大功能更新,每一滴微小的力量都推动着项目的前进,只是前途在何处仍然是未知数。 @@ -254,7 +262,7 @@ Surge 固然好,但是其开发者 Yachen Liu 却着实是一个富有争议 - 2018年10月,作者发推表示 > 计划给 Surge iOS 加一个新功能,可以选择将自己的授权与 iCloud 账号绑定,绑定后最多可激活 6 个设备,但是仅可以在自己的 iCloud 登录的设备上使用。 - + 作者确实是网络技术大牛,截至目前,Surge 仍然是iOS端最优秀的 Shadowsocks 客户端,但是其营销策略极富争议性,喝茶事件至今无法证实,且之后全区下架客户端也毫无道理,之后长期上架 App Store 也不能很好的自圆其说,因此被称为喝茶营销 (仅作记录,不代表个人观点)。 作者对高价的解释是 Surge 是面向国际的网络调试设备,主要竞品是老牌应用 Charles,但是这几年的发展下来,调试功能这种核心并没有实质的长进,反盗版能力,UI设计倒是提升不少,口嫌体直般升级了 Shadowsocks 的最新版本, ~~ 却死活不肯添加 V2ray 等新协议,~~ 面向国际的软件,核心用户却是国内用户,可以说是相当的傲娇。 @@ -439,7 +447,6 @@ obfs 混淆最大的作用是对 Shadowsocks 流量进行伪装, 在不添加obf ```shell //etc/shadowsocks-libev/config.json ``` - ## Shadowsocks客户端 Shadowsocks 客户端已经全平台覆盖了, Github 上有专门的开源客户端项目.