我最近用https://github.com/postageapp/ss5的代码构建了一个SOCKS55服务器,并尝试将该服务器设置为音频聊天的代理服务器,该服务器通过UDP套接字实现。但是,每次尝试使用此代理服务器时,UDP连接都会断开。我的UDP ASSOCIATE请求很好并且运行良好。经我的SOCKS5服务器代理后,大多数经过测试的音频聊天应用程序都可以正常运行,但是它们会在60秒左右被打断。该SOCKS5服务器的日志文件只显示了一行:"UDP ASSOCIATE" TERMINATED 0 0 60 (36.157.*.*:36314 -> 119.23.*.*:23333)
。似乎有一个针对SOCKS5协议的UDP会话的超时设置。有人知道吗?
答案 0 :(得分:0)
SOCKS5本身没有为UDP定义超时。但是,鉴于UDP没有像TCP这样的显式连接关闭,“关闭” UDP连接的唯一方法是不再发送任何数据。这意味着为了释放SOCKS5代理所拥有的资源,它需要实现某种空闲超时,然后关闭连接。
实际上,looking at the source code可以看到:
#define UDP_TIMEOUT 60 /* Seconds */
我找不到任何配置选项来更改此超时,因此更改此超时的唯一方法可能是更改源代码并重新编译。
经过测试的大多数音频聊天应用程序在被我的SOCKS5服务器代理时都可以正常运行,但是它们会在60秒钟左右被中断...
"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的通道。