Leadaxe:Nowhere 暂不加入 sing-box-lx,Morph 全加密流仍属易被识别的随机流量
在 sing-box-lx #28(fscarmen 提出、已关闭)中,Leadaxe 评估后决定暂不支持 Nowhere:Rust 实现 NodePassProject/Nowhere 创建于 2026-06-26,约 450 star、234 个提交里 233 个出自同一作者,线上格式仍在变(ALPN 已改为 nw2);Go 版 nowhere-go 单人开发、1 star;Xray 与 sing-box 都没有服务端实现,订阅方不分发,用户得自己跑 nowhere portal。他认为真正有新意的是上下行载波可分离(上行 TLS/TCP、下行 QUIC/UDP,或按流选择 mix)与最多 7 跳的 Portal 链式转发。弱点是:不开 morph 时它是自签或固定证书的 TLS/QUIC,rustls 的 ClientHello 加异常 ALPN,没有 uTLS、浏览器伪装或 REALITY 式借证书,易被指纹识别;开 morph=1 后整条流变成 ChaCha20-XOR 的均匀随机字节,属 obfs4、裸 Shadowsocks 一类,而 GFW 自 2021—2023 年起已用熵/popcount 启发式检测该类流量,low7 前导只是针对某一篇已公开启发式的补丁而非伪装,项目自己的 docs/security.md 也写明 Morph 不提供伪装或抗封锁保证;在俄罗斯 TSPU 下「发往境外 IP 的未知随机流」正是被限速或切断的特征。流传的傲盾测试结果来自商业抗 DDoS 防火墙,不是国家级 DPI,他未见到针对 GFW 或 TSPU 的实测。结论是暂不计划,待协议稳定、出现独立实测报告并形成采用后再评估。原帖注明该分析由其 Claude agent 代维护者整理。
作者原文@LeadaxeThanks for the suggestion. We looked at the protocol spec and both implementations. Here is where we landed.
What Nowhere is
A relay: a local SOCKS5 frontend (Vector) talks to a server (Portal) over TLS 1.3/TCP and QUIC/UDP with its own ALPN
nw2. Carriers are authenticated with an HMAC bound to the TLS exporter; afterREADYthe payload is a plain byte stream (or QUIC DATAGRAM for UDP), with an optional custom mux.Maturity
- Rust core (
NodePassProject/Nowhere): created 2026-06-26, about three months old. ~450 stars; nearly all commits (233 of 234) come from a single author. The wire protocol is still moving (ALPN is alreadynw2, recent commits revise protocol version references).- Go port (
ohmycggk/nowhere-go): a single developer, about two months old, 1 star. We would not base an implementation on it. The upstream wire spec ships protocol test vectors, so a clean implementation from the spec would be possible.- No ecosystem: neither Xray nor sing-box implement a server, subscription providers don't distribute it, and the clients built on our core don't know its link format. Every user would have to run
nowhere portalthemselves.What is interesting
- Independent uplink and downlink carriers. Uplink can go over TLS/TCP while downlink goes over QUIC/UDP, or
mixpicks per flow. A DPI box that correlates both directions of a single connection sees two half-flows instead. This is a real and uncommon idea.- Native Portal→Portal chaining (up to 7 hops).
Where it is weak
- Without Morph it is TLS/QUIC with a self-signed or pinned certificate, a rustls ClientHello and an unusual ALPN (
nw2). That is straightforward to fingerprint: there is no uTLS, no browser mimicry and no REALITY-style certificate borrowing.- With
morph=1the whole stream becomes ChaCha20-XOR output, i.e. uniformly random-looking bytes. That is the "fully encrypted traffic" class (obfs4, bare Shadowsocks), which the GFW has been detecting via entropy/popcount heuristics since 2021–2023. Thelow7prelude (clearing the high bit of 64 random bytes) targets one published heuristic; it is a patch, not camouflage. The project's owndocs/security.mdstates that Morph provides no camouflage guarantee or censorship resistance.- In our main target region (Russia / TSPU), "unknown random-looking stream to a foreign IP" is exactly the profile that gets throttled or cut. REALITY, XHTTP behind a CDN and AmneziaWG with obfuscation are better covered.
- The Aodun (傲盾) results are a data point, but Aodun is a commercial anti-DDoS / hosting firewall, not state-level DPI. We haven't seen field reports against the GFW or TSPU yet.
Fit for sing-box-lx
sing-box-lx keeps a deliberately small feature set on top of upstream, and every new protocol has to justify its maintenance cost across upstream merges. Nowhere would be a full new protocol stack (outbound, custom mux, UDP-over-stream, QUIC DATAGRAM, Morph) resting on a three-month-old, single-author protocol whose wire format is still changing. Licenses are compatible (GPL-3.0), so that is not the blocker.
Verdict
Not planned for now. The split-carrier design is the one novel part, but its obfuscation is weaker than what the core already ships. We'll revisit once the protocol stabilizes, independent field reports against GFW/TSPU appear, and there is some adoption (providers, or support in Xray/sing-box). If you have packet captures or reproducible measurements showing Nowhere passing where REALITY/XHTTP fail, please share them here — that would change the picture.
This analysis was prepared by the @claude agent (Claude Code) on behalf of the maintainer.