Есть ли тайм-аут для UDP в SOCKS5? - PullRequest
0 голосов
/ 18 ноября 2018

Недавно я создал сервер SOCKS55 из кода https://github.com/postageapp/ss5 и попытался установить этот сервер в качестве прокси-сервера для аудиочата, который реализован с использованием сокета UDP. Однако UDP-соединения прекращались каждый раз, когда я пытался использовать этот прокси-сервер. Мой запрос UDP ASSOCIATE хорош и работает хорошо. Большинство протестированных приложений аудио-чата могут нормально работать при прокси на моем сервере SOCKS5, но они прерываются примерно через 60 секунд. Файл журнала этого сервера SOCKS5 показывал мне только одну строку: "UDP ASSOCIATE" TERMINATED 0 0 60 (36.157.*.*:36314 -> 119.23.*.*:23333). Похоже, что для UDP-разговоров по протоколу SOCKS5 существует настройка времени ожидания. Кто-нибудь знает что-нибудь об этом?

1 Ответ

0 голосов
/ 18 ноября 2018

SOCKS5 само по себе не определяет тайм-аут для UDP. Но, учитывая, что в UDP нет явного закрытия соединения, такого как TCP, единственный способ «закрыть» соединение UDP - это не отправлять больше данных. Это означает, что для освобождения ресурсов, удерживаемых прокси-сервером SOCKS5, необходимо реализовать какое-то время простоя, после которого соединение закрывается.

На самом деле, глядя на исходный код можно увидеть:

#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, даже не используя его.

...