新协议 Nowhere 能翻墙吗?我们拿探测程序敲了它一下
不翻车编辑部 · 更新于

先说结论:Nowhere 是一个开源的加密中转工具,核心卖点 Morph 把流量处理成一串随机字节。这个路子不新,防火墙从 2021 年 11 月起就在专门抓这类“全加密流量”。我们在测试服务器上装了 v3.0.1,用探测程序敲它,它的反应很固定,两次就能认出来。项目自己从没说过能翻墙,旧版安全文档还写过“不提供审查抵抗”。官方客户端只有一个 iOS App,中国区搜不到。想尝鲜,拿备用服务器玩;主力节点,现在还轮不到它。
这篇有视频版:YouTube 上看《新协议 Nowhere 能翻墙吗?我们拿探测程序敲了它一下》。
下面的内容来自 Nowhere 仓库的文档、发布说明和源码,GFW Report 的两篇论文,以及我们 2026 年 10 月 16 日在测试服务器上的实测。
Nowhere 是什么
Nowhere 由 NodePassProject 用 Rust 编写,2026 年 6 月 26 日建库,GPL-3.0 开源。首页对自己的描述只有一句:“TCP and UDP relay over TLS and QUIC”,也就是 TCP 和 UDP 中转。
v3 把它拆成三个角色:
- Vector:装在你电脑上,开一个本地 SOCKS5 入口(例如
127.0.0.1:1080)。 - Portal:装在服务器上,负责认证和转发。
- Egress(可选):出口机。它主动用 QUIC 连上 Portal,所以自己不用开任何入站端口,替你访问网站的那台机器可以藏在 Portal 后面。

传输层只用 TLS 1.3(rustls)或 QUIC(quinn),关闭 0-RTT,ALPN 固定为 nw3。默认证书是每次启动重新生成的自签证书,客户端靠证书指纹(pin)确认服务器,服务端重启后指纹会变。也可以换成正规 CA 证书。它不像 REALITY 那样借用别人网站的证书,也不模拟浏览器的 TLS 指纹。
Morph:把流量搅成随机字节
Morph 从 v3.0 起默认开启。做法是在 TLS/QUIC 外面,再用双方共享的密钥派生出 ChaCha20 密钥流,把每个字节都异或一遍。旁观者看不到 TLS 握手、SNI 和证书。
我们抓了包对比。关掉 Morph(morph=0),客户端发出的第一个包就是普通的 TLS 握手,开头 16 03 01,里面明文写着 nw3。这三个字母是 Nowhere 独有的,等于把身份写在脸上:

打开 Morph(默认),第一个包是 64 字节“前导”,开头 11 个是可打印字符,后面看不出规律,再往后整条连接都是随机字节:

随机字节的问题:防火墙在专门抓
GFW Report 和几所大学的研究者 2023 年在 USENIX Security 发表论文《How the Great Firewall of China Detects and Blocks Fully Encrypted Traffic》。他们发现,从 2021 年 11 月 6 日起,防火墙会看连接的第一个数据包,像随机数的就有可能被封。论文同时列出了几条放行规则,其中第 2 条是:开头 6 个(或更多)字节都在可打印范围(0x20–0x7e)就放过。

Nowhere 10 月 16 日发布的 v3.0.1,把默认前导改成 “Fade”:开头 8 到 12 个字节是可打印 ASCII,再往后逐渐变成 7 位、8 位随机字节。发布说明没写为什么这样改,但这个改法正好落在 Ex2 里。问题是,这种规则由防火墙定,它随时可以改,靠它放行不是长久的保证。

实测:发 77 个字节,它就露馅
光看流量还不够,防火墙还会主动发探测包。GFW Report 2020 年的论文《How China Detects and Blocks Shadowsocks》(IMC 2020)写过:防火墙向可疑服务器发各种长度的随机探测,看服务器是等到超时、立刻 RST,还是主动 FIN 断开,靠这些反应的规律认出 Shadowsocks。
我们用同样的思路测了 Nowhere v3.0.1(默认开 Morph),每次发一段随机字节:
| 发过去 | 服务器回 | 然后 |
|---|---|---|
| 70、76 字节 | 不回 | 5.01 秒后断开 |
| 77、80、90、100、120、200、1000 字节 | 回 7 字节 | 0.01 秒后断开 |
原因从代码能看出来:服务器要先读满 76 字节(64 字节前导加 12 字节随机数),读不满就等 5 秒握手超时;读满以后把剩下的字节交给 TLS 解析,解析失败就回一个 7 字节的告警再断开。
同一台服务器上还跑着一个 VLESS + REALITY 节点。我们把 16 组随机数据发给它,再原样发给它借用的那个真实网站,两边每一次的反应都一样:要么回一个 nginx 的 400 错误页,要么直接断开。

