VPN на Linux: wg-quick, systemd и NetworkManager
В Linux WireGuard встроен в ядро начиная с версии 5.6, поэтому ставить нужно только утилиты управления. Настройка идёт файлом конфигурации, а не приложением, — и это скорее удобство: файл переносится между машинами как есть.
Порядок настройки
- 1
Установите утилиты: apt install wireguard-tools в Debian и Ubuntu, dnf install wireguard-tools в Fedora, pacman -S wireguard-tools в Arch.
- 2
Скачайте конфигурацию из личного кабинета DCore и положите её в /etc/wireguard/dcore.conf, ограничив права: chmod 600.
- 3
Поднимите туннель командой wg-quick up dcore и проверьте результат через wg show — в выводе должно появиться время последнего рукопожатия.
- 4
Для автозапуска включите юнит: systemctl enable --now wg-quick@dcore. Имя после «собаки» совпадает с именем файла без расширения.
Что важно учесть на Linux
DNS уходит мимо туннеля чаще, чем где-либо
Строка DNS в конфигурации применяется только если установлен resolvconf или openresolv — иначе wg-quick её молча пропустит, и запросы пойдут к резолверу провайдера. В системах с systemd-resolved надёжнее задать домен маршрутизации: resolvectl domain dcore "~." и resolvectl dns dcore <адрес>. Проверять результат следует командой resolvectl status, а не содержимым /etc/resolv.conf — там давно лежит заглушка.
Имя интерфейса ограничено 15 символами
Ограничение ядра на длину имени сетевого устройства. Имя берётся из имени файла, поэтому dcore-germany-backup.conf не поднимется, а сообщение об ошибке об этом прямо не скажет.
Выборочная маршрутизация без сторонних средств
Если в туннель нужен не весь трафик, укажите в AllowedIPs конкретные подсети вместо 0.0.0.0/0 — маршруты добавит сам wg-quick. Для маршрутизации по приложению, а не по адресу, потребуется отдельный сетевой namespace или контроль групп через cgroup.
Kill switch — одна строка
Добавьте в секцию Interface строку PostUp с правилом, запрещающим исходящий трафик мимо интерфейса, и парную PostDown для снятия. В отличие от готовых клиентов, здесь это не переключатель, а явное правило файрвола, которое видно и проверяемо.
Частые вопросы
Нужно ли ставить модуль ядра?
На ядрах 5.6 и новее WireGuard уже встроен, отдельный модуль не нужен. Проверить версию ядра можно командой uname -r. Для более старых ядер существует пакет wireguard-dkms.
Почему wg-quick up требует прав суперпользователя?
Команда создаёт сетевой интерфейс и правит таблицу маршрутизации — это привилегированные операции. Запускать её от обычного пользователя можно только через sudo или systemd-юнит.
Как понять, что туннель действительно работает?
Команда wg show покажет время последнего рукопожатия и счётчики принятых и переданных байт. Если рукопожатия нет, а отправленные байты растут, пакеты уходят в никуда: обычно это неверный адрес сервера или блокировка UDP-порта.
Работает ли OpenVPN, если WireGuard не проходит?
Да, конфигурацию OpenVPN можно скачать в том же личном кабинете и запустить командой openvpn --config. OpenVPN умеет работать поверх TCP, что помогает в сетях, где UDP режется.
Разобраться глубже
- WireGuardРазбираем WireGuard изнутри: криптографический набор без выбора шифров, работа в ядре, роуминг по UDP и почему у протокола всего около 4000 строк кода.
- Домен вместо IPУ пира WireGuard ровно одна строка Endpoint, и запасного адреса формат не предусматривает. У OpenVPN строк remote может быть несколько. Разбираем, что происходит с выданным конфигом, когда сервер переезжает на новый адрес.
- Проверка утечекVPN подключён, а часть трафика идёт мимо туннеля — так выглядит утечка. Как понять, что она есть, из-за чего возникает в каждом из трёх случаев (DNS, WebRTC, IPv6) и какими настройками устраняется.
Готовая конфигурация для Linux
30+ серверов в 7 странах, MTProto-прокси для Telegram, до 5 устройств на подписку.
Попробовать бесплатноЧас доступа без оплаты, выдаётся один раз