LinuxRuLinux без лишней теории
Сеть и приватность

VPN в Linux: подключаем OpenVPN, WireGuard и AmneziaWG без лишних программ

Редакция LinuxRu8 мин чтенияИнструкции

VPN в Linux подключается штатными средствами: файл .ovpn или .conf импортируется в NetworkManager одной командой nmcli, а для AmneziaWG есть модуль ядра и awg-quick. Если вам выдали ключ vpn://, поставьте клиент AmneziaVPN из .run-файла. После подключения обязательно проверьте внешний IP и DNS, иначе запросы могут идти мимо туннеля.

VPN в Linux: подключаем OpenVPN, WireGuard и AmneziaWG без лишних программ
Фото: Zuzu, CC BY-SA 3.0, Wikimedia Commons
Содержание
  1. Какой протокол
  2. OpenVPN
  3. WireGuard
  4. AmneziaWG
  5. AmneziaVPN
  6. Весь трафик или часть
  7. Утечки DNS
  8. Не подключается
  9. Частые вопросы

Какой VPN-протокол выбрать в Linux

Linux умеет работать с любым распространённым VPN, вопрос только в том, что выдал вам провайдер или администратор. Обычно это файл .ovpn для OpenVPN, файл .conf для WireGuard или AmneziaWG, либо ключ vpn:// для приложения AmneziaVPN.

ВариантЧто получаете от сервераЧем подключатьсяОсобенности
OpenVPNфайл .ovpn, иногда логин и парольNetworkManager или openvpnработает почти везде, медленнее WireGuard
WireGuardфайл .confNetworkManager или wg-quickмодуль в ядре, быстрый, легко узнаётся по трафику
AmneziaWGфайл .conf с параметрами Jc, S1, H1awg-quick или AmneziaVPNWireGuard с маскировкой пакетов
AmneziaVPNключ vpn:// или свой серверприложение AmneziaVPNграфический клиент, несколько протоколов

В России у части провайдеров соединения OpenVPN и обычного WireGuard определяются по характерным пакетам и обрываются. Если туннель поднимается, а через несколько секунд трафик перестаёт идти, а с другого интернета всё работает, причина скорее в фильтрации, чем в настройках. Тогда переходите на AmneziaWG или протоколы с маскировкой в AmneziaVPN.

Эта статья про клиентскую сторону. Как поднять собственный сервер WireGuard дома, разобрано в отдельном материале про WireGuard для доступа к домашней сети.

OpenVPN в Ubuntu и других дистрибутивах через NetworkManager

NetworkManager умеет OpenVPN через плагин. В KDE Plasma плагин подхватывается апплетом сети автоматически, в GNOME нужен пакет с суффиксом gnome:

# Ubuntu 26.04, Debian 13, Linux Mint
sudo apt install network-manager-openvpn network-manager-openvpn-gnome
# Fedora 44
sudo dnf install NetworkManager-openvpn NetworkManager-openvpn-gnome
# Arch Linux
sudo pacman -S networkmanager-openvpn

После установки перезапустите NetworkManager или выйдите из сеанса. Импорт через графику: Настройки, Сеть, плюс у раздела VPN, "Импортировать из файла". Из терминала то же самое делается одной командой:

nmcli connection import type openvpn file ~/Загрузки/client.ovpn
nmcli connection show
# подключиться с запросом логина и пароля
nmcli --ask connection up client
nmcli connection down client

Имя соединения берётся из имени файла. Если сертификаты лежат рядом с .ovpn отдельными файлами, не переносите их после импорта: NetworkManager хранит пути, а не копии.

Без NetworkManager

На сервере или в минимальной системе удобнее штатная служба OpenVPN. Конфиг кладётся в /etc/openvpn/client/ с расширением .conf, и имя файла становится именем экземпляра службы:

sudo apt install openvpn
sudo cp client.ovpn /etc/openvpn/client/work.conf
sudo systemctl enable --now openvpn-client@work
journalctl -u openvpn-client@work -f

Для разовой проверки подойдёт sudo openvpn --config client.ovpn: лог идёт прямо в терминал, остановка по Ctrl+C.

WireGuard: импорт .conf в NetworkManager или wg-quick

Поддержка WireGuard встроена в ядро и в NetworkManager, дополнительный плагин не нужен. Нужен только пакет с утилитами: wireguard-tools в Fedora и Arch, wireguard в Ubuntu и Debian.

