Net*_*udy 2 sockets proxy networking udp packet
通常我们可以通过某种工具设置代理服务器,例如CCProxy,它为HTTP,SOCKS,FTP数据包等提供代理服务.此外,Proxifier或Proxycap用于在客户端PC上转发特定应用程序的数据包.但是,当UDP数据包转发到代理服务器时,这些数据包无法正确转发到应用程序希望它们去的目标.当我使用网络分析仪观察UDP流量时,UDP数据包只是从我的PC传递到代理服务器,最后没有到达正确的目的地.
此外,有人建议在代理服务器中未启用UDP中继,因此UDP数据包无法成功路由.如何在代理服务器上启用UDP中继功能?(假设我可以完全控制代理服务器)
Rem*_*eau 11
任何类型的代理,无论是TCP还是UDP,都需要告知将转发数据包转发到哪里.这也允许代理知道谁在请求转发,因此它可以将匹配的入站数据包路由回同一个请求者.
让我们假设SOCKS,例如.SOCKS v4不支持UDP(或IPv6),但SOCKS v5支持UDP(或IPv6).但是,它要求请求应用程序建立到SOCKS代理的TCP连接,并要求它代表应用程序转发UDP数据包,直到该TCP连接关闭.
CCProxy,Proxycap,Proxifier等工具通过拦截传出的TCP连接并将它们重定向到代理服务器(透明地处理任何代理握手来设置转发),然后允许任何应用程序数据流经TCP,从而工作(对于TCP,无论如何)连接.建立TCP连接后,由于应用程序现在直接与代理通信,因此代理不需要对连接执行任何其他操作.
我不知道这些工具是否支持UDP.由于没有与重定向的传出连接,因此实现起来会困难得多.必须拦截每个出站UDP数据包,然后接收者必须检查它是否已经拥有与数据包的本地/远程元组相关联的自己的SOCKS v5 TCP连接,如果没有,则创建一个新的并发送必要的UDP转发握手,然后封装该元组的每个出站UDP数据包并将其发送到代理的出站IP /端口,并从代理接收该元组的每个匹配的入站UDP数据包,以便将其解封装并转发到应用程序的本地IP /端口发出原始出站UDP数据包.由于UDP是无连接的,因此接收器必须在其与代理的SOCKS v5 TCP连接上实现超时机制,以便最终在UDP流量空闲一段时间后关闭.
与TCP相比,UDP接收器做的工作要多得多.
这仅适用于SOCKS.HTTP/FTP代理根本不支持UDP(因为HTTP/FTP是基于TCP的协议).还有其他隧道/代理协议,可能有也可能没有UDP功能.
因此,您必须检查proxifier工具的功能,以确定它是否支持UDP.