免责声明 本文仅从技术研究与网络安全教育角度分析网络流量混淆与穿透技术。请遵守所在国家或地区的法律法规。在中国大陆地区,未经授权建立或使用非法信道进行国际联网属于违法违规行为。
由于 GFW(Great Firewall)的存在,用户不得不使用各种翻墙协议绕过这些限制。这些协议发展了多年,伴随着技术的进步和 GFW 的不断升级,形成了多种不同的翻墙方案,和 GFW 玩起了猫鼠游戏。
GFW 技术简介 在讨论如何翻过 GFW 前,有必要先了解 GFW 是如何运作的。GFW 主要通过以下几种技术手段来限制用户访问:
DNS 污染 (DNS Poisoning) 通过篡改 DNS 响应,使用户无法解析某些域名。
例如,当用户访问 https://google.com 时,DNS 查询需要使用 UDP 协议发送到 DNS 服务器的 53 端口。该查询包在经过骨干网时,GFW 会检测到该查询,并抢先返回一个错误的 IP 地址,导致用户无法访问 Google。
目前,几乎所有知名的被墙网站都遭受了 DNS 污染。
IP 封锁 (IP Blocking) 直接封锁某些 IP 地址,使用户无法与这些地址建立连接。
例如,某些 VPN 服务器在工作一段事件后被 GFW 识别到,就会封锁其 IP 地址,导致用户无法连接。
深度包检测 (DPI, Deep Packet Inspection) 通过分析数据包的内容,识别并阻断特定协议的流量。
其主要包含:
关键字阻断 (Keyword Blocking) 检测数据包中的敏感关键字,并阻断包含这些关键字的流量。
例如,如果拆包获得的报文头中包含敏感词(如 Host: facebook.com),GFW 会发送 RST 包终止连接。
协议指纹识别 (Protocol Fingerprinting) 通过分析协议特征,识别并阻断特定协议的流量。
例如,OpenVPN 使用特定的握手方式和加密算法,产生了固定的字节序列。GFW 可以通过这些特征识别并阻断 OpenVPN 流量。
主动探测 (Active Probing) GFW 会主动向可疑服务器发送探测请求,以确认其是否为翻墙服务器。
例如,当 GFW 发现某个 IP 地址有大量加密流量,怀疑其为代理服务器时,可能会伪装成客户端,向该地址发送特定的探针包。如果服务器按照代理协议响应了这些探针包,GFW 就会将其列入封锁名单。
流量特征分析 (Traffic Pattern Analysis) 使用机器学习等技术,分析数据包的大小分布、发包频率、握手时延等特征,识别翻墙流量。
白名单模式 去年,泉州等地开始试点白名单模式,默认阻断所有境外流量,只有经过审核的流量才能通过。这一措施大大增加了翻墙的难度。
常见代理协议 传统 VPN VPN 是一种通过加密隧道连接到远程服务器的技术。用户的所有流量都会通过这个加密隧道传输,从而隐藏真实 IP 地址并保护数据隐私。从技术实现上来讲,数据包会被封装在一个加密的外层协议中,发送到 VPN 服务器,然后由服务器将数据包解封装并转发到目标网站。网站返回的数据包会先发送到 VPN 服务器,再由服务器加密并通过隧道传输回用户。
下面是一个传统 VPN 工作原理的示意图:
我们在之前的文章 VPN Tunneling 中做了一些更加技术化的介绍。
对于传统 VPN,它们的初衷是安全,而不是伪装。因此在建立连接时,它们会有一个固定的握手头 (Handshake Header)。其特征过于明显,传统 VPN 协议(如 PPTP、L2TP/IPsec、OpenVPN)已经很容易被 GFW 的 DPI 识别和封锁。
尤其是 OpenVPN,由于其广泛使用,GFW 已经积累了大量的协议指纹,可以轻松识别并阻断其流量。
Shadowsocks (SS) SS 于 2012 年由 Clowwindy 开发。它是一种轻量级的代理协议,基于 SOCKS5,使用加密技术保护数据传输。它的客户端和服务端会商讨使用一致的加密算法(如 AES、ChaCha20),然后对数据进行加密,使得流量看起来像随机噪声。因此,即便 GFW 进行 DPI 解包,看到的也是一堆乱码,而读取不到原始报文的头部,无法对协议头进行模式匹配。
下面是 SS 工作的流程图:
SS 最大的创新还在于搞出了 PAC 文件,使得用户可以灵活地选择哪些流量走代理,哪些流量直连。从而,用户不再需要像以前的 VPN 一样所有流量都到海外去绕一圈了。
然而,魔高一尺道高一丈,GFW 在更新后不再仅限于 DPI,还加入了流量分析的手段。对于 SS,存在两大问题:
主动探测 (Active Probing) 尽管没有协议头,但完全随机的数据本身在互联网中就是一种异常特征。对于一段连接,GFW 会截获第一条报文,如果报文满足熵较高的特点,就会标记为可疑连接。在一些情况下,会直接被拦截
重放攻击 (Replay Attack) GFW 截获一段加密流量,稍后原封不动地发给服务器。通过观察服务器的反应(TCP Reset 或无响应的时长),GFW 就能推断出这台服务器是否运行着 SS 服务,进而封锁 IP 详情可见 GFW Report - Shadowsocks 是如何被检测和封锁的。
目前,SS 几乎已经完全不可用,GFW 的封锁手段已经非常成熟。只剩下少数专线机场在使用 SS 协议。
2015 年 8 月 22 日,Clowwindy 宣布迫于中国警方的压力,退出 Shadowsocks 的开发并删除其 GitHub 页面的源代码。
ShadowsocksR (SSR) SS 作者被喝茶并没有阻止 SS 的发展,相反,此后 SS 社区变得更加活跃。2015 年,breakwa11 基于 SS 创建了一个分支项目 ShadowsocksR (SSR),并在 GitHub 上开源。
相比于 SS 直接将报文加密后就发送,SSR 使用 obfs 插件,在外层额外封装了一层用于伪装的壳子。例如,使用 http_simple 插件后,会加上一个假的 HTTP 请求头,使得 GFW 误以为其为正常的 HTTP 流量,而不是完全随机的数据。
然而,SSR 的手段实在有些拙劣,对于包含上下文分析的 DPI 手段来讲,可以很轻松地识别出这些 HTTP 请求并不符合正常的浏览器行为,从而被识破。
2017 年 7 月 24 日,breakwa11 发布了一个闭源版本的 SS,引发争议。
2017 年 7 月 27 日,breakwa11 宣布自己被恶俗 TV 开盒,删除了所有代码,停止了 SSR 项目。
VMess VMess 是 V2Ray 项目中的核心协议。相较于 SSR 只套个伪装壳子,VMess 是真真正正地伪装成了 HTTPS 流量。
VMess 协议在建立连接时:
使用 TLS 进行加密,这使得流量看起来就像是普通的 HTTPS 流量 到达代理服务器后,服务器的 Nginx 会匹配路径 如果匹配上预先设定好的路径,就将解密后的流量反向代理给 V2Ray 进程处理 下面是 VMess 工作的流程图:
更绝的是,这一套方案有诸多扩展,可以进一步伪装流量:
Vmess 本身只是一套加密协议,其外层不但可以使用 TLS,还可以使用 WebSocket、HTTP/2 等协议进行封装,使得流量更加多样化,难以被识别。 通过使用 CDN 服务,使得 GFW 无法直接封禁代理服务器的 IP 地址,因为流量会先经过 CDN 节点。 VMess 的设计使得其在面对 GFW 的封锁时表现出色,成为最流行的翻墙协议之一。然而,其依然有一些潜在的弱点:
性能开销较高 由于使用了多层加密和封装,VMess 的性能开销较高,可能导致延迟增加。
TLS 指纹识别 尽管使用了 TLS,但 GFW 仍然可以通过分析 TLS 握手产生的 JA3 指纹来识别 VMess 流量。尤其是当使用默认配置时,指纹特征较为明显。
SNI 阻断 如果使用了不恰当的 SNI(Server Name Indication)配置,GFW 可能会通过 SNI 字段识别并阻断流量。 更麻烦的是,对于普通用户来讲,VMess 的使用其实是相当麻烦的,需要配置多个组件(如 Nginx、V2Ray),并且需要一定的技术水平来维护和更新。
Trojan Trojan 由 TrojanGfw 项目于 2019 年开发并开源,旨在提供一种简单而有效的翻墙解决方案。与 VMess 追求功能全面不同,Trojan 专注于简化设计,通过将代理流量伪装成正常的 HTTPS 流量来绕过 GFW 的检测。
Trojan 的核心工作原理如下:
Trojan 服务器在 443 端口上监听所有传入的 HTTPS 流量。它不直接处理加密,而是依赖于 TLS 协议来保护数据传输。 客户端在建立 TLS 连接后,首先发送一个包含预设密码的数据包。如果服务器接收到的第一个数据包匹配密码,则将其识别为代理流量,进行解密并转发到目标地址。 如果第一个数据包不包含密码,服务器会将连接视为普通的 HTTPS 请求,转交给本地的 Web 服务器(如 Nginx)处理,返回真实的网页内容。 这一设计使得 Trojan 能够抗主动探测。GFW 的主动探测会发送各种探针包,但 Trojan 会将所有非代理流量当作正常 HTTPS 处理,返回网页或错误响应,避免暴露服务器身份。
然而,Trojan 需要有效的域名和证书,如果 SNI 被阻断,仍可能失效。同时,用户需要一定的技术知识来配置 TLS 和 Web 服务器。
VLESS / Xray VLESS 是 V2Ray 项目中的一个简化协议,于 2020 年引入,作为 VMess 的继任者。它去掉了 VMess 中的一些复杂特性,如用户 ID 验证和动态端口,专注于提供高效的加密传输。其设计理念是将加密层与传输层分离,用户可以灵活选择不同的传输协议(如 TCP、WebSocket、HTTP/2)和加密方式(如 AES、ChaCha20),从而适应不同的网络环境。
VLESS 的工作流程大致如下:
客户端与服务器建立传输层连接(如 TCP 或 WebSocket)。 客户端发送目标地址和加密参数。 服务器根据配置进行数据转发,同时应用选定的加密算法。 这一分离设计使得 VLESS 更加模块化和可扩展,但也带来了一个问题:当结合 TLS 时,如果在应用层再套一层 TLS(TLS in TLS),会导致性能开销显著增加,并产生独特的 TLS 指纹,容易被 GFW 的 DPI 和指纹分析识别。
为了解决这一问题,Xray 项目(V2Ray 的一个分支)引入了 XTLS (Xray TLS) 协议。XTLS 不是简单的 TLS 封装,而是一种优化的传输方式:
直接拼接 (Direct Splicing) 在 TLS 握手完成后,XTLS 允许应用层数据直接拼接在 TLS 记录中,避免了额外的加密/解密循环,大幅降低 CPU 使用率和延迟。
指纹伪装 XTLS 通过随机化 TLS 握手参数、使用多种加密套件和扩展,使流量指纹更接近普通 HTTPS 流量,减少被 JA3 或其他指纹识别的风险。
兼容性 XTLS 支持回落 (Fallback) 机制,如果连接不匹配代理流量,会自动转发给其他服务,如真实的 Web 服务器。 Xray 作为 V2Ray 的增强版,不仅支持 VLESS 和 XTLS,还集成了 REALITY 等先进协议,成为对抗 GFW 的强大工具。其优势在于高性能和抗检测能力,但配置相对复杂,需要用户了解各种传输选项。
REALITY REALITY 是 Xray 项目中的一项创新技术,由 XTLS/REALITY 于 2022 年推出。它不再试图伪装成一个普通的网站服务器,而是选择假扮成大型互联网公司的 CDN 节点,如 Apple、Google 或 Microsoft 的边缘服务器。这种「借尸还魂」的策略使得流量在 GFW 眼中看起来完全合法。
REALITY 的工作原理基于 TLS 握手的 Client Hello 消息:
客户端握手 客户端发送一个伪造的 Client Hello,其中包含目标 CDN 的 SNI(Server Name Indication)和相关参数,使其看起来像是访问真实站点。
服务器验证 REALITY 服务器会将这个握手转发给真实的 CDN 服务器。如果 CDN 响应正常(即握手成功),说明客户端的伪造是有效的。
流量注入 一旦验证通过,服务器使用 XTLS 技术在该合法连接上注入代理数据,进行加密传输和转发。 这一设计带来了显著优势:
无需域名 不需要注册和配置域名,直接利用现有大型站点的证书和 IP。
抗封锁 GFW 难以封锁大型 CDN 的 IP,因为这会影响正常用户访问 Apple 等服务。 REALITY 代表了翻墙技术的最新进展,从这里开始已经几乎完全无法被 GFW 识别和封锁。
Hysteria 与前文介绍的基于 TCP 的协议不同,apernet/hysteria 选择基于 UDP 协议,并模仿 QUIC(Quick UDP Internet Connections)的工作方式。QUIC 是 Google 开发的下一代传输协议,旨在提供低延迟、高可靠性的连接,广泛用于 HTTP/3。
Hysteria 的核心创新在于其拥塞控制算法:
激进拥塞控制 传统 TCP 在检测到丢包时会减速重传,以避免网络拥塞。而 Hysteria 采用相反策略:当检测到丢包时,它会加速发包,试图抢占更多带宽。这种「反直觉」的方法在高丢包、低质量网络环境中表现出色,能够显著提升传输速度和稳定性。
QUIC 伪装 Hysteria 使用 QUIC 的握手和数据格式,使流量看起来像是正常的 QUIC 流量,进一步增强伪装效果。 优势包括:
在弱网环境下(如卫星链路或移动网络),Hysteria 的速度往往超越 TCP 协议。 UDP 流量不易被 DPI 深度检测,且 QUIC 的加密特性提供了额外保护。 QUIC 的 0-RTT 握手减少了连接建立时间。 然而,Hysteria 也面临挑战:
许多 ISP 对 UDP 流量实施质量服务限制,优先级低于 TCP,可能导致速度不稳定。 激进发包可能被误认为是 DDoS 攻击,导致服务器 IP 被封锁。 后期项目如 tuic-protocol/tuic 对 Hysteria 进行了改进,引入更智能的丢包退避策略,避免过度发包,同时保持性能优势。这些 UDP 协议为翻墙技术带来了新的可能性,尤其在对抗 GFW 的流量整形时。
不过,根据 GFW Report 团队发表在 USENIX’25 上的 Exposing and Circumventing SNI-based QUIC Censorship of the Great Firewall of China 一文,GFW 已经开始针对 QUIC 流量进行封锁和干扰,Hysteria 的前景仍需观察。
NaïveProxy klzgrad/naiveproxy 采用了与众不同的对抗策略:不是创造新的协议,而是尽可能完美地模仿真实浏览器的 HTTPS 流量。它基于 Chromium 的网络栈开发,确保生成的流量在字节级别与 Chrome 浏览器产生的流量一致。
这一方法的优势在于,流量指纹与正常浏览器流量无异,GFW 的 DPI 和指纹分析几乎无法区分。NaïveProxy 代表了「以假乱真」的极致,但也凸显了翻墙技术的极限:当伪装足够完美时,检测将变得极其困难。
常见代理工具 随着翻墙协议的演进,相应的客户端工具也层出不穷。这些工具不仅实现了协议支持,还提供了用户友好的界面、规则管理和自动化功能。
V2Ray 与 Xray VMess 协议的兴起使得 V2Ray 在 2018-2020 年间几乎成为翻墙工具的代名词。其作者 V2Ray 被请喝茶后,社区在 V2Fly 的领导下继续开发,保持了项目的活力。然而,随着 XTLS 技术的出现,开发者分歧加剧,导致 Xray 的诞生。Xray 不仅兼容 V2Ray,还引入了 REALITY 和更优化的 XTLS,成为对抗 GFW 的尖端工具。
V2Ray/Xray 的优势在于高度可定制,支持多种协议和传输方式,但学习曲线较陡峭,适合技术用户。
Sing-Box 随着协议多样化,SagerNet/sing-box 应运而生。它支持几乎所有主流协议(Trojan、VLESS、REALITY、Hysteria 等),并提供统一的配置格式。Sing-Box 强调性能和安全性,使用 Rust 编写,资源占用低。它还支持规则引擎,可以根据域名、IP 或应用进行智能路由。
Sing-Box 的出现简化了用户的选择,用户无需为不同协议切换工具。
Clash 系列 Clash 自 2019 年起成为最受欢迎的代理工具之一,以其简洁的 YAML 配置和丰富的规则集著称。Clash 支持多种协议,并提供 Web UI 和 API,便于管理和监控。
然而,2023 年原作者 Dreamacro 突然删库跑路,导致项目中断。社区迅速响应,衍生出 Clash.Meta 等分支。最终,Clash.Meta 和 Mihomo 接棒,继续发展。Mihomo 特别注重社区治理和长期维护,成为 Clash 生态的新核心。
Clash 系列以易用性和功能丰富著称,适合普通用户。
其他工具
Shadowsocks 客户端:如 Shadowsocks-Qt5、ShadowsocksR,虽然协议已过时,但仍有一些用户使用。
NaïveProxy 客户端:通常集成在浏览器扩展中,如 naiveproxy 的 Chrome 扩展。
Hysteria 客户端:有官方 CLI 和第三方 GUI,如 hysteria-gui。 结语 1987 年 9 月 20 日 20 时 55 分,中国兵器工业计算机应用研究所成功发送了中国第一封电子邮件,这标志这中国与国际计算机网络已经成功连接。这封邮件的内容是:
Across the Great Wall we can reach every corner in the world. (越过长城,走向世界)
现在看起来,颇具讽刺意味。
翻墙技术的发展史,实际上就是一部与 GFW 猫鼠游戏的历史。每当 GFW 升级封锁手段,翻墙协议和工具就会相应地进化出新的对抗策略。
在这期间,也有很多臭名昭著的人物和组织助纣为虐。从「防火墙之父」方滨兴,到思科、奇虎 360、启明星辰、中科院信工所 MESA 实验室,他们通过技术支持、情报共享等手段,帮助 GFW 提升了封锁能力,给翻墙社区带来了巨大挑战,严重阻碍了信息自由流通。
然而,正是这些挑战激发了翻墙技术的创新。每一次封锁升级,都促使开发者们寻找新的突破口,推动了协议和工具的不断进化。从最初的传统 VPN,到 SS、SSR,再到 VMess、Trojan、VLESS、REALITY 和 Hysteria,每一次技术革新都反映了翻墙社区对抗审查的决心和智慧。
💡 关键要点
免责声明 本文仅从技术研究与网络安全教育角度分析网络流量混淆与穿透技术。请遵守所在国家或地区的法律法规。在中国大陆地区,未经授权