Usage on linux: практический гайд по Happ

Если установка Happ VPN на Linux — это отдельная тема, то повседневное использование требует понимания дополнительных нюансов. Как направить через VPN только часть трафика? Как предотвратить утечки DNS? Как автоматизировать включение при подключении к определённым сетям? На vpnlte.biz ответим на эти вопросы с конкретными командами и конфигами для Ubuntu, Debian и Fedora.

Обычный режим vs Split Tunneling

По умолчанию WireGuard с параметром AllowedIPs = 0.0.0.0/0 направляет весь трафик через VPN. Это полная защита, но иногда не нужно: для работы с корпоративной системой требуется прямой IP, а для личного браузера — VPN. Это решается split tunneling.

Для split tunneling в WireGuard конфиге замените AllowedIPs = 0.0.0.0/0 на конкретные подсети или IP-адреса. Например, AllowedIPs = 185.0.0.0/8 будет направлять через VPN только трафик к диапазону 185.x.x.x. Остальное пойдёт напрямую.

Более гибкий подход — использование таблиц маршрутизации Linux. Команды ip rule и ip route позволяют создавать правила маршрутизации по источнику (например, весь трафик от Firefox через VPN, от Chrome — напрямую). Это требует понимания сетевых концепций, но даёт полный контроль.

Для большинства задач достаточно простого split tunneling через AllowedIPs. Определите, трафик к каким IP или подсетям должен идти через VPN, и перечислите их через запятую в конфиге. Можно использовать онлайн-калькулятор AllowedIPs для генерации корректного списка подсетей.

Сравните Wi‑Fi и LTE.
Сравните Wi‑Fi и LTE.

DNS и предотвращение утечек на Linux

DNS-утечки на Linux — распространённая проблема. Системный резолвер (systemd-resolved или dnsmasq) не всегда автоматически переключается на DNS, указанный в WireGuard конфиге. Проверьте после включения VPN: resolvectl status | grep DNS. Если там провайдерский DNS — есть утечка.

Решение зависит от дистрибутива. На Ubuntu с systemd-resolved добавьте в секцию [Interface] конфига: DNS = 1.1.1.1. Затем после wg-quick up запустите: resolvectl dns wg0 1.1.1.1 && resolvectl domain wg0 ~. Последний символ тильда означает «использовать этот DNS для всех доменов».

Более надёжное решение — скрипт PostUp в WireGuard конфиге. PostUp = iptables -I OUTPUT ! -o wg0 -m mark ! --mark $(wg show wg0 fwmark) -m addrtype ! --dst-type LOCAL -j REJECT — это killswitch в виде правила iptables, который блокирует весь трафик, не идущий через wg0. При разрыве VPN интернета нет вообще — зато нет и утечки.

Для постоянной проверки DNS используйте простой скрипт, который при каждом подключении к любой сети запускает dig example.com @1.1.1.1 и сравнивает ответ с dig example.com без параметров. Если они совпадают — DNS не утекает.

Автоматизация: запуск VPN при подключении к Wi-Fi

Полезный сценарий: VPN включается автоматически при подключении к публичному Wi-Fi и отключается при подключении к домашней сети. В Linux это реализуется через NetworkManager dispatcher скрипты.

Создайте файл /etc/NetworkManager/dispatcher.d/99-vpn.sh с содержимым: определение текущей сети, если SSID совпадает с домашним — wg-quick down wg0, иначе — wg-quick up wg0. Сделайте файл исполняемым (chmod +x). NetworkManager будет вызывать скрипт при каждом изменении сети.

Аналогичное решение через systemd: создайте сервис wg-quick@wg0, который запускается автоматически при старте системы. Для условного запуска по сети — добавьте зависимость от network-online.target и условие проверки SSID в ExecStartPre.

Если используете Xray/sing-box для VLESS-протокола, создание systemd-сервиса стандартное: создайте юнит-файл в /etc/systemd/system/, после чего systemctl enable xray запустит его при старте системы.

  1. Создать /etc/NetworkManager/dispatcher.d/99-vpn.sh
  2. Добавить логику проверки SSID
  3. chmod +x для скрипта
  4. Проверить на тестовом подключении

Мониторинг и диагностика

Для мониторинга WireGuard соединения используйте sudo wg show. Вывод включает: текущий статус интерфейса, публичный ключ пира, endpoint (адрес сервера), last handshake (время последнего рукопожатия), количество переданных байт. Если last handshake давнее (больше 3 минут) — туннель фактически не работает, хотя интерфейс поднят.

Для проверки маршрутизации: ip route show table main | grep wg0 покажет маршруты, которые идут через WireGuard интерфейс. Если вы ожидали полного туннеля (AllowedIPs 0.0.0.0/0), но в таблице нет дефолтного маршрута через wg0 — что-то пошло не так при поднятии интерфейса.

tcpdump -i wg0 позволяет видеть трафик, проходящий через VPN-интерфейс в реальном времени. Полезно для диагностики, дошёл ли конкретный пакет до туннеля. Используйте с фильтрами, например tcpdump -i wg0 port 443 — только HTTPS через VPN.

Логи WireGuard: journalctl -u wg-quick@wg0 показывает историю запусков и ошибок. Если wg-quick up завершился с ошибкой, здесь будет подробности. Это первое место для проверки при проблемах с запуском.

Итог: использование Happ VPN на Linux максимально гибкое — от полного туннеля до тончайшей настройки маршрутизации по приложениям. Systemd и NetworkManager предоставляют инструменты для автоматизации любой сложности. WireGuard с правильным конфигом — стабильная основа без неожиданностей.

Хранение конфигов и ключей

На Linux конфигурационные файлы WireGuard хранятся в /etc/wireguard/. Это системная директория, доступная только root. Не храните там конфиги с правами доступа 644 — приватный ключ защищён только ограничением прав. Правильные права: 600 для файлов конфига, 700 для директории wireguard.

Для резервного копирования конфигов используйте зашифрованное хранилище: age, GPG или pass (менеджер паролей для командной строки). Конфиг достаточно скопировать и зашифровать: age -r [ваш-публичный-ключ] /etc/wireguard/wg0.conf > wg0.conf.age. Расшифровать можно на любой машине с вашим приватным ключом.

При смене сервера или обновлении подписки не удаляйте старый конфиг сразу. Переименуйте его в wg0.conf.bak и сохраните несколько дней. Если новый конфиг окажется нерабочим в вашей специфической конфигурации, вы сможете быстро откатиться.

Несколько профилей Happ (например, для разных стран) можно хранить в /etc/wireguard/ как wg-de.conf, wg-nl.conf и т.д. Переключение между ними: sudo wg-quick down wg0 && sudo wg-quick up wg-de. Можно создать алиасы в ~/.bashrc для удобства.

Happ на Linux рядом с Android TV

Один профиль подписки можно импортировать и в Nekoray на Ubuntu, и в клиент на Android TV-приставке: серверы синхронизируются при обновлении подписки. На Linux нажмите «Update subscription», на TV — аналог в клиенте, затем снова проверьте IP на обоих устройствах.

Usage on linux: практический гайд по Happ

Если на Linux включён split tunnel, а на TV полный туннель — это нормально. Главное не путать ключи: храните одну https:// ссылку в Telegram «Избранное» и резерв на vpnlte.biz для быстрого восстановления после переустановки системы.

← Все статьи