Indy UDP ASSOCIATE 请求中的 0.0.0.0:0 可能是有意为之。该请求描述客户端一侧预期的 UDP 端点,RFC 1928 允许在未知时使用零值。它并不选择最终服务。

响应中的 BND.ADDR/BND.PORT 指明客户端将封装数据报发送到的中继。

TCP control: client → SOCKS5 proxy → UDP association reply
UDP payload: client → returned relay address → target service

在 Indy 中,TIdUDPClient.Connect 调用透明代理的 OpenUDP。TIdSocksInfo 提供零值关联字段。随后 SendBuffer 把所需服务交给 SendToUDP,后者在应用负载之前构造 SOCKS UDP 目标头。

如果关联成功但流量失败,请检查返回的中继、编码的目标以及 UDP 回程路径。NAT/防火墙可能放行 TCP 交换却阻断 UDP。

保持 TCP 控制连接打开;关闭它会结束关联。SOCKS4/4a 没有此操作,仅凭 SOCKS5 名号并不能保证服务器支持 UDP。

相关文章