Перейти к содержимому

VPN на Linux: wg-quick, systemd и NetworkManager

В Linux WireGuard встроен в ядро начиная с версии 5.6, поэтому ставить нужно только утилиты управления. Настройка идёт файлом конфигурации, а не приложением, — и это скорее удобство: файл переносится между машинами как есть.

Порядок настройки

  1. 1

    Установите утилиты: apt install wireguard-tools в Debian и Ubuntu, dnf install wireguard-tools в Fedora, pacman -S wireguard-tools в Arch.

  2. 2

    Скачайте конфигурацию из личного кабинета DCore и положите её в /etc/wireguard/dcore.conf, ограничив права: chmod 600.

  3. 3

    Поднимите туннель командой wg-quick up dcore и проверьте результат через wg show — в выводе должно появиться время последнего рукопожатия.

  4. 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 режется.

Разобраться глубже

Готовая конфигурация для Linux

30+ серверов в 7 странах, MTProto-прокси для Telegram, до 5 устройств на подписку.

Попробовать бесплатно

Час доступа без оплаты, выдаётся один раз

Telegram