Куда деваться с OpenVPN
klink0v — 17.06.2025
Был такой хороший клиент для предоставления доступа в корпоративную сеть под названием OpenVPN. Почему "был"? Потому что в версии 2.7 его испохабили. Но обо всём по порядку. Почему эта софтина в принципе заслуживала внимания.
- Кросплатформенная: есть подо всё, включая мобильники и прасти хоспади огрызки.
- Позволяет "спускать" (push) с сервера на клиента всевозможные настройки включая search domains, static routes и разные другие.
- Гибкая конфигурация для каждого клиента при помощи ccd (client config directory).
- Умеет в Radius и во второй фактор (2FA) путём подключения сторонних сервисов.
- Поддерживает разные режимы (TCP / UDP), всякие фрагментации пакетов, защиту контрольного канала при помощи TLS-Crypt и прочие полезности.
- Замах на кровавый энтерпрайз: можно автомагически загружать конфигурацию в клиента при помощи скармливания ему определенного URL-а.
- Быстродействие: с появлением DCO стал работать совсем шустро.
Еще в Linux-е при интеграции OpenVPN + Systemd-Resolved + NetworkManager можно делать прям "полноценный" Split DNS на уровене клиента, когда определенные домены ресолвятся через тоннель, а все остальные — "как обычно". Причём настраивается это минимальными усилиями.
Теперь о грустном.
Во-первых, разработчики официально объявили, что они не позволят вносить никаких изменений / дополнений в протокол. Что делает его бесполезным в современных условиях в России / Китае / арабских странах и некоторых других. Во-вторых, обмен ключами идет по тому же самому каналу, что и Payload. А это значит, что UDPшное TLS-рукопожатие легко обнаруживается по характерным таймингам, а по TCP "основное" соединение работает медленно и печально. В-третьих, в версии 2.7 они выпилили WinTun-адаптер, что сразу добавляет проблем под форточками.
Почему это важно? Потому что форточки берут DNS-сервер из того соединения, у которого наименьшая метрика. А наименьшая метрика будет у самого скоростного из них. WinTun-адаптер эмулировал скорость 100 ГБит/с, поэтому DNS-сервер всегда брался из WinTun-соединения. "Обычный" же тапок и DCO-адаптер эмулируют скорость 1 ГБит/с и местами начинают конкурировать с "железными" сетевыми картами. Да, есть директива вида «push "block-outside-dns"», которая тупо через WFP отрезает udp:53 внаружу. Если конечно пользователь не отключил этот WFP или не понаставил себе каких-нибудь там касперских.
Но и это ещё не всё. Если хочется использовать директивы наподобие "fragment", то под форточками они не позволяют включать DCO-адаптер. То есть мы откатываемся к классическому тормозному "тапку".
Далее. Когда виндовый клиент включает OpenVPN, то в тоннель уходят либо все его DNS-запросы, либо никакие. Чего-то промежуточного не бывает. Если "никакие", то становится неудобно шариться по внутрикорпоративным ресурсам. Если "все", то это ломает механизмы географической оптимизации. Т.е. тебе начинают предлагать не ближайший к тебе CDN-ресурс, а тот который ближе к корпоративному DNS-серверу. Иногда он может оказаться о-о-о-очень далеко.
Резюмируя, у OpenVPN под Windows есть две большие проблемы: DNS и характерный яркий TLS.
С другой стороны, я недавно столкнулся с последними версиями Cisco AnyConnect и слегонца подывился. У него обмен ключами происходит через самый обычный HTTPS. А дальнейший payload идет через DTLS, т.е. поверх UDP. То есть мы сразу убираем один из двух главных недостатков OpenVPN. Что у него с DNS-ами, я особо не всматривался. Но спускать (push) отдельные статические маршруты точно можно, и 2FA он тоже поддерживает.
Вот я и задумался, а может быть ну его нафиг, этот OpenVPN? Может чего с OpenConnect хорошего сделать получится? Кто-нибудь пробовал?
|
|
</> |
Принципы работы системы поощрений в ресторанах
С Днем рождения, Родина!
Бесценный Бегемот
Всех с праздниками!
Еще один эксперимент
Фабричное училище в Раменском. Московская губерния. 1900 год (фото)
Стройка. Осень 25.
Игры для детей в самолете: топ способов провести перелет спокойно и даже с
Мадуро, конечно, жалко