一个看上去就是普通网站,另一个像一扇只会说同一句话的门。这次实测只能说明它被探测时的反应规律,不代表它已经被封,也不代表防火墙一定会这样去认它。
项目背景:一个人写、变化快
- 372 次代码提交里,371 次来自同一位开发者(yosebyte)。
- 4 个月发了 28 个版本,线上协议换了 3 代:v2.0 和 v1 不兼容,v2.1 改了 Morph 格式,v3.0 和 v2 不兼容,发布说明写明“没有协议协商,也没有回落”。
- v2.2.1 的
docs/security.md写着,Morph 的 TCP 前导“不提供认证、完整性、防重放、伪装保证,也不提供审查抵抗”。10 月 10 日重写文档时这段被删掉了,但新文档也没写相反的说法。

客户端:只有一个 iOS App
- iOS:Anywhere Proxy,开发者 Argsment Limited,免费,最低 iOS 18。美区、港区、台区、日区等都能搜到,中国区搜不到。
- 电脑:官方只有命令行版 Vector,跑起来是本地 SOCKS5,没有图形界面。
- sing-box、Clash Meta(mihomo)、Xray:都没有支持。有人在 mihomo 的 issue #3071 追问会不会加,Nowhere 作者回了一个词:“No.”
- 安卓:专用客户端还没发布。

它做得好的地方
- 不往外传数据:遥测只在本机通过本地 socket 输出 6 个累计数字(TCP、UDP 的上传下载字节和活跃连接数),不含访问目标。我们在源码里搜过,没有任何对外上报地址,也没有自动检查更新。
- 认证绑定连接:认证标签和当前这条 TLS/QUIC 连接绑定,抓到的认证包不能拿到别的连接上重放。
- 出口机不开端口:Egress 主动连出去,常见的几个协议都没有内置这个设计。
在国内能不能用
没人知道。Nowhere 的 issue 区一共 8 条,没有一条和被墙、断流有关。我们也没找到任何一份在国内的实测报告。唯一说它好用的,是一位一键脚本作者在 sing-box-lx 的 issue 里说它能过“strict Aodun/傲盾 filters”,傲盾是商业防火墙,不是国家防火墙,也没附数据。
想试的话
- 主力节点继续用 VLESS + REALITY 或 Hysteria2,它们有几年的实战记录。
- 想试 Nowhere,用一台备用服务器,别和主力节点放在同一个 IP 上。
- Morph 保持开启(默认就是开),关掉等于在握手里写明
nw3。 - 服务器和客户端的版本一起升。它大版本之间互不兼容,没有回落。
最简单的跑法(来自官方 README,release 里有 Linux、macOS、Windows 的现成程序):
nowhere generate-key # 两端用同一个密钥
nowhere "portal://<密钥>@*:2000" # 服务器,TCP 和 UDP 2000 都要放行,启动日志会打印证书指纹
nowhere "vector://<密钥>@<服务器IP>:2000?pin=<指纹>&in=127.0.0.1:1080" # 电脑,浏览器代理设为 SOCKS5 127.0.0.1:1080
来源
| 内容 | 出处 |
|---|---|
| 项目介绍、三个角色、Egress | Nowhere README |
| Morph、认证、前导格式 | docs/protocol.md |
| Fade 前导 | v3.0.1 发布说明 |
| 与 NW2 不兼容 | v3.0.0 发布说明 |
| “不提供审查抵抗” | v2.2.1 docs/security.md |
| 遥测只在本机 | docs/telemetry.md |
| 全加密流量检测、放行规则 | GFW Report 等,USENIX Security 2023 |
| 主动探测 Shadowsocks | GFW Report 等,IMC 2020 |
| Anywhere Proxy | App Store |
| mihomo 维护者回复 | mihomo issue #3071 |
| “能过傲盾” | sing-box-lx issue #28 |
| 探测与抓包 | 不翻车 2026-10-16 实测,Nowhere v3.0.1,默认参数 |
