Snowflake 详解——P2P 技术如何穿透最严封锁
Snowflake 的核心创意
传统可插拔传输(obfs4)的问题是:无论怎么伪装,流量最终都要汇聚到一组相对固定的网桥 IP 上。审查系统只要识别出这些 IP 段,仍然可以批量封锁。
Snowflake 的解法是完全换一条路:让 Tor 用户之间直接 P2P 互连。
工作流程
你的 Tor Browser
↓ WebRTC P2P
一个运行着 Snowflake 的普通 Chrome/Firefox 用户的浏览器
↓ 通过这个用户的浏览器中转
Tor 网络入口中继
三步走
第一步:调度
你的 Tor Browser 启动后连接 Snowflake 调度器(协调服务器),告诉它"我需要一个 Snowflake 中继"。
第二步:配对
调度器从在线的 Snowflake 用户池里随机找一个空闲的,建立 P2P WebRTC 连接。
第三步:中转
WebRTC 连接建立后,这个 Snowflake 用户的浏览器就成了你的 Tor 流量中转节点。对于审查系统来说,这就是一个正常的 WebRTC 实时音视频通话流量——完全无法区分。
为什么 Snowflake 最能穿透
| 特性 | obfs4 | Snowflake |
|---|---|---|
| 需要固定 IP(网桥) | ✅ 需要 | ❌ 不需要 |
| 流量特征 | 加密 TLS,可被识别 | WebRTC,和真实音视频无法区分 |
| 审查封锁方法 | 封网桥 IP | 封所有 WebRTC(极端)或封随机 IP |
| 可能被识别 | DPI 深度包检测 | 几乎不可能 |
理论上审查系统可以封掉所有 WebRTC 流量来阻挡 Snowflake,但这意味着同时封掉 Zoom、Meet、腾讯会议等所有主流视频会议工具——代价太大。
如何让自己成为 Snowflake 中继
你可以在自己的 Chrome 或 Firefox 里安装 Snowflake 扩展,帮助其他 Tor 用户绕过审查。
Chrome 安装
- Chrome 应用商店搜索 "Snowflake by The Tor Project"
- 一键安装后扩展自动运行,后台透明中转流量
- 扩展图标显示当前中转的数据量和时间
Firefox 安装
- Firefox 扩展商店搜索 "Snowflake"
- 同样一键安装
中继者能看到什么?
几乎什么都看不到。你的浏览器只是中转加密后的 Tor 流量,内容是三层加密包裹的数据包,Snowflake 中继完全无法解析。这和运营 Tor 出口节点不同——出口节点能看到明文(HTTP 情况下),Snowflake 中继只能看到加密包。
为什么值得贡献
Snowflake 中继是 Tor 网络里安全风险最低的贡献方式:
- 不需要暴露公网 IP(WebRTC 的 NAT 穿透机制)
- 不需要专门的服务器
- 看不到用户流量内容
- 扩展轻量,不影响浏览器正常使用
你只需要在日常用浏览器时保持扩展开启即可。
Snowflake 的局限
- 速度不稳定:取决于配对到的 Snowflake 用户的网络质量和地理位置
- 依赖用户基数:Snowflake 中继越多、分布越广,成功率越高;在线用户太少时会连接失败
- NAT 穿透失败:极端网络环境下 WebRTC 的 STUN/TURN 可能失败,P2P 配对不上
- 被流量消耗:作为 Snowflake 中继时会消耗一定的上行带宽
在 Tor Launcher 里启用 Snowflake
- 启动 Tor Browser → 点击"配置"
- 勾选"Tor 在我的国家受到审查"
- 下拉菜单选择 Snowflake
- 点击"连接"
不需要额外填任何网桥地址——Snowflake 自动从 Tor 网络内部获取 Snowflake 中继列表。
Snowflake vs 其他传输方式
| 适用场景 | 速度 | 稳定性 | 是否需要网桥 | |
|---|---|---|---|---|
| obfs4 | 普通封锁 | ⭐⭐⭐ | ⭐⭐⭐⭐ | ✅ |
| Snowflake | 深度 DPI 封锁 | ⭐⭐ | ⭐⭐ | ❌ |
| meek-azure | Azure 可访问时 | ⭐⭐⭐ | ⭐⭐ | ❌ |
| obfs4 + Snowflake 组合 | 极端封锁 | 取决于配对 | 互补 | 网桥 + P2P 双通道 |
极端审查环境下建议两种传输都准备好,一种不通换另一种。