Нульова адреса UDP ASSOCIATE в Indy — не ціль дейтаграми
Розділяйте адресу клієнтської асоціації, повернутий релей SOCKS і ціль, закодовану в кожному UDP-пакеті.
0.0.0.0:0 у запиті Indy UDP ASSOCIATE може бути навмисним. Запит описує очікувану UDP-точку на боці клієнта, і RFC 1928 дозволяє нулі, коли вона невідома. Він не вибирає кінцеву службу.
BND.ADDR/BND.PORT у відповіді вказують релей, на який клієнт надсилає інкапсульовані дейтаграми.
TCP control: client → SOCKS5 proxy → UDP association reply
UDP payload: client → returned relay address → target serviceУ Indy TIdUDPClient.Connect викликає OpenUDP прозорого проксі. TIdSocksInfo надає поля нульової асоціації. Пізніше SendBuffer передає потрібну службу в SendToUDP, який будує заголовок призначення SOCKS UDP перед даними застосунку.
Якщо асоціація успішна, але трафік не йде, перевірте повернутий релей, закодоване призначення та шлях відповіді UDP. NAT/міжмережеві екрани можуть пропускати обмін TCP, блокуючи UDP.
Тримайте керівне з'єднання TCP відкритим; його закриття завершує асоціацію. SOCKS4/4a не мають цієї операції, і сама назва SOCKS5 не гарантує, що сервер підтримує UDP.