sudo nmcli connection import type wireguard file ~/Загрузки/wg0.conf
# не подключаться автоматически при входе в систему
nmcli connection modify wg0 connection.autoconnect no
nmcli connection up wg0
sudo wg show

Имя интерфейса и соединения совпадает с именем файла, поэтому переименуйте файл до импорта во что-то понятное, например office.conf. Имя не длиннее 15 символов, без пробелов.

Второй путь - wg-quick, он читает тот же формат:

sudo cp office.conf /etc/wireguard/
sudo wg-quick up office
sudo wg-quick down office
# автозапуск при загрузке
sudo systemctl enable wg-quick@office

Ошибка resolvconf: command not found при старте wg-quick значит, что в конфиге есть строка DNS, а утилиты resolvconf в системе нет. В Debian поставьте openresolv или подключайтесь через NetworkManager, который сам настраивает DNS.

AmneziaWG без приложения: модуль ядра и awg-quick

AmneziaWG - форк WireGuard, который добавляет мусорные пакеты в начало сессии и меняет заголовки, чтобы трафик не совпадал с сигнатурой WireGuard. Конфиг выглядит почти так же, но в секции Interface появляются строки Jc, Jmin, Jmax, S1, S2, H1-H4. Обычный wg-quick и NetworkManager такой файл не поймут.

Установка модуля ядра и утилит awg и awg-quick по инструкции из репозитория amnezia-vpn:

# Ubuntu и Linux Mint
sudo apt install software-properties-common python3-launchpadlib gnupg2 linux-headers-$(uname -r)
sudo add-apt-repository ppa:amnezia/ppa
sudo apt install amneziawg
# Fedora
sudo dnf copr enable amneziavpn/amneziawg
sudo dnf install amneziawg-dkms amneziawg-tools

Для Arch в AUR есть пакеты amneziawg-dkms и amneziawg-tools. Модуль собирается через DKMS, поэтому при обновлении ядра нужны заголовки новой версии.

sudo awg-quick up /полный/путь/amnezia.conf
sudo awg show
sudo awg-quick down /полный/путь/amnezia.conf

Параметры Jc, S1, S2 и H1-H4 должны совпадать с серверными, кроме Jc, Jmin и Jmax. Не меняйте их наугад: туннель просто не поднимется, а ошибки в логе не будет. Если Secure Boot включён, модуль DKMS придётся подписать ключом MOK, иначе он не загрузится. Порядок действий описан в статье про Secure Boot и сторонние драйверы.

Клиент AmneziaVPN для Linux: установка и ключ vpn://

Приложение AmneziaVPN подходит, если вам выдали ключ vpn:// или вы хотите развернуть сервер на своём VPS из графического мастера. Клиент ставится одним файлом .run из раздела Releases на GitHub проекта amnezia-client, на октябрь 2026 года это версия 5.0.3. Сборка только для x86_64.

# библиотеки, которые требуются на Ubuntu 22.04-26.04 и Debian 13
sudo apt install libxcb-cursor0 libxcb-xinerama0 libxcb-icccm4 libxcb-keysyms1 libopengl0 libxkbcommon-x11-0
cd ~/Загрузки
chmod +x ./AmneziaVPN_5.0.3.0_linux_x64.run
./AmneziaVPN_5.0.3.0_linux_x64.run

В Fedora 41-44 дополнительные пакеты не нужны, в Arch при ошибке про xcb-cursor поставьте sudo pacman -S xcb-util-cursor. Предупреждения установщика про Qt-плагин wayland можно игнорировать, если окно открылось.

После запуска выберите "У меня есть данные для подключения" и вставьте ключ или откройте файл конфигурации. Документация Amnezia отдельно предупреждает: не отключайте IPv6 в системе через sysctl, иначе кнопка подключения перестаёт работать.

Весь трафик через VPN или только нужные сети

Куда пойдёт трафик, решает таблица маршрутов. Проверка в одну строку показывает, через какой интерфейс уйдёт пакет к конкретному адресу:

ip route get 1.1.1.1
ip route get 10.0.0.15

В WireGuard и AmneziaWG это задаёт строка AllowedIPs в секции Peer. Значение 0.0.0.0/0, ::/0 заворачивает в туннель всё, а 10.0.0.0/24, 192.168.50.0/24 только рабочие сети. Для OpenVPN через NetworkManager включите опцию "Использовать это соединение только для ресурсов в его сети" или сделайте это командой:

