Trojan 节点支持 UDP 吗?UDP 转发原理与限制说明

Trojan 协议原生支持 UDP 转发,但需要服务端与客户端两侧同时开启。本文解释 UDP ASSOCIATE 的封装原理、Clash 配置中的 udp 开关、游戏与语音场景的表现,以及 UDP 被限制时的现象和测试方法。

Trojan 协议在设计上原生支持 UDP:协议规范定义了与 SOCKS5 一致的 UDP ASSOCIATE 命令,把 UDP 数据包封装进已建立的 TLS 连接中转发。但「协议支持」不等于「拿来就能用」——服务端要开启 UDP,客户端配置里要打开 UDP 开关,线路还得放行 UDP 流量,三个条件同时满足,游戏、语音这类应用才能正常工作。如果你的节点网页正常但游戏连不上,多数是这条链上某一环没打通。

核心结论

  • Trojan 协议规范原生定义了 UDP 转发,不需要额外插件;
  • UDP 可用 = 服务端支持 + 客户端开启(如 Clash 的 udp: true)+ 线路放行;
  • UDP 数据被封装在 TLS/TCP 通道内传输,行为与直连 UDP 略有差异;
  • 网页正常、游戏语音异常,是 UDP 未生效的典型信号。

工作原理

Trojan 的请求格式沿用了 SOCKS5(RFC 1928)的命令语义:CONNECT 用于 TCP 代理,UDP ASSOCIATE 用于 UDP 转发。当客户端需要发送 UDP 包时,流程如下:

  1. 客户端与服务端建立正常的 TLS 连接,发送带 UDP ASSOCIATE 命令的 Trojan 请求;
  2. 之后每个 UDP 数据包都加上「目标地址 + 端口 + 长度」的头部,作为数据流写入这条加密通道;
  3. 服务端解出数据包,以真实 UDP 发往目标服务器,并把返回的 UDP 包按同样格式送回客户端。

值得注意的是,客户端与服务端之间实际跑的仍是 TCP 上的 TLS 流——UDP 包是「装进」这条流里的。这带来两个特点:一是中间网络看到的依旧是一条普通 HTTPS 连接,伪装性与 TCP 代理一致(握手细节见 Trojan 协议如何通过 TLS 建立连接);二是 UDP 原本「丢了就丢了」的语义被 TCP 的重传机制改变,弱网下可能出现延迟抖动放大的现象。

核心组成

一条 UDP 可用的链路需要三方配合:

环节要求常见问题
服务端运行的 Trojan 实现开启 UDP 支持部分服务方主动关闭 UDP
客户端节点配置中开启 UDP 开关订阅转换丢失 udp 字段
线路机房与运营商放行出入 UDPUDP 被限速、丢弃或封禁

以 Clash 系客户端为例,节点级开关是 udp: true(示例为占位配置):

- name: "示例节点"
  type: trojan
  server: node1.example.com
  port: 443
  password: "your-password"
  sni: node1.example.com
  udp: true

sing-box、v2rayN 等客户端的 Trojan 出站默认支持 UDP,一般无需单独开关;而 Clash 系若省略该字段,部分版本会按不支持处理。订阅生成的配置是否带上此字段,取决于服务方的模板。

优点

  • 一条连接承载两类流量:TCP 与 UDP 共用同一节点与同一伪装通道,无需额外端口;
  • 游戏与语音可用:在线对战、实时语音、视频会议等依赖 UDP 的应用可以通过节点工作;
  • 对 QUIC 友好:HTTP/3(QUIC)基于 UDP,UDP 转发可用时这类流量也能正常代理;
  • 配置成本低:多数场景只是一个开关的差别。

限制

  • UDP over TCP 的固有代价:封装在 TCP 流内传输,丢包时触发重传,实时应用的抖动可能比直连更明显;
  • 受线路策略影响大:不少国际线路对 UDP 有 QoS 限速甚至封禁,表现为游戏高峰期突然掉线、语音断续,而网页毫无异常;
  • NAT 类型受限:经代理转发后 NAT 类型通常变为对称型或受限型,部分主机游戏的联机匹配会受影响;
  • 可用性不由使用者控制:服务端不开、线路不放行,客户端怎么配置都无效。

与其他协议的区别

协议UDP 实现方式特点
TrojanUDP ASSOCIATE,封装进 TLS/TCP 流伪装一致,但受 TCP 重传影响
Shadowsocks独立的 UDP relay,UDP 包直接加密后走 UDP语义保留完整,但 UDP 流量特征独立
VLESS依传输层而定,常配 XUDP 等扩展灵活,依赖实现
Hysteria2 / TUIC协议本身基于 QUIC(UDP)构建原生 UDP 转发,弱网表现是设计目标

简单说:Trojan 的 UDP 是「借 TCP 通道捎带」,Shadowsocks 是「UDP 走 UDP」,而 Hysteria2、TUIC 这类新协议整个就建在 UDP 之上。对 UDP 性能要求极高的场景,后者是常见的替代选择,协议整体对比见 Trojan、VLESS 与 Shadowsocks 有什么区别

适用场景

日常网页与流媒体基本不依赖本文机制;需要关心 UDP 的主要是三类用户:在线游戏玩家(对战数据与语音)、实时通信用户(会议、网络电话)、以及希望代理 HTTP/3 流量的用户。建议的做法是:先向服务方确认哪些节点支持 UDP,再在客户端确认开关生效,最后用实际应用验证。测试延迟、丢包与稳定性的通用方法见 Trojan 节点如何测试延迟、丢包和稳定性;若 UDP 正常但游戏体验仍差,可参考 Trojan 节点延迟低但速度慢是什么原因。协议基础概念可回看 Trojan 节点是什么,更多文章见 Trojan 协议专栏

延伸阅读

常见问题

Clash 配置里写了 udp: true,为什么 UDP 还是不通?
客户端的 udp 开关只决定「是否尝试通过节点转发 UDP」,能否成功还取决于服务端是否开启 UDP 支持、线路是否放行 UDP,以及订阅转换过程是否保留了该字段。三者任一缺失都会导致 UDP 不通,应先向服务方确认节点是否支持 UDP。
怎么测试 Trojan 节点的 UDP 是否可用?
常用方法有三种:在依赖 UDP 的应用里实测,如发起一次网络语音通话或进入在线游戏;在游戏主机或加速工具中查看 NAT 类型检测结果;或在电脑上用支持指定代理的测试工具向公共 STUN 服务器发起请求。若 TCP 网页正常而这些测试全部失败,基本可判定 UDP 未生效。
玩游戏延迟高,是 UDP 没开吗?
不一定。UDP 未生效的典型表现是连不上对战服务器、语音无声或 NAT 类型受限,而不是延迟高。延迟高更多与节点物理距离、线路拥塞有关。可先确认 UDP 是否可用,再用延迟和丢包测试评估线路质量,两个问题要分开定位。
为什么有的服务方故意关闭 UDP?
UDP 流量缺少拥塞控制,容易被滥用于扫描或放大攻击,部分机房和线路对 UDP 有严格的限速或封禁策略,开启后反而影响整体稳定性。因此一些服务方只在特定节点开放 UDP,或整体关闭。是否支持 UDP 应以服务方说明为准,而非协议能力。

参考资料

本文最后更新于 。如发现内容过时,欢迎通过联系页面反馈。

本文由 Trojan Lab 技术审核组 审核,采编标准见编辑政策