2

Для моего проекта я ищу возможности для VPN с поддержкой только UDP, работающей через TCP (предпочтительно на порту 443 или 80). Я нашел следующее во время некоторых исследований:

  • Это возможно с socat, однако это ненадежно, поскольку UDP-соединение может продолжать передавать трафик, в то время как буфер TCP будет перегружен.
  • Я подозреваю, что это возможно с Secure Socket Funneling (SSF)[1], однако я не уверен, работает ли он на 100% надежно и толкает ли он трафик по TCP или они нашли какой-то способ использовать TLS по UDP (кажется, что путь для меня).

Что касается причины, по которой я хочу, чтобы VPN только для UDP работала по протоколу TCP: различные корпоративные брандмауэры или общегосударственные брандмауэры блокируют трафик UDP на (случайных) портах UDP. Конечно, существуют назначенные порты UDP (скажем, 53 DNS), которые в основном открыты, но действительно легко распознать VPN из обычного трафика на этих портах. Я знаю, как имитировать трафик, но это подразумевает чрезмерную нагрузку на VPN. Протокол, используемый для этого проекта, является WireGuard вместо OpenVPN, где TCP-fallback является встроенным.

Насколько я знаю, не существует хороших (надежных) методов для упаковки трафика UDP в TCP. Это правда, и если да, есть ли другие методы, которые могли бы достичь моей цели?

[1] https://securesocketfunneling.github.io/ssf/#home

1 ответ1

0

Я не могу помочь вам с прямым ответом, но вы можете найти хорошую информацию в источниках ниже.

Zebedee (с открытым исходным кодом с 2005 года)

Zebedee - это простая программа для создания зашифрованного сжатого «туннеля» для передачи данных по протоколам TCP/IP или UDP между двумя системами. Это позволяет защитить трафик, такой как telnet, ftp и X, от отслеживания, а также потенциально повысить производительность в сетях с низкой пропускной способностью от сжатия.

Некоторая дополнительная информация может быть найдена здесь.

udptunnel

Это доступно в виде пакета Linux (ссылка на Debian).

Его источник находится на GitHub, где он описывается как:

Этот проект туннелирует данные TCP через туннель UDP. Исполняемый файл может выступать в роли сервера или клиента. Сервер действует как прокси для клиента, прослушивая указанный порт UDP и создавая соединение с сервером TCP, который указывает клиент. Клиент прослушивает порт TCP, выступая в роли сервера, к которому подключается какой-либо клиент TCP. Клиент получает все данные TCP через этот порт и отправляет данные на сервер udpserver, который отправляет их на соединение TCP, которое он установил с нужным сервером TCP.

Просто отметим, что UDP-пакеты, проходящие через VPN-туннель на основе TCP, имеют гарантированную доставку только для TCP-части их общего маршрута. На участках общего пути за пределами VPN-туннеля на основе TCP может произойти потеря пакетов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .