一键脚本:bash <(curl -fsSL snell-ten.vercel.app)
项目地址:https://github.com/passeway/Snell
Snell v5
Surge 自有的代理协议 Snell 升级到了 v5,带来了两个新特性
Dynamic Record Sizing
该特性将提高在存在丢包的网络环境下延迟表现。技术细节可参考 :Cloudflare Blog
QUIC Proxy Mode
我们之前专门解释过为什么对 QUIC 进行代理转发不是一个好主意,并且加入了 block-quic 参数用于自动屏蔽 QUIC 请求。但是无奈的是,最近发现有些应用开始强依赖 QUIC,若屏蔽 QUIC 流量可能会导致其工作异常。
因此 Snell v5 加入了专为 QUIC 流量设计的 QUIC Proxy 模式,该模式工作属于 UDP over UDP,以避免 TCP over UDP 问题。(服务端需开放 UDP 端口)
该工作模式为 QUIC 进行了特殊优化,仅当 Surge 识别到 QUIC 流量时会启用,其他 UDP 流量依然使用 UDP over TCP 模式。
QUIC Proxy 只会对 QUIC Handshake 数据包进行强加密,以保护 SNI 和目标主机名,同时进行鉴权。后续的所有 QUIC 数据包,由于本身已经被 QUIC 强加密,将直接以裸包进行转发,大幅降低了不必要的加解密开销。同时由于未引入额外字节,不会影响 QUIC 的 PMTU 探测。
服务端下载链接请见:Snell
Snell v5 的服务端可以向下兼容 v4 客户端,如果不想使用 QUIC Proxy Mode 功能,客户端设置为 v4 版本即可,Dynamic Record Sizing 的优化只和服务端有关。
出口控制
支持配置 egress-interface 参数控制出口 interface(需要 root 权限或者给予CAP_NET_RAW/CAP_NET_ADMIN 授权,同时该 interface 上需要有目标地址和 DNS 的路由表)
支持 systemd 的 Socket Activation 机制,可用于配置 network namespace,也可用于出口 interface 配置。我们会在之后提供配置样例。