Files
mini-sing/FEATURE_SURVEY.md
NeoMody 1f5612e6ad Fix gVisor ICMP interception: proxy ping through WireGuard tunnel
Fixes: admin/mini-sing#1

gVisor TUN stack intercepts ICMP echo requests and replies locally
with fake <1ms latency. Real pings to Tailscale peers never reach
the WireGuard tunnel.

Fix: PrepareConnection now checks ICMP destinations against route
rules. If the matching outbound implements ICMPPinger (e.g. Tailscale),
returns an icmpProxy DirectRouteDestination that:
1. Sends the ICMP echo through tailnet's netstack via DialPing("ping4")
2. Reads the real reply from the WireGuard tunnel
3. Rebuilds a raw IP+ICMP reply packet
4. Writes it back to the TUN via DirectRouteContext

Changes:
- adapter/outbound.go: Add ICMPPinger interface
- adapter/router.go: Add FindOutbound to ConnectionRouterEx
- route/router.go: Expose FindOutbound method
- protocol/tailscale/outbound.go: Implement ICMPPinger via tailnet.DialPing
- protocol/tun/inbound.go: ICMP proxy in PrepareConnection + icmpProxy type
- tailnet/outbound.go: Add DialPing method (wraps tnet.DialContext("ping4"))
2026-04-03 00:39:30 +08:00

18 KiB
Raw Permalink Blame History

代理/VPN 客户端功能全面调研报告

调研日期: 2026-04-02 调研对象: sing-box, Clash (原版), mihomo (Clash.Meta), Hiddify, FlClash, Stash, mini-sing


一、功能矩阵对照表

A. 协议支持

入站协议 (Inbound)

协议 sing-box Clash mihomo Hiddify FlClash Stash mini-sing
Mixed (SOCKS+HTTP)
SOCKS (独立) - - -
HTTP (独立) - - -
TUN (Premium)
Redirect - - - -
TProxy - - - -
Shadowsocks - - - - -
Trojan - - - - -
VMess - - - - - -
VLESS - - - - - -
Hysteria/Hysteria2 - - - - - -
TUIC - - - - - -
Naive - - - - - -
ShadowTLS - - - - - -
AnyTLS - - - - - -
Direct - - - - -

出站协议 (Outbound)

协议 sing-box Clash mihomo Hiddify FlClash Stash mini-sing
Shadowsocks
ShadowsocksR - - -
VMess
VLESS -
Trojan
Hysteria - -
Hysteria2 - -
TUIC - -
WireGuard - -
SSH - - -
Tor - - - - - -
Snell - - -
ShadowTLS - -
AnyTLS - - - - -
NaiveProxy - - - - -
SOCKS - -
HTTP - -
Direct
Block/Reject
DNS -
Tailscale - - - - -
Selector
URLTest
Fallback - - -
Load-Balance - - -
Relay/Chain - (via dialer-proxy) - -

用户最常需要的协议排序: Shadowsocks > VLESS (Reality) > Trojan > VMess > Hysteria2 > WireGuard > TUIC


B. 传输层 (Transport)

传输层 sing-box Clash mihomo Hiddify FlClash Stash mini-sing
TCP (原始)
TLS
WebSocket -
gRPC -
HTTP/2 (H2) -
HTTP Upgrade - -
QUIC - -
Reality -
uTLS 指纹 -
Multiplex (smux/yamux/h2mux) - - -
TCP Brutal - - -
SplitHTTP/XHTTP - - - -
ECH - - - -

C. 路由规则 (Routing)

规则类型 sing-box Clash mihomo Hiddify FlClash Stash mini-sing
domain
domain_suffix
domain_keyword
domain_regex - -
domain_wildcard - - - -
ip_cidr
source_ip_cidr - - -
ip_is_private - - - - -
GeoIP (已弃用) -
GeoSite (已弃用) - -
IP-ASN - - -
port / port_range -
source_port - - -
process_name - -
process_path - -
package_name (Android) - - - -
network (tcp/udp) - -
protocol (sniffed) - - - -
inbound - - -
rule-set (远程规则集) (Premium) - -
AND/OR/NOT 逻辑组合 - - -
SCRIPT - (Premium) - - - -
wifi_ssid / wifi_bssid - - - - - -
clash_mode - - -
user-agent - - - - - -
url-regex - - - - - -
SUB-RULE - - - - -
Protocol Sniff -
Sniff Override Dest (已弃用) - (内建)

D. DNS

功能 sing-box Clash mihomo Hiddify FlClash Stash mini-sing
UDP DNS
TCP DNS -
DoT (DNS over TLS)
DoH (DNS over HTTPS) -
DoQ (DNS over QUIC) - -
DoH3 (HTTP/3) - - -
DHCP DNS - - - - - -
FakeIP -
DNS 规则/分流
DNS 劫持 -
DNS 缓存
ECS (Client Subnet) - - - -
Hosts 映射 - -
反向缓存 (IP→域名) - - - - -
域名策略 (prefer_ipv4等) - - - (prefer_ipv4)
污染过滤 - -
Prefetch - - - - -
Serve-Stale - - - - -
Tailscale DNS - - - -

