OpenVPN на Ubuntu Desktop: клиент через NetworkManager
На Ubuntu Desktop OpenVPN-клиент почти никогда не запускают отдельным демоном из терминала — для этого есть встроенный аплет NetworkManager в правом верхнем углу. Импортировали .ovpn, ввели логин, кликнули по значку сети — и всё, туннель поднят, а после перезагрузки подключение восстанавливается само. Но у этого удобства есть цена: часть директив из конфига NetworkManager просто не понимает и молча их отбрасывает, а стандартный apt-пакет плагина местами отстаёт от актуальной ветки OpenVPN. Разберём установку, импорт готового профиля с сервера и грабли, которые всплывают именно в графическом клиенте, а не в консольном.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Установка плагина network-manager-openvpn
Сам NetworkManager в Ubuntu Desktop стоит из коробки, но поддержку протокола OpenVPN он получает только через отдельный плагин — без него в списке типов VPN-соединения OpenVPN просто не появится.
sudo apt update
sudo apt install network-manager-openvpn network-manager-openvpn-gnome
Второй пакет — это конкретно GUI-часть для GNOME (диалоги импорта, вкладки настроек в панели «Сеть»). Без него плагин формально работает, но настраивать соединение придётся через nmcli, а не через привычные окна. На чистом GNOME-окружении (стандартный рабочий стол Ubuntu Desktop с 22.04 и позже) ставьте оба пакета сразу.
После установки NetworkManager нужно перезапустить, иначе новый плагин не подхватится до следующей перезагрузки:
sudo systemctl restart NetworkManager
Проверить, что плагин установился и виден системе, можно так:
nmcli connection import --help 2>&1 | grep -i openvpn
dpkg -l | grep network-manager-openvpn
Отдельный нюанс версий: пакет из стандартных репозиториев Ubuntu обычно отстаёт от последнего релиза OpenVPN на несколько минорных версий. Для большинства серверных конфигов разницы не заметно, но если сервер требует новые шифры, стоит свериться с версией: openvpn --version и apt-cache policy network-manager-openvpn.
Импорт .ovpn через графический интерфейс
Есть два пути добавить профиль — через системные настройки или через сам файл в файловом менеджере. Оба ведут в один и тот же диалог.
Через «Параметры»:
- Откройте
Параметры системы→Сеть. - Рядом с разделом VPN нажмите
+(добавить соединение). - В списке типов выберите
Импортировать из файла.... - Укажите путь к
.ovpn-файлу от вашего сервера.
Через файловый менеджер (Nautilus): если оба пакета плагина установлены, двойной клик по .ovpn-файлу в Nautilus сам предложит открыть его как VPN-соединение — это быстрее, чем идти через меню настроек, особенно если файл только что скачан из личного кабинета.
После импорта откроется окно с параметрами соединения — не закрывайте его сразу «как есть», часть значений стоит проверить руками:
- Шлюз (Gateway) — адрес или домен сервера, подставляется автоматически из директивы
remoteв файле. - Тип аутентификации — если конфиг требует сертификаты (
ca,cert,key) без пароля, выберитеСертификаты (TLS). Если сервер настроен на логин/пароль поверх сертификата CA (директиваauth-user-pass), нужен пункт `Пароль с сертификатом TLS». - Вкладка «Дополнительно» — здесь стоит заглянуть в блок TLS-аутентификации: если в
.ovpnесть секция<tls-auth>или<tls-crypt>, NetworkManager обычно подтягивает её сам при импорте единого файла, но при импорте конфига с внешними файлами сертификатов путь нужно указать вручную.
Если конфиг собран «единым файлом» — сертификаты, ключ и tls-auth/tls-crypt вставлены прямо блоками <ca>...</ca>, <cert>...</cert>, <key>...</key> внутри самого .ovpn — импорт проходит без дополнительных действий практически всегда. Если же файл ссылается на сертификаты по относительным путям (ca ca.crt, cert client.crt), а сами файлы лежат отдельно — перед импортом либо соберите единый конфиг, либо держите все файлы в одной папке с .ovpn и импортируйте через терминал (см. ниже), где относительные пути резолвятся предсказуемее, чем в GUI-диалоге.
Арендуйте сервер под свои задачи!
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНастройка через nmcli как альтернатива GUI
Графический импорт удобен, но иногда надёжнее провести его через терминал — особенно если конфиг с относительными путями к сертификатам или нужно воспроизвести настройку скриптом на нескольких машинах.
nmcli connection import type openvpn file /home/user/client.ovpn
Команда создаёт соединение с именем, взятым из имени файла. Проверить, что оно появилось и с какими параметрами:
nmcli connection show
nmcli connection show "client" | grep vpn
Если нужно подставить логин и пароль без ручного ввода в GUI при каждом подключении (например, для машины, которая должна поднимать VPN ещё до входа пользователя в систему):
nmcli connection modify "client" vpn.user-name "ваш_логин"
nmcli connection modify "client" vpn.data "connection-type=password-tls,...,password-flags=0"
Пароль в открытом виде через nmcli modify лучше не хранить в истории shell — используйте nmcli connection edit "client" в интерактивном режиме, там пароль вводится отдельным запросом и не попадает в ~/.bash_history.
Подключение и отключение из терминала:
nmcli connection up "client"
nmcli connection down "client"
Статус и лог NetworkManager при подключении смотрите через journalctl — это единственное место, где реально видно, на каком этапе застрял туннель, потому что GUI-аплет обычно показывает только «Подключение...» или сухую ошибку без деталей:
journalctl -u NetworkManager -f
Автоподключение при старте и восстановление после разрыва
По умолчанию NetworkManager не поднимает VPN-соединение автоматически при загрузке системы — только вручную через переключатель в меню сети. Включить автоподключение можно двумя способами.
Через GUI: в окне редактирования соединения (Параметры → Сеть → шестерёнка рядом с VPN-профилем) включите тумблер Подключаться автоматически. Там же можно ограничить автоподключение конкретным Wi-Fi (например, поднимать VPN только вне доверенной домашней сети).
Через терминал — то же самое, но воспроизводимо скриптом:
nmcli connection modify "client" connection.autoconnect yes
Отдельная тонкость: автоподключение VPN-профиля привязано к сетевому событию (появилось активное соединение — поднимается VPN поверх него), а не к загрузке системы напрямую. На десктопе с проводным подключением, которое поднимается медленнее графической сессии, VPN иногда пытается стартовать раньше основной сети и падает с таймаутом при первой попытке. NetworkManager обычно ретраит подключение сам — если нет, включите connection.autoconnect-retries явно:
nmcli connection modify "client" connection.autoconnect-retries 3
Автоматическое переподключение при разрыве (сон/пробуждение ноутбука, смена сети) NetworkManager делает сам, пока включён autoconnect — заново вводить пароль не потребуется, если он сохранён в связке ключей GNOME (Keyring) при первом подключении.
Директивы .ovpn, которые NetworkManager не понимает
Это главная причина, по которой рабочий на консольном клиенте конфиг иногда не запускается или ведёт себя иначе через GUI. Плагин NetworkManager реализует не весь набор директив OpenVPN — он ориентирован на типовые клиентские сценарии, а не на полную гибкость конфига.
Директивы, которые часто вызывают проблемы при импорте:
script-securityи любыеup/down-скрипты — NetworkManager их игнорирует полностью, выполнение произвольных скриптов из импортированного файла не предусмотрено из соображений безопасности. Если логика VPN завязана на кастомные скрипты — GUI-клиент не подойдёт, нужен классическийopenvpnиз терминала как systemd-сервис.- Нестандартные / устаревшие директивы шифрования (
cipherсо значениями вне современного списка,ncp-disableв старых конфигах) — плагин может тихо подставить свою логику согласования шифра вместо буквального следования файлу. - Сложные маршруты через
routeс нестандартными метриками или несколькимиroute-up— базовые директивы импортируются нормально, специфичное лучше проверить во вкладкеIPv4→Маршрутывручную. redirect-gatewayс нетиповыми флагами — базовыйredirect-gateway def1работает как ожидается, но проверьте галочкуИспользовать это соединение только для ресурсов в его сетиво вкладкеIPv4— если она случайно отмечена, весь остальной трафик пойдёт мимо VPN.
Практический вывод: для конфига без экзотики (сертификаты, обычный redirect-gateway, стандартные route) GUI-импорт — самый быстрый и надёжный путь. Для нестандартных сценариев со скриптами up/down разумнее сразу ставить консольный OpenVPN как сервис — так и заводится сервер на Ubuntu 24.04, тот же принцип годится для десктопа, если GUI-клиент не тянет.
Типичные ошибки GUI-клиента и их причины
Значок VPN в трее крутится, но соединение не устанавливается. Чаще всего — неверно определённый тип аутентификации при импорте: GUI выбрал «Сертификаты (TLS)», а сервер требует ещё и логин/пароль поверх сертификата (или наоборот). Откройте настройки соединения и проверьте вкладку Аутентификация — тип должен совпадать с тем, что реально настроено на сервере. Общая логика диагностики TLS-проблем разобрана в статье про TLS handshake failed в OpenVPN — она написана для консольного клиента, но причины совпадают, только смотреть лог нужно через journalctl -u NetworkManager, а не напрямую вывод openvpn.
Соединение зелёное («подключено»), но интернет не открывается. Обычно redirect-gateway не применился как ожидалось — либо из-за галочки «только для ресурсов в его сети» во вкладке IPv4, либо из-за конфликта с уже активным маршрутом по умолчанию (второй VPN, Docker-сеть с похожей подсетью). Проверьте таблицу маршрутов после подключения:
ip route show
Если строки 0.0.0.0/0 через VPN-интерфейс нет — редирект не сработал, дело в настройках IPv4 профиля. Подробный разбор причин и команд диагностики — в статье OpenVPN подключается, но нет сети.
Пароль не сохраняется между сессиями. GNOME Keyring должен быть разблокирован (обычно совпадает с паролем входа в систему), иначе NetworkManager каждый раз просит пароль заново, даже если галочка «Запомнить пароль» стояла при вводе. Если система настроена на автовход без пароля, Keyring может вообще не разблокироваться автоматически — тогда сохранённый пароль VPN недоступен до ручного ввода пароля Keyring один раз за сессию.
После обновления Ubuntu профиль VPN пропал или сломался. При мажорном обновлении релиза формат хранения некоторых VPN-профилей мигрирует не полностью, особенно если конфиг был создан очень старой версией плагина. Самое надёжное — переимпортировать .ovpn-файл заново, а не чинить существующий профиль вручную.
Ошибка аутентификации при заведомо верном логине. Иногда виновата не связка логин/пароль, а устаревший кэш сертификата после повторного импорта файла с тем же именем — NetworkManager не всегда полностью перезаписывает старые данные. Удалите профиль полностью (nmcli connection delete "client") и импортируйте заново. Более широкий разбор причин — в статье про ошибку аутентификации в OpenVPN.
Арендуйте сервер под свои задачи!
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Нужен ли отдельный пакет openvpn, если стоит network-manager-openvpn?
Да, плагин — это обвязка, сам протокол реализует пакет openvpn, apt обычно подтягивает его как зависимость автоматически, но если импорт не удаётся — проверьте dpkg -l | grep '^ii.*openvpn' явно.
Можно ли держать несколько VPN-профилей одновременно в NetworkManager?
Добавить — можно сколько угодно, но активным одновременно имеет смысл держать только один: два поднятых VPN-туннеля начинают спорить за таблицу маршрутизации и DNS, поведение непредсказуемо.
Работает ли split-tunneling через NetworkManager GUI?
Да, во вкладке IPv4 → Маршруты можно добавить конкретные подсети вместо redirect-gateway, либо снять флажок «Использовать это соединение только для ресурсов в его сети» для обратной логики.
Почему в списке типов VPN нет пункта OpenVPN вообще?
Значит, network-manager-openvpn-gnome не установлен или NetworkManager не был перезапущен после установки — оба шага обязательны, одной установки пакета недостаточно.
Как проверить, что DNS реально уходит через туннель, а не мимо?
GUI-клиент это не показывает — нужна отдельная проверка, описанная в статье про DNS leak и его закрытие.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →