У меня возникла проблема с запуском 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.