Пакет socks для Node использует для UDP экземпляр SocksClient с command: 'associate'. Его удобная фабрика SocksClient.createConnection() вместо этого обрабатывает TCP CONNECT.

Пример ассоциации в проекте объединяет клиент SOCKS с отдельным локальным UDP-сокетом:

  1. Установите UDP ASSOCIATE и сохраните его управляющее TCP-соединение.
  2. Прочитайте хост и порт ретранслятора, которые возвращает сервер.
  3. Используйте createUDPFrame(), чтобы обрамлять исходящие данные адресом назначения.
  4. Отправьте датаграммы ретранслятору, затем применяйте parseUDPFrame() к входящим кадрам ретранслятора, прежде чем передавать данные приложению.

Сокет dgram в Node обеспечивает транспорт UDP; он не интерпретирует адрес SOCKS. Ассоциация и обрамление обеспечивают протокол прокси вокруг этих датаграмм.

Сервер должен поддерживать UDP, а конечная точка ретранслятора должна быть доступна. Успешное TCP-соединение с начальным портом прокси не проверяет этот путь. Закрывайте управляющие ресурсы и ресурсы UDP, когда ассоциация больше не нужна.

Похожие статьи