关于机场类代理协议的来源,是一个时间不长却充满了争议的复杂的过程,我们整理了关于机场的一些资料,以及对于普通用户来说需要了解的知识点。目前我们只需要了解几个主要的知识点就够,而不需要了解整个开源社区的各种各样的协议。我们主要只需要大致了解Shadowsocks协议/ShadowsocksR协议/Trojan协议/V2Ray,因为目前大多数的机场服务商均以这些协议来搭建服务器,以提供翻墙服务,而主流的客户端也都兼容这几种协议,并自动的选择和采用协议进行通讯传输。
Shadowsocks协议
Shadowsocks最早由V2EX用户“clowwindy”2013年4月发布在该论坛。
Shadowsocks(简称SS)是一种基于Socks5代理方式的加密传输协议,也可以指实现这个协议的各种开发包。目前包使用Python、C、C++、C#、Go语言、Rust等编程语言开发,大部分主要实现(iOS平台的除外)采用Apache许可证、GPL、MIT许可证等多种自由软件许可协议开放源代码。Shadowsocks分为服务器端和客户端,在使用之前,需要先将服务器端程序部署到服务器上面,然后通过客户端连接并创建本地代理。
在中国大陆,本工具广泛用于突破防火长城(GFW),以浏览被封锁、遮蔽或干扰的内容。2015年8月22日,Shadowsocks原作者Clowwindy称受到了中国警方的压力(“喝茶”),宣布停止维护此计划(项目)并移除其个人页面所存储的源代码(删库)。
为了避免关键词过滤,网民会根据谐音将ShadowsocksR称为“酸酸乳”,将Shadowsocks称为“酸酸”。另外,因为Shadowsocks(R)的图标均为纸飞机,所以专门提供Shadowsocks(R)或类似服务(如V2Ray和TROJAN)的网站则就被称为了“机场”。
Git仓库的日志显示该项目被移除以前就有大量的复刻副本,不少副本仍然有用户维护。所以尽管Shadowsocks项目页经过此次打击,也陆续恢复了内容,甚至本身并转交由多人维护成不同版本,各大Linux包的软件仓库均有各式Shadowsocks的实现的包仍持续更新可用,目前的Shadowsocks更新基本上来自这些作者执行。
Shadowsocks协议运行原理
Shadowsocks的运行原理与其他代理工具基本相同,使用特定的中转服务器完成数据传输。例如,用户无法直接访问Google,但代理服务器可以访问,且用户可以直接连接代理服务器,那么用户就可以通过特定软件连接代理服务器,然后由代理服务器获取网站内容并回传给用户,从而实现代理上网的效果。服务器和客户端软件会要求提供密码和加密方式,双方一致后才能成功连接。连接到服务器后,客户端会在本机构建一个本地Socks5代理(或VPN、透明代理等)。浏览网络时,客户端通过这个Socks5(或其他形式)代理收集网络流量,然后再经混淆加密发送到服务器端,以防网络流量被识别和拦截,反之亦然。
Shadowsocks特点
- Shadowsocks使用自行设计的协议进行加密通信。加密算法有AES-GCM、ChaCha20-Poly1305等,除创建TCP连接外无需握手,每次请求只转发一个连接,无需保持“一直连线”的状态,因此在移动设备上相对较为省电。
- 所有的流量都经过算法加密,允许自行选择算法。
- Shadowsocks通过异步I/O和事件驱动程序运行,响应速度快。
- 客户端覆盖多个主流操作系统和平台,包括Windows、macOS、Android、Linux和iOS系统和路由器(OpenWrt)等。
2017年9月21日,一篇名为《The Random Forest based Detection of Shadowsock’s Traffic》的论文在IEEE发表,该论文介绍了通过随机森林算法检测Shadowsocks流量的方法,并自称可达到85%的检测精度,虽然该论文的有效性遭到网友质疑。但是使用机器学习来识别网络流量特征的做法被认为是可行的,而且还适用于任何网络代理协议而不仅仅局限于Shadowsocks。
Shadowsocks在SIP003提案[25]中支持了插件,插件让Shadowsocks的流量可以通过不同的插件进行混淆加密或其他处理。目前使用较多的插件有v2ray-plugin、simple-obfs等。
Shadowsocks协议的实现
目前Shadowsocks有多个实现支持,以自由软件形式发布的主要有
- 原始Shadowsocks(以Python语言编写)
- Shadowsocks-libev
- openwrt-Shadowsocks
- Shadowsocks-rust
- go-shadowsocks2
- gost
- libQtShadowsocks
- Shadowsocks-qt5
- Shadowsocks-android
- Shadowsocks-windows
- ShadowsocksX-NG
- ShadowsocksR
- Outline
- V2Ray
- Brook
- Trojan
- Clash
等等,还有为数甚多的免费软件及商业软件。
ShadowsocksR协议
ShadowsocksR(简称SSR)是网名为breakwa11的用户发起的Shadowsocks分支,在Shadowsocks的基础上增加了一些资料混淆方式,称修复了部分安全问题并可以提高QoS优先级。后来贡献者Librehat也为Shadowsocks补上了一些此类特性,甚至增加了类似Tor的可插拔传输层功能。
ShadowsocksR开始时曾有过违反GPL、发放二进制时不发放源码的争议,使得原开发作者不满。不过后来ShadowsocksR项目由breakwa11转为了与Shadowsocks相同的GPL、Apache许可证、MIT许可证等多重自由软件许可协议。
2017年7月19日,ShadowsocksR作者breakwa11在Telegram频道ShadowsocksR news里转发了深圳市启用SS协议检测的消息并被大量用户转发,引发恐慌。7月24日,breakwa11发布了闭源的SS被动检测程序,引发争议。7月27日,breakwa11遭到自称“ESU.TV”(恶俗TV)的不明身份人士人身攻击,对方宣称如果不停止开发并阻止用户讨论此事件将发布更多包含个人隐私的资料,随后breakwa11表示遭到对方人肉搜索并公开个人资料的是无关人士,为了防止对方继续伤害无关人士,breakwa11将删除GitHub上的所有代码、解散相关交流群组,停止ShadowsocksR项目。但项目已被多人fork,并有人在其基础上继续发布新的版本,例如较为知名的SSRR(ShadowsocksRR)。
Trojan协议
与Shadowsocks相反,Trojan不使用自定义的加密协议来隐藏自身。相反,使用特征明显的TLS协议(TLS/SSL),使得流量看起来与正常的HTTPS网站相同。TLS是一个成熟的加密体系,HTTPS即使用TLS承载HTTP流量。使用正确配置的加密TLS隧道,可以保证传输的
- 保密性(GFW无法得知传输的内容)
- 完整性(一旦GFW试图篡改传输的密文,通讯双方都会发现)
- 不可抵赖(GFW无法伪造身份冒充服务端或者客户端)
- 前向安全(即使密钥泄露,GFW也无法解密先前的加密流量)
对于被动检测,Trojan协议的流量与HTTPS流量的特征和行为完全一致。而HTTPS流量占据了目前互联网流量的一半以上,且TLS握手成功后流量均为密文,几乎不存在可行方法从其中分辨出Trojan协议流量。
V2Ray工具
对于主动检测,当防火墙主动连接Trojan服务器进行检测时,Trojan可以正确识别非Trojan协议的流量。与Shadowsocks等代理不同的是,此时Trojan不会断开连接,而是将这个连接代理到一个正常的Web服务器。在GFW看来,该服务器的行为和一个普通的HTTPS网站行为完全相同,无法判断是否是一个Trojan代理节点。这也是Trojan推荐使用合法的域名、使用权威CA签名的HTTPS证书的原因: 这让你的服务器完全无法被GFW使用主动检测判定是一个Trojan服务器。
V2Ray,是Victoria Raymond以及其社区团队开发的Project V下的一个工具。Project V是一个工具集合,号称可以帮助其使用者打造专属的基础通信网络。Project V的核心工具称为V2Ray,其主要负责网络协议和功能的实现,与其它Project V通信。V2Ray可以单独运行,也可以和其它工具配合,以提供简便的操作流程。开发过程主要使用Go语言,Core采用MIT许可证并开放源代码。
在中国大陆,本工具广泛用于突破防火长城(GFW),以访问被封锁和屏蔽的内容。
V2Ray的运行原理与其他代理工具基本相同,使用特定的中转服务器完成数据传输。例如,用户无法直接访问Google,YouTube等网站,但代理服务器可以访问,且用户可以直接连接代理服务器,那么用户就可以通过特定软件连接代理服务器,然后由代理服务器获取网站内容并回传给用户,从而实现代理上网的效果。服务器和客户端软件会要求提供用户ID(GUID)和加密方式,双方一致后才能成功连接(VMess协议能够自适应客户端采用的加密方式)。连接到服务器后,客户端会在本机构建一个本地Socks5代理(或VPN、HTTP、透明代理等)。浏览网络时,客户端通过这个Socks5(或其他形式)代理收集网络流量,然后再经混淆加密发送到服务器端,以防网络流量被识别和拦截,反之亦然。V2Ray 定位为一个平台,任何开发者都可以利用 V2Ray 提供的模块开发出新的代理软件。
V2Ray主要特性
多入口多出口:一个V2Ray进程可并发支持多个入站和出站协议,每个协议可独立工作。
定制化路由:入站流量可按配置由不同地出口发出。轻松实现按区域或按域名分流,以达到最优的网络性能。
多协议支持:V2Ray 可同时开启多个协议支持,包括Socks、HTTP、Shadowsocks、VMess、Trojan和VLESS等。每个协议可单独设置传输载体,比如TCP、mKCP和WebSocket等。
隐蔽性:V2Ray的节点可以伪装成正常的网站(HTTPS),将其流量与正常的网页流量混淆,以避开第三方干扰。
反向代理:通用的反向代理支持,可实现内网穿透功能。
多平台支持:原生支持所有常见平台,如Windows、macOS和Linux,并已有第三方支持移动平台。
VMess 协议
VMess 是一个无状态协议,即客户端和服务器之间不需要握手即可直接传输数据,每一次数据传输对之前和之后的其它数据传输没有影响。 VMess 的客户端发起一次请求,服务器判断该请求是否来自一个合法的客户端。如验证通过,则转发该请求,并把获得的响应发回给客户端。 VMess 使用非对称格式,即客户端发出的请求和服务器端的响应使用了不同的格式。
机场软件与协议的组合
目前机场软件主要是V2Ray/clash等,根据客户所使用的场景/平台不同,有相应的客户端软件可选择。协议方面还是使用SS/SSR/VMess/Trojan/VLESS等。
查看本站的《机场评测表》,这里面的机场代理通常都支持全协议。
评论列表(6条)
机场。。告诉我哪个好用
我们平时用的不就是V2RAY吗
所以到底哪一种好
MARK一下,有空再看
支持
看的我眼花缭乱