Добавить Happ в исключения в Linux: раздельный туннель
На Linux задача "добавить что-то в исключения VPN" решается иначе, чем на Windows. Нет удобного GUI, где можно поставить галочку рядом с приложением. Зато есть полный контроль: через маршрутизацию, политики iptables или нативные функции клиента. Для ПК-пользователей, которые работают с Linux ежедневно, это нормальный инструментарий — но только если знать, что именно нужно сделать. Разберём конкретные сценарии: когда нужны исключения, как их настроить и как проверить результат.
Когда нужны исключения для Happ на Linux
Самый частый случай: корпоративная сеть или домашняя инфраструктура перестаёт работать при включённом VPN. NAS, сетевой принтер, медиасервер — всё это обычно адресуется по локальным IP или NetBIOS-именам, и если VPN перехватывает весь трафик, локальные ресурсы становятся недоступны.
Второй сценарий: определённые приложения должны работать напрямую без VPN. Например, корпоративный клиент, который проверяет IP-адрес пользователя, или игровой клиент, который не работает через VPN из-за античит-системы. В таких случаях нужно вынести конкретное приложение за пределы туннеля.
Третий случай — производительность. Если у вас медленный VPN-сервер, а торрент-клиент или другое приложение не требует защиты — можно пустить его напрямую, сохранив VPN только для нужных программ. На Linux это делается через политики маршрутизации или через утилиты типа cgroup.
Способ 1: Исключения через маршрутизацию
Самый прямой способ — добавить статические маршруты, которые отправляют определённый трафик в обход VPN-интерфейса. Когда Happ создаёт tun0 (или wireguard0) интерфейс и становится шлюзом по умолчанию, любой трафик, для которого явно указан физический интерфейс, пойдёт мимо туннеля.
Пример для локальной сети: если ваша домашняя сеть — 192.168.1.0/24, а физический интерфейс — eth0 с шлюзом 192.168.1.1, добавьте маршрут: `sudo ip route add 192.168.1.0/24 via 192.168.1.1 dev eth0`. После этого трафик к локальным устройствам будет идти напрямую, а весь остальной — через VPN Happ.
Для конкретного IP внешнего сервера (например, если нужно пустить определённый сайт без VPN): `sudo ip route add [IP-адрес]/32 via [шлюз] dev [интерфейс]`. Маршрут добавляется временно и сбрасывается при перезагрузке. Для постоянного эффекта добавьте команду в скрипт, который запускается при установке VPN-соединения.
- ip route add — добавить статический маршрут в обход VPN
- ip rule add fwmark — маркировать трафик для политик маршрутизации
- iptables MARK — маркировать трафик на уровне фаервола
- cgroup + routing — отправить процесс по другому маршруту
Способ 2: Маркировка трафика через iptables
Более гибкий подход — маркировать трафик через iptables и использовать политики маршрутизации на основе маркеров. Это позволяет создавать правила для конкретных портов, протоколов или даже UID процессов.
Пример: хотите, чтобы весь трафик с порта 8080 шёл мимо VPN. Создаёте маркер: `iptables -t mangle -A OUTPUT -p tcp --dport 8080 -j MARK --set-mark 100`. Потом добавляете таблицу маршрутизации для этого маркера: `ip rule add fwmark 100 table 200` и маршрут в таблицу 200: `ip route add default via [физический шлюз] table 200`. Теперь трафик с портом 8080 идёт напрямую.
Для исключения по UID (конкретное приложение): iptables поддерживает матч по uid-owner в таблице mangle. Пример: `iptables -t mangle -A OUTPUT -m owner --uid-owner 1001 -j MARK --set-mark 100`. Если приложение запускается под конкретным пользователем — весь его трафик получит маркер и будет маршрутизирован в обход VPN.
Способ 3: Cgroup для изоляции процессов
Самый элегантный способ для Linux — использовать cgroup (контрольные группы) для изоляции конкретных процессов и назначения им отдельной политики маршрутизации. Это современный подход, который работает на уровне ядра и не зависит от iptables.
Создайте cgroup: `mkdir /sys/fs/cgroup/net_cls/bypass_vpn` и `echo 100 > /sys/fs/cgroup/net_cls/bypass_vpn/net_cls.classid`. Затем добавьте правило iptables для этого classid: `iptables -t mangle -A OUTPUT -m cgroup --cgroup 100 -j MARK --set-mark 200`. И маршрут: `ip rule add fwmark 200 table bypass`, `ip route add default via [шлюз] table bypass`.
Теперь любой процесс, запущенный в этой cgroup, будет идти мимо VPN. Запуск приложения в cgroup: `cgexec -g net_cls:bypass_vpn [команда]`. Это удобно, потому что не нужно знать порты или UID заранее — достаточно запустить нужный процесс через cgexec.
Базовые шаги для Впн для пк 2026 мы держим на vertexvpn.digital, чтобы не дублировать их в каждом материале.
Как проверить, что исключения работают
После настройки исключений проверьте результат с двух сторон. Первая: убедитесь, что VPN-трафик всё ещё идёт через туннель. Откройте ipleak.net в браузере — там должен быть IP VPN-сервера, а не ваш реальный IP. Если там реальный IP — что-то сломало маршрутизацию туннеля.
Вторая проверка: убедитесь, что исключённый трафик действительно идёт напрямую. Для конкретного IP: `traceroute [IP]` должен показать маршрут через ваш физический шлюз, а не через VPN-сервер. Для приложения: запустите его, и через `ss -tnp` или `netstat` посмотрите, через какой интерфейс идут соединения.
Команда `ip route get [IP-адрес]` показывает, через какой интерфейс пойдёт пакет к конкретному IP. Это быстрый способ проверить маршрутизацию без реального подключения.
После перезагрузки убедитесь, что правила сохранились. Маршруты, добавленные через `ip route add`, временные. Правила iptables, если не сохранены через iptables-save/restore, тоже. Для постоянных правил используйте соответствующие механизмы вашего дистрибутива: netplan, NetworkManager, или скрипты в /etc/network/if-up.d/.
Исключения через настройки профиля Happ
Помимо системных настроек, некоторые версии Happ предоставляют встроенный механизм split tunneling прямо в интерфейсе клиента. Если ваша версия это поддерживает — это самый простой путь: зайдите в настройки, найдите раздел "Исключения" или "Split tunneling", добавьте нужные приложения или подсети.
Проверьте настройки профиля в конфигурационном файле. Для WireGuard-профилей это секция `[Peer]` с полем `AllowedIPs`. Если там стоит `0.0.0.0/0`, весь трафик идёт через VPN. Чтобы добавить исключение — уберите нужную подсеть из AllowedIPs. Например, если 192.168.1.0/24 нужно оставить локальным, перечислите AllowedIPs без этой подсети.
Для VLESS/VMess-конфигураций в Happ исключения обычно настраиваются в секции routing. В конфигурационном файле это выглядит как правила с типом `direct` для определённых доменов или IP. Это более сложная конфигурация, которая требует понимания структуры конфига Happ.
Если профиль получен как подписка и вы не можете его редактировать напрямую — используйте системные методы маршрутизации, описанные выше. Они работают независимо от того, какой профиль загружен в клиент.