nmcli connection modify client ipv4.never-default yes
nmcli connection up client

Если сервер сам присылает маршрут по умолчанию через push, этот флаг заставит NetworkManager его проигнорировать. Подробнее о маршрутах и nmcli написано в статье про настройку сети через ip и nmcli.

Проверка утечек DNS и реального IP

Утечка DNS - это когда трафик идёт через VPN, а запросы имён по-прежнему уходят DNS-серверу провайдера. Сайты открываются, но провайдер видит, какие именно. Проверка в три шага:

# внешний IP: должен быть адрес VPN-сервера
curl -4 https://ifconfig.me ; echo
curl -6 https://ifconfig.me ; echo
# какие DNS используются и на каком интерфейсе
resolvectl status
resolvectl query example.com

В выводе resolvectl status у интерфейса VPN должны стоять DNS-серверы туннеля и домен маршрутизации ~.. Если DNS-серверы по-прежнему висят на Wi-Fi или Ethernet, а у VPN нет ~., запросы идут мимо. Затем откройте dnsleaktest.com или browserleaks.com/dns в браузере и запустите расширенный тест: в списке должны быть только серверы VPN-провайдера.

Как исправить утечку

# DNS из VPN получает приоритет над остальными интерфейсами
nmcli connection modify client ipv4.dns-priority -50 ipv6.dns-priority -50
nmcli connection down client ; nmcli connection up client

Отрицательное значение dns-priority означает, что запросы будут идти только через DNS этого соединения. Второй частый источник утечки - IPv6: туннель поднят только для IPv4, а у провайдера есть IPv6. Тогда curl -6 покажет ваш настоящий адрес. Решение - добавить ::/0 в AllowedIPs, если сервер поддерживает IPv6, или отключить IPv6 в профиле основного соединения через ipv6.method disabled. Как устроен systemd-resolved, разобрано в статье про DNS в Linux.

В Firefox проверьте настройку DNS через HTTPS: если она включена с внешним провайдером, браузер отправляет запросы напрямую мимо системного DNS. Для теста утечек её лучше выключить, а WebRTC-утечку адреса проверить на browserleaks.com/webrtc.

VPN не подключается: где смотреть логи

journalctl -u NetworkManager -b | grep -iE 'vpn|openvpn|wireguard' | tail -40
sudo wg show       # для WireGuard: есть ли latest handshake
sudo awg show      # то же для AmneziaWG
  • у WireGuard нет строки latest handshake - пакеты не доходят до сервера: неверный Endpoint, закрытый UDP-порт или блокировка протокола;
  • handshake есть, а сайты не открываются - проблема в DNS или в маршрутах, вернитесь к проверке resolvectl status;
  • большие страницы грузятся частично - уменьшите MTU в секции Interface, например MTU = 1280;
  • OpenVPN пишет TLS handshake failed - сервер недоступен или трафик режется, попробуйте TCP-профиль, если провайдер его выдаёт;
  • после обновления ядра пропал AmneziaWG - DKMS не пересобрал модуль, проверьте dkms status и наличие заголовков ядра.

Полный список параметров импорта и свойств соединений есть в справке nmcli на сайте NetworkManager.

Частые вопросы

Как подключить файл .ovpn в Ubuntu?

Установите network-manager-openvpn-gnome и выполните nmcli connection import type openvpn file client.ovpn. Соединение появится в меню сети, подключиться можно оттуда или командой nmcli --ask connection up client.

Почему WireGuard подключается, но через минуту перестаёт работать?

Часто это фильтрация протокола у провайдера. Проверьте sudo wg show: если handshake не обновляется, а с мобильного интернета всё работает, переходите на AmneziaWG.

Можно ли импортировать конфиг AmneziaWG в NetworkManager?

Штатный NetworkManager не понимает параметры Jc, S1 и H1-H4. Используйте awg-quick из пакета amneziawg или приложение AmneziaVPN.

Как проверить утечку DNS в Linux?

Выполните resolvectl status: у интерфейса VPN должны быть DNS туннеля и домен ~. Затем пройдите расширенный тест на dnsleaktest.com, в списке должны остаться только серверы VPN.

Нужно ли отключать IPv6 для VPN?

Не глобально. AmneziaVPN при отключённом IPv6 не подключается. Если туннель только IPv4, отключите IPv6 в профиле основного соединения или пустите ::/0 в туннель.

Документация и источники

Читайте также

Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.