E. TUN/VPN

功能 sing-box Clash mihomo Hiddify FlClash Stash mini-sing
Auto-Route
Strict-Route - - -
gVisor Stack - -
System Stack
Mixed Stack - - -
分应用代理 (Android) - (via VpnService)
Exclude Routes
MTU 设置 - -
File Descriptor 传递 - - - -
网络变化监听 (非 Android)
健康检查+自动回滚 - - - - - -

F. UI/UX 功能

功能 sing-box Clash mihomo Hiddify FlClash Stash mini-sing
Clash API (RESTful) 部分(/status, /tailscale)
Dashboard (Yacd等) (兼容) (MetaCubeXD) 内建 内建 内建 -
连接日志 -
流量统计 -
订阅/配置管理 (远程配置) (Provider) -
配置格式 JSON YAML YAML sing-box JSON YAML YAML JSON
URL 导入 -
QR 扫码导入 (客户端) - - - - -
GUI 客户端 (官方) (CfW等) (多款) - (CLI only)
SIGHUP 热重载 - - - - - -
配置编辑器 (客户端) - - - -
WebDAV 同步 - - - - -

G. 高级功能

功能 sing-box Clash mihomo Hiddify FlClash Stash mini-sing
GeoIP 数据库 -
GeoSite 数据库 - -
Rule-Set (远程规则集) (Premium) - -
Proxy Provider - -
Proxy Chain (detour) (relay) (dialer-proxy) - (Trojan detour)
MITM (中间人) - - - - - -
HTTP Rewrite - - - - - -
Script/JavaScript - (Premium) - - - -
SSID Policy Group - - - - - -
On-Demand (按需连接) - - - - - -
带宽统计 -
V2Ray API (统计) - - - - - -

H. 平台支持

平台 sing-box Clash mihomo Hiddify FlClash Stash mini-sing
Android -
iOS - - - (c-archive)
macOS
Windows -
Linux -
tvOS - - - - - -
GUI (官方) (第三方) (第三方) -
CLI - - -

二、mini-sing 现状总结

已实现

  • 入站: mixed (SOCKS5+HTTP), TUN (gVisor/system stack), Shadowsocks, Trojan
  • 出站: Shadowsocks, Trojan, VMess, VLESS, Direct, Block, Selector, URLTest, Tailscale
  • 传输层: TCP, TLS (标准 + uTLS + Reality)
  • 路由: domain, domain_suffix, domain_keyword, ip_cidr, ip_is_private, port, network, protocol, inbound
  • DNS: UDP, DoT, 分流路由, 缓存, 反向缓存, 污染过滤, Prefetch, Serve-Stale, Tailscale DNS
  • TUN: auto-route, strict-route, gVisor/system stack, MTU, file descriptor, 健康检查自动回滚, 出站路由排除
  • 平台: Android (JNI c-shared), iOS (c-archive), macOS, Linux, Windows
  • API: 基础 HTTP API (/status, /tailscale/peers)
  • 协议嗅探: TLS SNI, HTTP Host

代码规模

~6,500 行 Go 代码,极度精简。


三、优先级排序: mini-sing 下一步应该添加什么

P0: 基础可用性 (缺少会导致用户抱怨)

# 功能 理由
1 Hysteria2 出站 当前最热门的翻墙协议之一,基于 QUIC 的高吞吐量协议。大量节点提供商已全面转向 Hysteria2。缺少此协议会导致用户无法连接大量服务器。
2 WebSocket 传输层 最广泛使用的传输层协议CDN 中转必备。VMess+WS、VLESS+WS、Trojan+WS 是最常见的服务器配置。当前 mini-sing 只支持纯 TCP+TLS无法连接任何 WS 节点。
3 订阅链接导入 (Subscription) 用户从机场获取的几乎都是订阅链接 (clash/sing-box/base64 格式)。没有订阅导入,用户必须手动编写 JSON 配置,这对 99% 的用户是不可接受的。
4 完整 Clash API /connections, /proxies, /proxies/{name}, /proxies/{name}/delay, /traffic, /logs 等端点。这是所有 Dashboard 和客户端 UI 依赖的接口,没有就无法接入任何现有 Dashboard。
5 GeoIP/GeoSite 数据库支持 中国用户的核心需求: CN 域名/IP 直连。当前只有硬编码的关键词列表,无法覆盖完整的 CN 域名和 IP 地址。rule-set 或内置 GeoIP/GeoSite 至少需要支持一种。
6 DNS 出站 (dns outbound) 将 DNS 查询路由到 DNS resolver 而不是走代理。TUN 模式下的标准配置需要 "protocol": "dns" 规则指向 dns-out。当前缺失此出站类型。

P1: 竞争力功能 (重要,影响用户是否选择 mini-sing)

