UDP 被封锁:这对你的 VPN 和 Hysteria2 意味着什么
为什么有些网络会封锁 UDP 和 QUIC、这对 Hysteria2 有什么影响,以及 Colitu 的 Adaptive Connect 如何无需你的操作就回退到 TCP 传输。
互联网上的大部分流量运行在两种传输协议之上。TCP 提供可靠、有序的数据流:网页、下载、电子邮件。UDP 发送相互独立的数据报,不内置送达保证:DNS、语音和视频通话、在线游戏,并且越来越多地用于网页本身,因为 HTTP/3 运行在 QUIC 之上,而 QUIC 运行在 UDP 之上。基于 UDP 构建的 VPN 协议,在它所遇到的每个网络上都会承受 UDP 的命运。
为什么有些网络会封锁或限制 UDP
UDP 并不是因为“不好”才被封锁。网络限制它有若干现实的原因:
- 简单的防火墙策略。 许多企业、学校和酒店的防火墙只允许基于 TCP 的网页流量加上 DNS,其余一律丢弃。
- 可见性较低。 QUIC 几乎对所有包头都进行了加密。检查或优化流量的设备看到的内容比 TCP 少得多,因此一些运营方会封锁 QUIC,因为他们知道浏览器会回退到 TCP。
- 防止滥用。 UDP 可能被滥用于放大攻击,所以有些网络会对 UDP 限速,或只允许其访问知名服务。
- 过滤。 一些过滤系统会对发往陌生目的地的 QUIC 区别对待,将其减速或丢弃。
- NAT 行为。 家用路由器和运营商级 NAT 只会在有限的时间内保留 UDP 映射;空闲的 UDP 流可能会丢失映射并停止工作。
QUIC 标准已预料到这一点:RFC 9308 告知应用程序,UDP 可能被封锁,因此它们需要备用方案。
如何识别 UDP 问题
- VPN 在一个网络上能连接,但在另一个网络上耗时长得多,或者失败。
- 即使不使用 VPN,在该网络上视频通话也会卡顿或中断。
- 问题出现在特定类型的网络上:办公室 Wi-Fi、酒店,或某个特定的移动运营商。
在这样的网络上首次连接较慢,往往是回退机制在起作用的可见迹象:应用先尝试了 UDP 传输,发现没有流量通过,然后转向下一种。
这对 Hysteria2 意味着什么
Hysteria2 运行在 QUIC 之上,使用 TLS 1.3 和自有的拥塞控制,使其在丢包的链路上也能保持速率。这使它成为 Colitu 在移动网络和长距离线路上最快的传输方式。但这一切都取决于 UDP 能否通过:
- UDP 被完全封锁: Hysteria2 根本无法连接。
- UDP 被限速: 能连接,但运行缓慢或不稳定。
- UDP 一段时间后被丢弃: 工作几分钟,然后不再传输流量。
当网络有意丢弃数据包时,任何拥塞控制都无能为力。解决办法是换一种传输方式,而这正是 Adaptive Connect 的用途。
Adaptive Connect 如何回退到 TCP
每台 Colitu 服务器都提供五种传输方式。Hysteria2 使用 UDP;其余四种通过 TCP 连接:
| 传输方式 | 传输途径 |
|---|---|
| VLESS Reality | TCP,带 Reality 伪装的 TLS 1.3 |
| VLESS XHTTP | TCP,在 Reality 之上由独立的上行和下行请求组成的类 HTTP 数据流 |
| Trojan | TCP,看起来像 HTTPS 的 TLS |
| Shadowsocks 2022 | TCP,带重放保护的 AEAD 加密 |
Adaptive Connect 会替你在它们之间做选择;没有手动的协议设置:
- 顺序。 在 Android 和 iOS 上,应用依次尝试 Hysteria2、VLESS Reality、VLESS XHTTP、Trojan 和 Shadowsocks 2022。在 Windows 和 Linux 上,它先尝试 Hysteria2,然后是各 TCP 传输方式,按到服务器的 TCP 连接打开的快慢排序;无法到达的排在最后。
- 要看真实流量,而不只是握手。 只有当真实流量通过检查(Android 上约 12 秒,iOS 上约 9 秒)时,某种传输方式才算有效。UDP 被封锁的网络无法通过这项检查,应用便会转向下一种。
- 记忆。 没有承载任何流量的传输方式会被往后放:在 Windows 和 Linux 上为 10 分钟,在 Android 上标记为停滞,在 iOS 上给予惩罚。Android 还会记住每台服务器上最后一次可用的传输方式。
- 连接期间持续监测。 Windows 应用每两秒检查一次隧道是否仍在传输流量,如果停止就会重新连接,这涵盖了过一段时间会丢弃 UDP 的网络。
应用还会以汇总形式向面板报告哪些传输方式可用,这样默认设置会随时间不断改进。你不需要配置任何东西。
TCP 的取舍
回退能让你保持在线,但 TCP 的表现有所不同。出现丢包时它会放慢速度以进行恢复,一个丢失的数据包可能会拖住其后的所有数据。在干净的办公室网络上你几乎不会察觉;而在微弱的移动信号下,TCP 传输可能比在允许 UDP 的网络上使用 Hysteria2 时感觉更慢。
你可以做什么
- 通常什么都不用做:请等应用完成连接,而不是取消后重试。
- 如果速度很重要且你有选择余地,请使用能通过 UDP 的网络,例如用家里的网络而不是酒店 Wi-Fi。
- 在工作或学校的网络上,请遵守所在机构的 IT 规定;网络的所有者决定什么是被允许的。
- 如果在某个网络上没有任何传输方式能够连接,请尝试其他位置,然后联系客服,并提供网络类型和你所在的地区。更多检查方法见帮助中心:连接问题和速度优化。
相关阅读:VPN 在 Wi-Fi 下可用,但在移动数据下不可用和VPN 被 DPI 封锁。
来源
- RFC 768: User Datagram Protocol
- RFC 9000: QUIC, a UDP-based multiplexed and secure transport
- RFC 9114: HTTP/3
- RFC 9308: Applicability of the QUIC transport protocol
- RFC 9312: Manageability of the QUIC transport protocol
- CISA: UDP-based amplification attacks
- Hysteria 2 documentation
- Project X (Xray) documentation