| 模式 | 客户端至服务端链路 | 身份/完整性 | 部署边界 |
|---|---|---|---|
proxy + simple/random |
可还原的字节混淆 | 无可靠身份认证、无完整性、无重放保护 | 限制在可信网络或另外提供安全传输 |
tunnel + quic |
QUIC + TLS 1.3 | 验证服务端证书,客户端令牌认证,TLS 完整性 | 保护外层网络链路 |
tunnel + tcp |
TCP + TLS 1.3 | 验证证书,挑战/HMAC 认证,TLS 完整性 | 保护外层网络链路 |
tunnel + tcp-plain |
明文 IP 数据,混淆可选 | 挑战/HMAC 只认证握手,不保护后续 IP 包 | 显式选择的非保密测试模式 |
proxy 的两个混淆算法都只使用密码字节和模 256 的结果决定替换表,每种算法至多有 256 张表。相同字节总是映射到相同字节,已知的 SOCKS 握手进一步降低还原难度。增加密码长度不能修复这一点,random 不等于随机密钥流。
quic / tcp 的保密性来自 TLS。被动观察者仍可看到端点地址、时间和流量大小。没有流量形态隐匿、匿名性或不可探测性承诺。
proxy 和 tcp-plain 不阻止线路上的篡改、注入或中继。TCP 的新鲜挑战阻止直接复用旧握手证明,但不会使明文数据获得完整性。TLS 模式校验服务端证书及名称,校验失败不会自动降级到明文。不要通过关闭证书校验绕过错误。
TCP 服务端保存的令牌摘要等价于其认证凭据;应与令牌一样保密。不同客户端应使用独立令牌,性能实验使用独立测试令牌。私钥、令牌与摘要文件只允许必要账户读取。
- 应用代理的本地 HTTP/SOCKS5 入口没有用户名/密码认证。CLI 默认绑定
127.0.0.1:8888,同机进程仍可以使用它。改为:8888会暴露到其他网络接口,需另行限制访问来源。 - proxy 的
-passwd是混淆参数,不是可靠的访问控制。服务端默认:18888,应通过主机/云防火墙限制来源;不能将密码长度作为公网暴露的防护。 - SOCKS 服务端没有目标地址 ACL。能访问代理的一方可能访问服务端可达的内网、回环和元数据地址。按实际授权范围配置出口防火墙,避免把代理开放给不可信用户。
- 服务端拥有解封装后的流量及 DNS 查询可见性;服务端至目标站点的链路并不会因为外层隧道而自动加密。使用正确验证证书的 HTTPS 等端到端协议保护应用数据。
- 进程并发上限、握手/空闲超时和 Accept 退避缓解 FD 耗尽,不构成抗 DDoS 保证。监听队列、主机其他进程和系统总 FD 限额也会影响可用性。
隧道仅承载 IPv4。macOS、Windows 和移动端有 IPv6 阻断策略;Linux 需要自行禁用或限制 IPv6,避免未被隧道接管的流量旁路。应用代理模式只代理显式配置它的应用,也不自动改变所有应用的 DNS 行为。
桌面客户端在连接中断时保留隧道路由并重连,正常停止时恢复原网络。该行为不是覆盖进程崩溃、启动前/退出后、全部系统接口及外部路由变更的通用 kill switch。移动端的系统 VPN/按需连接策略也需要平台配置。对严格流量隔离的需求,应增加独立的主机防火墙策略并实测。