AmneziaWG 对比 WireGuard:这个隐身分支改变了什么
WireGuard 之所以赢下现代协议之争,靠的是小巧、快速,以及一种最好意义上的「无趣」。但它从来不是为了隐藏而设计的。在用深度包检测寻找 VPN 流量的网络上,原版 WireGuard 是最容易被识别的协议之一——而 AmneziaWG 这个项目正是为了解决这一点,同时又不放弃 WireGuard 本身的长处。
简短回答:AmneziaWG 是 WireGuard 的一个开源分支,它保留了密码学与速度,却把协议那个一眼可辨的握手伪装起来——用垃圾数据包、随机填充和改写过的头部字节——让深度包检测无法把它与 WireGuard 的特征匹配上。底层是同一条隧道,在网络上呈现的轮廓却不一样。
要点速览
- AmneziaWG 就是 WireGuard 加上一层混淆。加密、密钥模型和性能本质上没有改变。
- 原版 WireGuard 有一个固定、可取指纹的握手——审查者正是借此封锁它,而无需解密任何东西。
- AmneziaWG 打破了这个指纹:握手前先发垃圾数据包,给握手加随机填充,再把头部数值随机化。
- 它并非万灵药。被封的服务器地址、UDP 禁令和白名单防火墙照样能拦住它。
- 在普通网络上它带不来任何额外好处。它只在那些主动猎杀 VPN 协议的网络上才有意义。
为什么原版 WireGuard 容易被封
审查者无需破解加密就能封锁 VPN。它只需要识别出协议,而 WireGuard 把这件事变得很容易,因为它的握手每次看起来都一模一样。每个 WireGuard 会话的第一个数据包,都是一条恰好 148 字节的 UDP 消息,其前四个字节是一个消息类型字段,永远读作 1 后面跟着三个零。服务器的回复恰好是 92 字节,类型为 2。每一种实现、每一次连接、无论在哪里,都是如此。
这种规整对工程师而言美妙无比,对身处国家级防火墙之后的人却是煎熬。检测硬件去匹配这种形态——固定的大小、恒定的类型字节、交换的节奏——并在隧道完成建立之前就把连接丢弃。里面的一切仍然是加密的,是外面泄露了底牌。
这并非疏忽。WireGuard 项目明确把流量混淆列为非目标:该协议意在保持精简、可审计,而伪装则留给在它之上构建的层去做。多年来这留下了一个缺口,因为那些过滤最狠的国家——我们在伊朗、俄罗斯与中国如何封锁 VPN中逐一讲过——很早就把 WireGuard 的特征加进了它们的过滤器。
AmneziaWG 是对这个缺口的一种回答。
AmneziaWG 改变了什么
AmneziaWG 来自 Amnezia 团队,后者是一套用于自建 VPN 的开源工具包;理解它最简单的方式,就是把它看作穿上戏服的 WireGuard。这个分支增加了一组配置参数,专门在检测系统盯着看的那些时刻,重塑连接呈现出来的样子:
- 先发垃圾数据包(Jc、Jmin、Jmax 参数)。在真正的握手之前,客户端先发出一阵大小各异、毫无意义的随机数据包。对话不再以一条整洁的 148 字节消息开场。
- 随机填充(S1、S2)。握手的发起与响应被附上随机的额外字节,于是数据包大小不再与已知特征吻合。
- 改写头部(H1–H4)。那四个标记每个 WireGuard 数据包的固定消息类型值,被替换成两端事先约定好的数值。那暴露身份的 1、2、3、4 再也不会出现在网络上。
较新的版本把这个思路推得更远。1.5 版加入了特制的开场数据包,去模仿其他协议的头几个字节,而随后在 2026 年到来的 2.0 系列继续沿着这个方向走——目标从「别看起来像 WireGuard」转向「看起来像某种无害的东西」。
有两个细节在实践中很重要。两端必须共享同一套参数数值:这是一套协调好的戏服,写在配置文件里,而不是客户端临场发挥出来的东西。而当每一个混淆参数都设为零时,AmneziaWG 说的就是原版 WireGuard——这恰好说明了所加这一层有多薄、多精准。
哪些东西没有改变
戏服之下,协议毫发未动。握手的数学运算、现代的密码算法、密钥交换——全都直接继承自 WireGuard,而非重新发明。这是正确的取舍:新的混淆做错了,代价低、好修复;而新的密码学做错了,则是灾难性的。一个只改外包装的分支,保住了 WireGuard 那个小巧、被反复审查过的核心。
性能也撑得住。垃圾数据包在连接开始时增加了少许额外数据,此后隧道运送流量的方式与 WireGuard 一致。如果你在意主流协议在速度和电量上的对比,我们在WireGuard 对比 OpenVPN 与 IKEv2中做过这个比较——而 AmneziaWG 坐在 WireGuard 那一栏里,不与那些更老、更重的选项为伍。
AmneziaWG 仍然失效的地方
混淆抬高了封锁你的成本。它并不能让封锁变得不可能,而一个诚实的比较必须指出戏服在哪些地方帮不上忙:
- 被封的地址。如果审查者已经把你服务器的 IP 列入黑名单,那你的数据包看起来如何都无所谓。伪装能击败的是协议过滤,而不是地址清单。
- UDP 禁令与限速。有些网络会成片地丢弃或扼制陌生的 UDP 流量。AmneziaWG 仍然是 UDP;在那些网络上,乔装成普通 TCP 网页流量的隧道才能接管局面。
- 白名单防火墙。最严苛的网络把逻辑反了过来:只有被认可的协议才能通过。在那里,看起来什么都不像的流量本身就可疑,而无法识别的高熵流量会被原则性地丢弃。看起来像噪声,对付黑名单有帮助,对付白名单却帮倒忙。
- 军备竞赛。审查者还会测量流量的时序、长期的数据包大小模式,以及一台可疑服务器在被试探时如何回应。每一种混淆方案都是一个移动靶,这正是认真的项目持续推出新版本的原因。
现实的说法是:AmneziaWG 让你在那些按协议特征过滤的网络上变得封锁成本高昂。在封锁靠地址、靠传输层或靠白名单的地方,你需要别的手段——我们在VPN 如何绕过审查中梳理了这整片图景。
你真的需要 VPN 混淆吗?
在伸手去拿任何混淆 VPN 之前,有个问题值得先问:你的问题真的是协议封锁吗?在大多数国家的家庭网络上,原版 WireGuard 连接得好好的,混淆只会增加可动的部件,却不会增加隐私——加密两种情况下都一样。诚实的检验很简单:如果一个标准 VPN 在你的网络上能可靠连上,你就不需要那套戏服。
混淆在特定情形下才能体现其价值:对 VPN 协议取指纹的国家级防火墙、对被识别出的 VPN 流量限速的 ISP,以及一些把封锁隧道当作政策的公司、校园或酒店网络。如果其中某一种符合你的日常,那这篇比较的其余部分就是为你写的。如果不符合,那么协议选择——我们在主对比文中讲过——比伪装更重要。
在 iPhone 上使用 AmneziaWG
AmneziaWG 有官方应用,其中包括一个 iOS 客户端。如果你租一台服务器,并用 Amnezia 工具把它配置好,就可以导入一份带有混淆参数的配置,然后大功告成。对于那些乐于管理服务器、并让参数保持同步的人来说,这是一条确实不错的路——而我们的Shadowsocks 对比 VPN一文,本着同样的自建精神,介绍了那些代理形态的替代方案。
大多数人并不想为了上网而去运维基础设施,也不应该被迫如此。务实的替代方案,是一款由应用替你施加混淆、且两端都由同一个提供方管理的 VPN。
Snap VPN 正是这样构建的。隧道本身是 WireGuard,我们在它之上施加自有的混淆技术,重塑连接,使它不会向检测系统呈现出一个教科书式的 VPN 特征。我们刻意把网络层的细节排除在文档之外——已公开的伪装是最先被加进过滤器的——但其中的原理,正是 AmneziaWG 所印证的那一条:保留 WireGuard 的工程,改变网络看到的东西。没有什么需要配置,也无需创建账户。
常见问题
AmneziaWG 和 WireGuard 是一回事吗?它是一个分支。密码学和隧道行为都是 WireGuard 的;改变的是数据包在网络上的样子——垃圾数据包、填充和随机化的头部取代了那个可识别的特征。把那些参数清零,它的行为就和标准 WireGuard 一样。
AmneziaWG 比 WireGuard 慢吗?没有明显差别。混淆在连接建立时增加了少量数据,而稳定状态下的速度与原版 WireGuard 持平——真正干活的那个加密是完全相同的。
DPI 还能检测出 AmneziaWG 吗?它可以尝试,有时也会成功。混淆去掉了那个轻易就能匹配的特征,但审查者仍然可以封锁服务器地址、对 UDP 限速,或者标记它们根本无法归类的流量。把它当作一场持续军备竞赛中的有力一招,而非免疫。
AmneziaWG 在 iPhone 上能用吗?能——有一个官方 iOS 应用,而且你配置里的混淆参数必须与服务器的完全一致。如果你不愿自己去管理这些,替代方案就是一款内置混淆的 VPN 应用。
结论
- WireGuard 容易被封,是因为它的握手在任何地方看起来都一模一样;加密隐藏的是内容,而不是协议的轮廓。
- AmneziaWG 保留了 WireGuard 的密码学与速度,并恰好把检测系统用来匹配的那些部分随机化。
- 它能赢过协议过滤;它赢不了 IP 黑名单、UDP 禁令或白名单防火墙。
- 在 iPhone 上自建它可通过官方应用实现。省事的那条路,是一款把混淆作为产品一部分交付的 VPN。
如果你想要 WireGuard 的速度,又希望混淆已经替你处理好——没有服务器要租、没有参数要同步、没有账户也没有流量日志——Snap VPN 已在 App Store 上线。