SOCKS5 中的 UDP 是否有超时?
Is there a timeout for UDP in SOCKS5?
最近根据https://github.com/postageapp/ss5的代码搭建了一个SOCKS55服务器,尝试将此服务器设置为语音聊天的代理服务器,使用UDP socket实现。但是,每次我尝试使用此代理服务器时,UDP 连接都会断开。我的 UDP ASSOCIATE 请求很好并且运行良好。大多数测试的音频聊天应用程序在被我的 SOCKS5 服务器代理时可以正常工作,但它们会在大约 60 秒时中断。这个 SOCKS5 服务器的日志文件只显示了一行:"UDP ASSOCIATE" TERMINATED 0 0 60 (36.157.*.*:36314 -> 119.23.*.*:23333)
。 SOCKS5协议的UDP会话好像有超时设置。有人知道吗?
SOCKS5 本身没有为 UDP 定义超时。但是鉴于 UDP 没有像 TCP 那样显式关闭连接,"close" UDP 连接的唯一方法是不再发送任何数据。这意味着为了释放 SOCKS5 代理持有的资源,它需要实现某种空闲超时,之后连接将关闭。
其实looking at the source code一目了然:
#define UDP_TIMEOUT 60 /* Seconds */
我找不到任何配置选项来更改此超时,因此更改它的唯一方法可能是更改源代码并重新编译。
Most audio chat apps tested can work normally when proxied by my SOCKS5 server, but they'll be interrupted at about 60s ...
"UDP ASSOCIATE" TERMINATED 0 0 60 (36.157.*.*:36314 -> 119.23.*.*:23333)
日志消息表明 UDP 关联在 60 秒后终止,没有传输任何类型的数据 - 这是由 60 秒的空闲超时解释的。鉴于您确实在这 60 秒内传输了音频数据,我的猜测是您正在使用 RTP+RTCP(在 SIP、H.323、XMPP、WebRTC 中使用)并且特定应用程序确实通过 RTP 传输音频数据但仅分配RTCP 的通道,而无需使用它。
最近根据https://github.com/postageapp/ss5的代码搭建了一个SOCKS55服务器,尝试将此服务器设置为语音聊天的代理服务器,使用UDP socket实现。但是,每次我尝试使用此代理服务器时,UDP 连接都会断开。我的 UDP ASSOCIATE 请求很好并且运行良好。大多数测试的音频聊天应用程序在被我的 SOCKS5 服务器代理时可以正常工作,但它们会在大约 60 秒时中断。这个 SOCKS5 服务器的日志文件只显示了一行:"UDP ASSOCIATE" TERMINATED 0 0 60 (36.157.*.*:36314 -> 119.23.*.*:23333)
。 SOCKS5协议的UDP会话好像有超时设置。有人知道吗?
SOCKS5 本身没有为 UDP 定义超时。但是鉴于 UDP 没有像 TCP 那样显式关闭连接,"close" UDP 连接的唯一方法是不再发送任何数据。这意味着为了释放 SOCKS5 代理持有的资源,它需要实现某种空闲超时,之后连接将关闭。
其实looking at the source code一目了然:
#define UDP_TIMEOUT 60 /* Seconds */
我找不到任何配置选项来更改此超时,因此更改它的唯一方法可能是更改源代码并重新编译。
Most audio chat apps tested can work normally when proxied by my SOCKS5 server, but they'll be interrupted at about 60s ...
"UDP ASSOCIATE" TERMINATED 0 0 60 (36.157.*.*:36314 -> 119.23.*.*:23333)
日志消息表明 UDP 关联在 60 秒后终止,没有传输任何类型的数据 - 这是由 60 秒的空闲超时解释的。鉴于您确实在这 60 秒内传输了音频数据,我的猜测是您正在使用 RTP+RTCP(在 SIP、H.323、XMPP、WebRTC 中使用)并且特定应用程序确实通过 RTP 传输音频数据但仅分配RTCP 的通道,而无需使用它。