# 功能 理由
7 gRPC 传输层 仅次于 WebSocket 的第二常用传输层,部分机场只提供 gRPC 配置。
8 HTTP Upgrade 传输层 sing-box 推荐的 WS 替代方案性能更好CDN 兼容性好。
9 FakeIP 现代代理客户端的标配 DNS 解析方式,减少 DNS 泄漏和延迟。所有主流竞品都支持。
10 Rule-Set (远程规则集) 用户不想维护几万行规则。支持从 URL 加载 GeoIP/GeoSite 规则集是现代客户端的标准功能。
11 Fallback 代理组 当首选代理不可用时自动切换到备选。Selector 和 URLTest 之外的第三种必备组类型。
12 TUIC 出站 基于 QUIC 的低延迟协议,虽然用户量不如 Hysteria2 但仍有不少机场提供。
13 WireGuard 出站 Cloudflare WARP 用户必备。很多用户用 WARP 作为落地出口。
14 process_name / process_path 规则 macOS/Windows/Linux 上按进程分流是非常实用的功能。例如: 浏览器走代理、终端直连。
15 domain_regex 规则 正则匹配域名,处理复杂域名规则时必备。
16 DoH (DNS over HTTPS) 比 DoT 更通用的加密 DNS 协议,几乎所有公共 DNS 都支持 DoH。
17 连接日志和流量统计 通过 Clash API 暴露实时连接信息和流量数据,是诊断网络问题和监控使用的基础功能。

P2: 差异化功能 (锦上添花,竞争优势)

# 功能 理由
18 Multiplex (sing-mux: smux/yamux/h2mux) 多路复用减少连接数,配合 TCP Brutal 可以暴力提速。进阶用户看重。
19 ShadowTLS 出站 伪装为正常 TLS 握手的协议,配合 Shadowsocks 使用,反审查能力强。
20 Load-Balance 代理组 负载均衡,分散流量到多个节点。多出口用户需要。
21 Proxy Provider (远程代理列表) 从 URL 动态加载代理节点列表,机场订阅的标准方式。与订阅导入互补。
22 AND/OR/NOT 逻辑规则 组合多个条件的高级规则,减少规则数量。
23 ECS (EDNS Client Subnet) DNS 查询携带客户端子网信息,获得更精准的 CDN 解析结果。
24 Hosts 映射 本地域名映射,调试和特殊需求。
25 ECH (Encrypted Client Hello) TLS 的 SNI 加密,最新的隐私保护技术。
26 source_port / source_ip_cidr 规则 按源地址/端口分流,局域网代理场景下有用。
27 package_name 规则 (Android) Android 按包名分流,比全局代理更精细。
28 SIGHUP 热重载 改配置不需要重启进程,运维友好。

P3: 低优先级 / 小众需求

# 功能 理由
29 ShadowsocksR 出站 过时协议,新机场很少提供,但仍有少量存量用户。
30 Snell 出站 Surge 生态专属协议,用户群极小。
31 SSH 出站 可以通过 SSH 隧道代理,小众但偶尔有用。
32 Tor 出站 匿名需求,极小众。
33 NaiveProxy 反审查协议,用户群较小。
34 Redirect / TProxy 入站 Linux 透明代理,服务器/路由器场景。
35 MITM / HTTP Rewrite 中间人解析和 HTTP 重写Stash 独有,需求面窄。
36 Script/JavaScript 规则 脚本规则,灵活但维护成本高,用户少。
37 SSID Policy / On-Demand iOS 独有功能,根据 WiFi SSID 切换策略。
38 tvOS 支持 Apple TV 用户,极小众。
39 IP-ASN 规则 按 ASN 编号匹配,高级用户用。
40 WebDAV 同步 多设备配置同步FlClash/Stash 有但不是核心需求。

四、建议实施路径

第一阶段: 让用户能用起来 (P0)

订阅导入 → WebSocket 传输 → Clash API → GeoIP/GeoSite → Hysteria2 → DNS 出站

订阅导入是最关键的因为没有它用户根本无法方便地配置代理。WebSocket 紧随其后,因为它是使用最广泛的传输层。

第二阶段: 追齐主流 (P1)

FakeIP → Rule-Set → gRPC/HTTPUpgrade → TUIC/WireGuard → 连接日志 → process_name → DoH → Fallback → domain_regex

第三阶段: 建立差异化优势 (P2)

Multiplex → ShadowTLS → Load-Balance → Proxy Provider → 逻辑规则 → ECH

mini-sing 的独特优势 (已有,应持续强化)

  1. 极致精简 — 6,500 行 vs sing-box 的 ~100,000 行,启动更快,内存更少
  2. Tailscale 原生集成 — 竞品中只有 Stash 有,且不如 mini-sing 深度
  3. 健康检查自动回滚 — 独创功能TUN 模式下网络异常自动恢复
  4. DNS 反向缓存 — IP 到域名的映射,提升路由精度
  5. Prefetch + Serve-Stale — DNS 缓存高级策略,减少延迟

五、数据来源