OpenVPN под Windows, 2023й год

Feb 28, 2023 23:17


Расчехлил ненадолго свою виндовую виртуалку поглядеть как обстоят дела с последними OpenVPN под форточками.

На момент написания этого поста актуальная версия OpenVPN 2.6.0. В ней доступны три разных драйвера виртуального TUN-интерфейса на выбор: "классический", "улучшенный" (от WireGuard) и DCO (Data Channel Offload).

Самый "типа быстрый" - это DCO. Но на него наложен ряд ограничений, про который я упоминал в одном из предыдущих постов. Помимо прочего, в Windows оный не поддерживает серверный режим (директива "server" в конфиге). Мол, нефиг на шиндошс (windows) OpenVPN-сервер поднимать, по мнению авторов это какой-то изврат (с чем я отчасти согласен).

Этот самый DCO включается автомагически если демон не обнаружит никаких препятствий для его использования. В противном случае будет активирован "обычный классический лоховский" TUN-адаптер.

Что касается "улучшенного". Для меня как рядового админа, не гоняющего терабайты трафика через этот самый OpenVPN, самой ценной его фишкой является то, что он представляется системе как 100-гигабитный. Почему это важно? Потому что ему автоматически на этом основании назначается метрика с минимальным значением. И система начинает ресолвить DNS-имена только через него. Это очень сильно помогает, когда нужен нормальный Split DNS. Например, если есть некий "честный" домен с "честным" X509-сертификатом, который "снаружи" должен разрешаться в белый адрес, а "изнутри" в серый. Вот этот фокус с якобы 100-гигабитной скоростью подключения одним махом снимает просто колоссальное количество проблем с конченными пользователями. Ниже скриншотик в качестве иллюстрации.




Для включения такого "продвинутого" 100-гигабитного TUN-адаптера нужно в конфиге OpenVPN явно задавать директиву "windows-driver wintun". При работе под другими операционными системами демон выдаст ошибку в случае наличия такой строки.

Что касается DCO-адаптера, то он прикидывается "обычным гигабитным". В случае, если в системе присутствуют и другие гигабитные Ethernet-сетевухи, заранее неизвестно какая из них схватит меньшую метрику. Поэтому проблема со Split DNS остается. И если она возникает, то есть доменные имена продолжают разрешаться через "внешние" DNS-сервера несмотря на подключенный VPN, то приходится разруливать это всё лапками путём выставления нужной метрики на каждом интерфейсе в настройках операционной системы. Ниже скриншотик в качестве иллюстрации.




Также ещё стоит отметить, что энное количество директив в OpenVPN 2.6.0 признаны устаревшими (obsolete) и перестали работать. Поэтому "в лоб" перенести конфиг от предыдущей мажорной версии (2.5) в некоторых отдельных случаях может и не получиться.

Моё мнение? Переходить на версию 2.6.0 однозначно имеет смысл. Но для "обычных" конченных windows-пользователей лучше всё-таки использовать "windows-driver wintun" от WireGuard, а не DCO. Прироста производительности от аппаратного offload-а в будничных рабочих условиях всё равно никто не заметит, а вот избежание проблем со Split DNS за счёт 100-гигабитного TUN-интерфейса в заметном количестве случаев оказывается как нельзя кстати.

Всем удобных VPN-ов и быстрых провайдеров.

сети, windows, openvpn

Previous post Next post
Up