本页目录(11)
一句话结论:机场 UDP 支持指节点能否代理 UDP 流量,它取决于协议、服务端、中转链路和客户端四个环节同时打通。看网页和视频基本不需要关心,但联机游戏、语音视频通话大量依赖 UDP,不支持就会连不上或没声音。
不少人第一次用代理打游戏、开 Discord 语音时会发现:网页能开、视频能看,游戏却匹配失败,语音频道里一片寂静。问题往往出在 UDP 上。机场 UDP 支持是什么?为什么游戏和语音偏偏需要它?这篇文章从原理讲到设置,帮你把这件事搞清楚。
TCP 和 UDP 的区别
TCP:可靠但会等待
先建立连接,保证每个数据包按顺序、无遗漏到达,丢了就重传。网页、下载、聊天消息都用 TCP。代价是丢包时后续数据要排队等重传。
UDP:快速但不保证
不建立连接,发出去就不管了,丢包也不重传。适合「宁可丢一帧,也不能卡一秒」的实时场景,由应用自己决定怎么处理丢失。
对游戏来说,角色 0.2 秒前的位置已经没有意义,等它重传只会让画面卡顿,所以实时数据几乎都走 UDP。语音通话同理,丢一小段声音比整段延迟好接受得多。
哪些场景依赖 UDP
| 场景 | 是否依赖 UDP | 不支持 UDP 时的表现 |
|---|---|---|
| 网页浏览、看视频 | 部分使用(QUIC / HTTP3) | 自动退回 TCP,基本无感 |
| 联机游戏 | 高度依赖 | 连不上服务器、匹配失败、频繁掉线 |
| 语音、视频通话 | 高度依赖(WebRTC 等) | 能进房间但没声音、画面卡住 |
| DNS 查询 | 通常使用 | 由客户端的 DNS 设置处理,一般不受影响 |
| BT 下载 | 部分使用 | 不建议走机场,很多机场明确禁止 |
「机场支持 UDP」到底指什么
要让一个 UDP 包从你的游戏顺利到达游戏服务器,下面四个环节缺一不可:
- 协议支持:节点使用的代理协议能够承载 UDP。
- 服务端开启:机场在落地服务器上启用了 UDP 转发,没有出于防滥用等原因关闭。
- 中转链路转发 UDP:如果节点经过国内中转,中转那一层也要转发 UDP。有些中转方案只转发 TCP,这是「协议支持但实际不通」最常见的原因。
- 客户端接管并启用:客户端里该节点的 UDP 开关打开(mihomo 配置中的
udp: true),并且用 TUN 模式接管了游戏的流量。
所以机场宣传「支持 UDP」时,最好确认是全部节点还是部分游戏节点,中转节点是否同样支持。
各协议的 UDP 支持方式
| 协议 | UDP 承载方式 | 游戏适合度 |
|---|---|---|
| Shadowsocks | 原生 UDP 转发 | 较好,取决于线路 |
| Trojan / VLESS / VMess | UDP 封装在 TCP 连接中传输 | 可用,丢包时延迟波动 |
| AnyTLS | UDP over TCP | 可用,丢包时延迟波动 |
| Hysteria2 / TUIC | 基于 QUIC,原生 UDP | 好,但怕运营商 UDP 限速 |
这里有个容易误解的点:Trojan、VLESS 也「支持 UDP」,但它们是把 UDP 数据塞进 TCP 里传的。线路干净时差别不大,一旦跨境段丢包,TCP 的重传机制会让游戏延迟突然飙高。对延迟敏感的玩家,原生 UDP 协议或低丢包的专线更合适。Hysteria2 的优缺点见 Hysteria2 协议详解,专线原理见 IPLC 和 IEPL 的区别。
QUIC 和 UDP 的关系
现在不少网站和 App 使用 QUIC(HTTP/3),它也跑在 UDP 上。节点不支持 UDP 时,浏览器会在 QUIC 失败后自动退回 TCP,所以平时上网几乎察觉不到。反过来,节点支持 UDP 时,这部分 QUIC 流量也会走代理。部分线路上 QUIC 经过代理的表现不如 TCP 稳定,这就是为什么有人会在规则里主动拦截 UDP 443,后文会提到这个做法。总之,「支持 UDP」对浏览网页来说影响不大,对游戏和语音才是关键。
NAT 类型:游戏联机的另一道坎
很多主机和 PC 游戏会显示 NAT 类型,例如 Open / Moderate / Strict,或 NAT A / B / C 等。它反映的是外部设备能否主动连到你。P2P 联机、语音直连对 NAT 类型比较敏感,NAT 类型严格时可能出现无法加入房间、只能匹配到部分玩家的情况。
经过代理后,你对外表现的 NAT 类型由代理服务器和客户端共同决定。部分客户端和协议组合可以实现「端点无关映射」,也就是常说的 Full Cone NAT,联机兼容性最好。机场宣传「FullCone」节点,指的就是这一点,但最终效果仍和你的客户端设置有关。
怎么测试和设置
- 开启 TUN 模式:在 Clash Verge Rev、sing-box 等客户端中开启 TUN(虚拟网卡),让游戏和语音软件的流量被接管。
- 确认节点 UDP 开关:订阅一般已经设置好;手写配置时检查节点是否有
udp: true。 - 测 NAT 类型:用基于 STUN 的 NAT 类型检测工具测试,能返回结果说明 UDP 已打通,结果越开放越好。
- 看连接面板:在客户端的连接页面确认游戏进程的 UDP 连接经过了你选的节点,而不是被直连或拒绝。
- 实战验证:进游戏看延迟和是否掉线,进语音频道互相说话测试。
AND,((NETWORK,UDP),(DST-PORT,443)),REJECT),让浏览器回退 TCP。这条规则只影响 443 端口,一般不会误伤游戏,但如果某个应用用 UDP 443 做语音,就需要去掉它。不同设备怎么让 UDP 走代理
Windows / macOS
用支持 TUN 模式的客户端,开启后所有程序的 TCP 和 UDP 都会被接管。首次开启可能需要安装虚拟网卡驱动或授予管理员权限。
iPhone / Android
手机客户端通常以系统 VPN 方式工作,天然接管所有流量,包括 UDP,例如 Shadowrocket、sing-box。重点检查节点本身是否支持 UDP。
游戏主机
主机一般无法安装代理客户端,常见做法是让主机通过运行代理的电脑、软路由或旁路由上网,由网关设备负责接管 UDP。
路由器
在路由器上运行代理时,同样要确认其透明代理方案转发了 UDP,部分简易方案默认只处理 TCP。
常见症状与原因对照
| 症状 | 可能原因 | 处理办法 |
|---|---|---|
| 网页正常,游戏完全连不上 | 只开了系统代理,游戏流量没被接管 | 开启 TUN 模式 |
| 开了 TUN,语音仍然没声音 | 节点或中转不转发 UDP | 换标注支持 UDP 的节点,或询问机场 |
| 能玩但延迟忽高忽低 | UDP over TCP 遇到丢包,或线路晚高峰拥堵 | 换原生 UDP 协议或专线节点 |
| 家里能玩,手机流量下卡顿 | 运营商对 UDP 限速 | 改用 TCP 协议节点或换网络 |
| 能进游戏但无法加入好友房间 | NAT 类型受限 | 尝试支持 Full Cone 的节点和客户端设置 |
还要注意,游戏本身的服务器地区也会影响体验。例如玩日服游戏却连着美国节点,即使 UDP 完全正常,延迟也会很高。先选离游戏服务器最近的节点,再谈协议和设置。部分游戏还会限制账号所在地区,切换节点前最好先了解规则。
排查时建议一次只改一个变量:先确认流量被接管,再确认节点支持 UDP,最后再看线路质量。同时改好几处设置,即使问题解决了,也很难知道是哪一步起了作用。
游戏玩家怎么选机场
优先看三点:明确支持 UDP,最好标注了游戏节点或 FullCone;有低延迟、低丢包的线路,比如专线;有 Hysteria2 等原生 UDP 协议作为补充。不同游戏对地区也有要求,比如外服账号需要对应地区节点。具体推荐和设置思路见 游戏机场选择指南,专线机场列表见 IPLC 专线机场推荐,其他常见疑问可以查 机场常见问题。