Подключение к VPN через OpenVPN 3 на NixOS
Введение#
NixOS отличается декларативным подходом к управлению системой: любые изменения в конфигурации описываются в файлах и применяются через пересборку системы. Это особенно удобно при настройке сетевых сервисов, включая VPN.
В этой статье мы рассмотрим, как:
- включить поддержку OpenVPN 3 в NixOS;
- подключить необходимые модули ядра;
- настроить DNS-резолвер;
- запускать VPN-сессии из консоли с поддержкой DCO (Data Channel Offload);
- проверять активные подключения.
Все примеры обезличены: имена конфигурационных файлов и IP-адреса заменены на нейтральные.
Подготовка системы#
Для начала необходимо включить соответствующие компоненты в конфигурации NixOS (configuration.nix или подключаемый модуль).
Добавим:
- модуль ядра для VPN;
- пакет
openvpn3; - системный сервис OpenVPN 3;
systemd-resolvedдля корректной работы DNS.
Пример конфигурации:
boot.kernelModules = [ "ovpn" ];
environment.systemPackages = with pkgs; [
openvpn3
];
programs.openvpn3.enable = true;
services.resolved.enable = true;
После внесения изменений пересобираем систему:
sudo nixos-rebuild switch
Запуск VPN-сессии#
Когда система обновлена, можно запускать VPN-подключение напрямую из консоли.
Предположим, что у нас есть конфигурационный файл:
client_tcp.ovpn
Запускаем сессию с включённым DCO:
sudo openvpn3 session-start \
--config client_tcp.ovpn \
--dco=true
В ответ утилита выведет ссылку для браузера, по которой необходимо пройти для авторизации (если используется SSO или веб-аутентификация). После успешного входа соединение будет установлено. Проверка активных сессий
Чтобы увидеть список текущих VPN-подключений, используем:
sudo openvpn3 sessions-list
Пример вывода:
-----------------------------------------------------------------------------
Path: /net/openvpn/v3/sessions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Created: 2026-01-22 16:54:05 PID: 123456
Owner: root Device: tun0
Config name: client_tcp.ovpn (Config not available)
Connected to: tcp:203.0.113.10:443
Status: Connection, Client connected
-----------------------------------------------------------------------------
Здесь можно увидеть:
- путь к объекту сессии в D-Bus;
- время создания;
- PID процесса;
- сетевой интерфейс (tun0);
- имя конфигурации;
- адрес сервера;
- текущий статус подключения.
Полезные команды#
Остановить конкретную сессию можно по её пути:
sudo openvpn3 session-manage \
--path /net/openvpn/v3/sessions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
--disconnect
Показать детальную информацию:
sudo openvpn3 session-stats \
--path /net/openvpn/v3/sessions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Заключение#
Использование OpenVPN 3 в NixOS хорошо вписывается в декларативную модель системы:
- пакеты и сервисы подключаются через конфигурацию;
- изменения применяются атомарно;
- управление сессиями выполняется через удобный CLI.
Включение DCO позволяет получить дополнительный прирост производительности, а systemd-resolved упрощает работу с DNS внутри туннеля.
Такой подход подойдёт как для рабочих станций, так и для серверов, где требуется воспроизводимая и прозрачная настройка VPN-доступа.