-
在线客服
工作日:9:00-24:00
-
商务合作
15366085265
-
QQ联系方式
1872421339
-
大客户经理
宋经理
目录
2. Clash / V2Ray / Shadowsocks
本文面向有网络基础的开发者、SRE、网络工程师,介绍如何正确启用并调试 SOCKS5 的 UDP 功能,包括协议层逻辑、UDP 数据包格式、代理端要求、客户端实现与调试手段。
SOCKS5 UDP 必须满足两项条件:
1. SOCKS5 代理实现了 UDP ASSOCIATE
2. 客户端能正确封装 SOCKS5 UDP 数据格式
- ✔ Shadowsocks / Clash / V2Ray:支持 UDP 转发
- ✔ Proxifier:支持 UDP 重定向
- ❌ curl:不支持 UDP 模式
- ❌ 浏览器:仅支持 TCP,不支持 UDP
很多人误以为 SOCKS5 会自动代理 UDP,但实际并非如此。真实过程如下:
[Client APP] → [SOCKS5 Client UDP 封装] → [SOCKS5 Proxy UDP 中继] → [目标服务器]
代理只负责转发封装后的数据,不保证可靠性。
所有 UDP 数据都必须封装成 SOCKS5 格式,否则代理无法解析。格式如下:
RSV(2) | FRAG(1) | ATYP(1) | DST.ADDR | DST.PORT(2) | DATA
- RSV:0x0000(协议保留)
- FRAG:0x00(不分片)
- ATYP:0x01 IPv4 / 0x03 域名 / 0x04 IPv6
- DST.ADDR:目标 IP 或域名
- DST.PORT:目标端口
- DATA:实际 UDP 负载
不同工具启用方式不同。
需勾选:Enable UDP through SOCKS5
在配置文件启用:
udp: true
验证代理是否转发 UDP 非常关键:
nmap -sU --proxies socks5://127.0.0.1:1080 8.8.8.8
配合 tun2socks 或 socks5-udp 工具:
dig @127.0.0.1 -p 1080 google.com
代理若支持 UDP,会出现:
UDP Associate request
UDP relay started
- 系统代理不支持 UDP(Windows/Mac 均不支持)
- 廉价 SOCKS5 代理通常不支持 UDP
- 客户端未封装 SOCKS5 UDP 包头
- VPS 防火墙未放行 UDP 1080
- 某些代理不支持域名格式(ATYP=0x03)
SOCKS5 UDP 功能的核心在于:
1. 客户端构造 SOCKS5 UDP 包
2. 代理服务器执行 UDP 中继
这是实现游戏代理、DNS 加速、实时音视频的重要基础能力。