Назад | Перейти на главную страницу

Https-туннель для передачи TCP- и UDP-пакетов

У меня возникла проблема с запуском Openvpn через UDP в моем колледже сеть. Брандмауэр сбрасывал UDP-соединения. Поскольку http и https работали нормально и предполагая, что брандмауэр проверяет заголовок пакета, я попытался запустить Openvpn через туннель https, используя станнель. Мне не удалось, потому что Openvpn использовал UDP. Итак, я получил openvpn для использования TCP, и это сработало. Но позже я обнаружил, что брандмауэр разрешал все TCP-соединения (и не вставлял заголовки пакетов), и я смог запустить Openvpn без туннеля https.

Мой вопрос: почему Openvpn не работал через туннель https, когда использовался протокол UDP? и почему он работал с TCP через тот же туннель https? Разве это не пакеты TCP, которые передают трафик https, а не https, передающие пакеты TCP или UDP? Чтобы задать свой вопрос по-другому: по умолчанию https запускается через TCP, так почему https должен поднимать шум (поскольку он просто создает транзитный туннель), когда он предназначен для передачи пакетов UDP, а не TCP?

Я собираюсь рискнуть и угадаю, поскольку детали вашей конфигурации не обсуждаются ...

Если вы просто указали OpenVPN на порт stunnel, а OpenVPN использовал UDP, но stunnel использовал TCP, они никогда не подключатся. Конечная точка сети определяется IP-адресом, портом и протокол. Если у вас было прослушивание stunnel (127.0.0.1, 4430, tcp) и OpenVPN пытался подключиться к (127.0.0.1, 4430, udp), он не смог бы подключиться к stunnel.

Я не вижу, что stunnel имеет какие-либо параметры для работы UDP, так что это должно быть то, что произошло. Это соответствует тому, что вы сказали о том, как это работало, когда вы переключили OpenVPN на TCP.

UDP и TCP - это совершенно разные протоколы, использующие разные API. Таким образом, вы не можете просто поменять их местами, производители и потребители должны быть написаны специально для протокола. Можно было бы проксировать UDP через SSL, но для этого потребуется специальное программное обеспечение для туннелей. Я не знаю ни одного, который поддерживает это.

Из FAQ по stunnel:

Могу ли я пересылать службы UDP через stunnel?

Как уже было сказано, нет. Stunnel работает с SSL, который работает только по TCP. Есть способы пересылки пакетов UDP через TCP, и в принципе они должны работать через stunnel.

SSL - это протокол, ориентированный на соединение, а UDP - без установления соединения. Поэтому вы не можете пересылать udp по TCP.