【问题标题】:How can I send UDP packets over SOCKS proxy如何通过 SOCKS 代理发送 UDP 数据包
【发布时间】:2012-12-12 04:11:23
【问题描述】:

我正在查看定义 socks 服务器时我的计算机生成的流量。 我通过互联网阅读,发现它也可以通过代理服务器路由 udp。 当我尝试使用使用 UDP 并允许袜子设置的不同应用程序时,它仅用于 tcp 流量。为什么? 我已经定义了 SOCKS5,因为我知道 v4 不支持 udp(为什么?) 我尝试了一个示例,Vuze 客户端 - 它的专家模式允许首选 udp 流量,设置 socks 服务器,甚至在这一点上,任何 udp 都直接转到对等方。 我的愿望是监控流量,看看它是如何传输的,是通过 UDP 与 socks 服务器连接,还是它实际上是通过 TCP 连接到 socks 服务器并发送数据,然后通过 udp 发送到目的地?

【问题讨论】:

  • 您是通过本地 SOCKS5 代理还是远程代理连接?如果无法到达 SOCKS 代理,则直接发送流量。
  • 我正在连接到我在 sockslist.net 上找到的工作 socks5,它可以完美地用于 tcp 连接,但我想知道它是否也可以通过它路由 udp 流量。是吗?
  • 您是否在进行网络嗅探?您应该看到您的客户端软件与 SOCKS5 代理执行 UDP ASSOCIATE。此关联是通过与代理的 TCP 连接完成的。详见规范:tools.ietf.org/html/rfc1928
  • UDP ASSOCIATE 是否仅在 第一次协商结束后发生(当服务器发回 0x05 时?
  • RFC 似乎表明情况如此。

标签: networking udp socks tunneling


【解决方案1】:

当客户端想要通过 SOCKS5 代理中继 UDP 流量时,客户端会通过 TCP 发出 UDP 关联请求。然后 SOCKS5 服务器返回一个可用的 UDP 端口给客户端以发送 UDP 包。

然后客户端开始发送 UDP 数据包,这些数据包需要中继到 SOCKS5 服务器上可用的新 UDP 端口。 SOCKS5 服务器将这些 UDP 包重定向到远程服务器,并将来自远程服务器的 UDP 包重定向回客户端。

当客户端想要终止连接时,它会通过 TCP 发送一个 FIN 包。然后 SOCKS5 服务器终止为客户端创建的 UDP 连接,然后终止 TCP 连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多