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. Застосування всіх трьох одразу дає стек, який ніхто не зможе налагодити, тому змініть одну річ і повторіть перевірку того ж потоку.

Якщо жоден не підходить, точна відповідь така: ця мережа не понесе тунель для вас. Це знахідка, а не невдача зусиль. Перебирання більшої кількості варіантів не скасовує політичне рішення, ухвалене вище.

Одна межа стоїть перед усім цим. Дозвіл запускати тунель у чужій мережі — питання політики, вирішуване окремо від того, чи працює механізм. Ці факти пояснюють, що бачить спостерігач, і вони не дають дозволу.

Схожі статті