Къде стои TLS вътре в OpenVPN и какво променя формата
OpenVPN изпълнява TLS за своя контролен канал в собствената си рамка, така че първите байтове не са уеб ръкостискане. Три опции наистина променят това, което се вижда.
OpenVPN наистина използва TLS и хората обичайно разширяват това до твърдение, което то не издържа: че тунелът следователно изглежда като браузър, който посещава сайт. Първата част е вярна. Втората не е. TLS тук принадлежи на контролен канал, който пътува вътре в собствения контейнер на OpenVPN, редом с канал за полезен товар с напълно различна криптография, така че който инспектира началните байтове, вижда OpenVPN.
Два разговора в един плик
Мислете за сесията като два разговора, които делят един плик. Единият валидира сертификати и извежда ключов материал. Другият шифрова това, което всъщност изпращате, използвайки произведеното от първия.
Пликът е протоколът. Всеки пакет започва с малък заглавен блок, който назовава типа му, и този блок пристига преди всичко друго.
Какво всъщност пристига първо
Заради тази подредба първото нещо по кабела не е TLS запис. Това е заглавният блок на OpenVPN, следван от съдържанието на канала, който блокът обявява. ClientHello съществува там, само че не на нулевия байт. Не е нужно дешифриране, за да се забележи разликата, защото само формата я издава.
Стойностите по подразбиране също имат значение. Потокът е UDP към 1194, освен ако профилът не избере TCP. И в двата случая външният вид е тунел, а не уеб заявка.
Три честни начина да промените формата
TLS терминатор като stunnel приема TLS на порт в двата края и предава дешифрирания поток на OpenVPN локално, така че мрежата вижда TLS към този порт. Протокол, който е TLS от първия байт, се държи по друг начин: съвместимият с AnyConnect обмен, който ocserv реализира, прилича на корпоративния отдалечен достъп, който много мрежи вече очакват. SSTP, който идва с Windows, има същото свойство в друг продукт.
В Linux опцията -w на SSH пренася връзка точка-до-точка вътре в SSH сесия, което е полезно, когато SSH е единственият разрешен протокол. Тя е най-евтината от четирите, ако SSH вече работи от тази мрежа, и най-малко полезна, ако не работи.
Какво не променя никое от тях
Никое от тези не променя до какво може да стигне тунелът. Те не правят блокиран адрес достъпен, не удостоверяват никого и не решават маршрути.
Обвивката също ви струва един компонент. Два слушателя и два конфигурационни файла означават две места за повреда и двете изглеждат еднакво от мястото на потребителя. Предвидете това, преди да приемете една. Сесията остава един дълготраен шифрован поток към една дестинация и обемът и времето ѝ остават видими.
Първо диагностицирайте, после изберете
Затова първо диагностицирайте. Отхвърленият UDP се отговаря с TCP режим, а разпознат подпис — с друг протокол или обвивка. Изборът на инструмент, преди да знаете блокировката, е начинът, по който хората в крайна сметка поддържат три слоя, които се провалят по една и съща причина.
Мрежа, която разрешава само уеб портове, стеснява избора до протокол на базата на TLS на 443. Прилагането на трите наведнъж дава стек, който никой не може да отстрани, затова променете едно нещо и тествайте отново същия поток.
Ако никое не се прилага, точният отговор е, че тази мрежа няма да пренесе тунел за вас. Това е находка, а не провал на усилието. Превъртането през повече опции не отменя политическо решение, взето по-горе.
Една граница стои пред всичко това. Разрешението да пускате тунел в нечия друга мрежа е политически въпрос, решен отделно от това дали механизмът работи. Тези факти обясняват какво вижда наблюдателят и не дават разрешение.