Colitu VPN
指南

VPN 无法连接时:了解 DPI 与连接问题

了解什么是深度包检测、它如何可能发现 VPN 流量,以及 Reality、Trojan 和 Hysteria2 如何尝试建立连接,同时坦率说明其局限,并给出实用步骤。不作任何保证。

你的 VPN 昨天还能用。今天它连接后卡住,或者根本连不上,而互联网本身一切正常。在许多网络上,原因是 深度包检测(DPI):这种设备不仅查看流量去往哪里,还会查看流量“长什么样”。本指南介绍 DPI 能看到什么、Colitu 的各种传输方式如何应对,以及你可以做什么,同时不会假装任何协议是不可见的。

什么是 DPI

普通的路由只看地址和端口。DPI 则更进一步:它会检查每个连接的开头、流量的形态,有时还有未加密数据包的内容,然后对该流量进行分类并执行规则:放行、减速或切断。运营商用 DPI 做流量管理,企业用它保障安全,国家则用它来做过滤。在一些国家,这类设备安装在每家主要运营商处,因此过滤发生在网络层面,而不是针对单个网站。

DPI 会看什么

  • 地址。 最简单的方法:一份被封锁的 IP 地址或网段列表。如果服务器的地址本身被封锁,任何协议都无济于事。
  • 握手。 许多传统的 VPN 协议以可识别的消息开头。例如 WireGuard 使用固定的消息类型和大小,并且不尝试隐藏它们。
  • TLS 问候。 在 TLS 连接中,第一条消息(ClientHello)以明文携带所请求的网站名称(SNI),并带有由密码套件和扩展构成的“指纹”。看起来不像常见浏览器的客户端会很显眼。
  • 流量形态。 数据包大小和时间间隔会暴露出规律,例如包裹在另一层 TLS 连接内的 TLS 流量。
  • 随机性。 从第一个字节起就像纯随机数据的流量,本身就是一种信号;研究人员已记录到有过滤系统据此对其进行封锁。
  • 主动探测。 过滤系统自己去连接可疑的服务器,并观察它如何回应。

DPI 封锁是什么样子

  • 连接在握手阶段失败;
  • 连接打开,传输了少量数据后就卡住;
  • 速度下降到无法使用的程度;
  • 在一个网络(家庭宽带)上能用,在另一个网络(某个移动运营商)上却失败。

Colitu 的传输方式如何应对 DPI

每台 Colitu 服务器都提供五种传输方式,基于不同的思路构建:

  • VLESS Reality 没有自己的证书。它借用某个真实第三方网站的 TLS 1.3 握手,因此连接到该服务器的探测看到的是那个网站。详情:VLESS Reality。
  • VLESS XHTTP 在 Reality 之上,以由独立的上传和下载请求构成的类 HTTP 数据流来承载数据。适用于长时间的单个 TCP 连接会被切断的地方。详情:VLESS XHTTP。
  • Trojan 运行在真实的 TLS 之上,看起来像 HTTPS。密码错误的客户端得到的是普通网络服务器的行为。详情:Trojan。
  • Hysteria2 运行在 QUIC 之上,使用 TLS 1.3 和真实证书,因此类似 HTTP/3。它依赖于 UDP 能够通过。详情:Hysteria2。
  • Shadowsocks 2022 使用带重放保护的 AEAD 加密,没有可识别的握手。它轻量快速,但在过滤系统针对看起来随机的流量时更容易暴露。详情:Shadowsocks 2022。
传输方式伪装思路主要弱点
VLESS Reality真实网站的握手TCP,在丢包的链路上较慢
VLESS XHTTPReality 之上的类 HTTP 请求TCP,在丢包的链路上较慢
Trojan普通 HTTPS依赖其自身的 TLS 证书
Hysteria2QUIC 之上的 HTTP/3限制 UDP 的网络
Shadowsocks 2022没有可识别的模式随机性可能成为一种信号

坦率说明局限

没有任何一种传输方式是无法被检测的,也没有任何一种是无法被封锁的。过滤系统会随时间变化,网络运营方随时可以封锁某台服务器的地址,或只允许一份经批准的服务清单。这正是 Colitu 不依赖某一个“神奇”协议的原因:我们保留多种各有所长的传输方式,让应用选择当下在你的网络上可用的那一种。我们无法保证任何一种传输方式在每个网络上都能工作。

DPI 干扰时 Adaptive Connect 的做法

Adaptive Connect 不会只相信一次成功的握手。只有当真实流量通过检查时,一种传输方式才会被接受。这对应对 DPI 很重要,因为 DPI 往往放行握手,随后再让数据卡住。没有承载任何流量的传输方式会被往后放,Android 会记住每台服务器上最后一次可用的传输方式,而 Windows 应用每两秒检查一次隧道是否仍在传输流量,如果停止就会重新连接。应用还会以汇总形式向面板报告哪些传输方式可用,使默认设置随时间不断改进。这背后的测量数据,包括一次一小时的故障注入测试,见 Adaptive Connect 2.0 报告。

你可以做什么

  1. 保持应用为最新版本。
  2. 让应用完成连接;在被过滤的网络上,首次连接可能花更长时间。
  3. 尝试其他位置:如果一台服务器的地址被封锁,另一台可能可用。
  4. 与另一个网络对比,例如用 Wi-Fi 代替移动数据,看问题是否与某一家运营商有关。
  5. 联系客服,告知你的运营商、所在地区和问题开始的时间;这有助于我们发现规律。

各国对使用 VPN 的规定不同。你有责任遵守适用于你的法律。相关阅读:UDP 被封锁,以及帮助中心的连接问题。

来源