
В последнее время наблюдаются проблемы с подключением VPN с мобильного устройства, а приложения на телефоне то и дело отказываются работать из-за активного VPN соединения.
Я не популяризирую средства обхода блокировок, а рассказываю о техническом решении по настройки ОС в образовательных целях.
Эта статья — практическое руководство, основанное на реальном опыте настройки AmneziaWG на Debian 11. В итоге мы получим стабильный split‑tunneling, где:
Выбранный траффик идёт через awg0 (Сервер 2)
весь остальной трафик — через eth0 (через Сервер 1)
после перезагрузки всё запускается автоматически
1. Установка AmneziaWG на Debian
Официальный PPA AmneziaWG предназначен для Ubuntu, а не Debian (причем самая доступная мне в тот момент версия Debian, была 11). Если установить пакет amneziawg-dkms, он не соберётся, потому что:
ядро Debian не совпадает с Ubuntu
нет подходящих kernel headers
DKMS падает с ошибкой
Поэтому на Debian AmneziaWG работает в userspace‑режиме, и это нормально.
Устанавливаем только нужные пакеты:
sudo apt install -y software-properties-common python3-launchpadlib gnupg2 curl sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 57290828 echo “deb https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu focal main” | sudo tee /etc/apt/sources.list.d/amneziawg.list echo “deb-src https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu focal main” | sudo tee -a /etc/apt/sources.list.d/amneziawg.list sudo apt update sudo apt install -y amneziawg
Но чтобы заработало не хватит одного пакета linux-headers-$(uname -r и для моей версии ОС этого пакета в стандартном репозитории не было.
echo “deb http://deb.debian.org/debian bullseye-backports main” | sudo tee /etc/apt/sources.list.d/backports.list sudo apt update sudo apt install -t bullseye-backports linux-image-5.15-amd64 linux-headers-5.15-amd64
Размещение конфигураци:
sudo mkdir -p /etc/amnezia/amneziawg sudo cp my.conf /etc/amnezia/amneziawg/awg0.conf sudo chmod 600 /etc/amnezia/amneziawg/awg0.conf
После этого интерфейс awg0 поднимается:
sudo awg-quick up awg0
Но этого лучше пока не делать - пропадет связь по SSH - можно будет подключится через AWG-сервер по внутреннему IP. Можно - а зачем? Поэтому просто пока так не делаем...
2. Проблема: AmneziaWG перехватывает весь трафик
После запуска:
awg-quick up awg0
AmneziaWG автоматически:
добавляет default route через awg0
перенаправляет весь трафик в туннель
И вот тут мы понимаем, что нам нужен выборочный Split‑Tunneling
Скрытый текст
UPD:
Спасибо за подсказку в комментариях, оказывается можно в конфиге добавить Table = off, чтобы весь траффик не заворачивался в тоннель
[Interface] PrivateKey = <твой приватный ключ> Address = 10.8.0.2/24 DNS = 1.1.1.1 Table = off [Peer] PublicKey = <публичный ключ сервера> Endpoint = IP:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 0
3. Отключаем systemd‑юниты AmneziaWG
Debian автоматически создаёт юниты:
awg0.service
awg-quick@awg0.service
Они добавляют fwmark и default route, даже если их нет в конфиге.
Отключаем:
sudo systemctl disable awg0.service sudo systemctl disable awg-quick@awg0.service sudo systemctl stop awg0.service sudo systemctl stop awg-quick@awg0.service
Теперь AWG больше не вмешивается в маршрутизацию.
4. Создаём правильный автозапуск AWG
Создаём systemd‑юнит, который:
поднимает awg0
удаляет default route awg0
удаляет fwmark
добавляет Telegram‑подсети
работает после перезагрузки
sudo nano /etc/systemd/system/awg-start.service
[Unit] Description=Start AmneziaWG (awg0) cleanly with split tunneling After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/bin/awg-start.sh [Install] WantedBy=multi-user.target
5. Скрипт, который исправляет маршрутизацию
sudo nano /usr/local/bin/awg-start.sh
#!/bin/bash # Поднимаем AWG awg-quick up awg0 # Ждём появления интерфейса for i in {1..10}; do if ip link show awg0 >/dev/null 2>&1; then break fi sleep 1 done # Удаляем default route, который AmneziaWG добавляет автоматически ip route del default dev awg0 2>/dev/null # Удаляем fwmark-правило ip rule del fwmark 0xca6c table 51820 2>/dev/null # Добавляем Telegram-подсети nets=( 149.154.160.0/20 149.154.164.0/22 91.108.8.0/22 91.108.56.0/22 91.108.4.0/22 95.161.64.0/20 149.154.167.0/24 91.108.16.0/22 91.108.12.0/22 91.105.192.0/23 91.108.20.0/22 185.76.151.0/24 5.28.128.0/17 ) for net in "${nets[@]}"; do ip route add "$net" dev awg0 2>/dev/null done exit 0
Делаем исполняемым (не забываем ... а вдруг, а мало-ли ...):
sudo chmod +x /usr/local/bin/awg-start.sh
6. Включаем автозапуск
sudo systemctl daemon-reload sudo systemctl enable awg-start.service sudo systemctl start awg-start.service
7. Проверка
Обычный трафик:
curl https://ifconfig.me
→ через eth0
Через awg0:
curl --interface awg0 https://ifconfig.me
→ через awg0
Наш маршрут:
ping 149.154.167.51
→ через awg0
После перезагрузки всё работает автоматически.
Итог
Мы получили полностью рабочий split‑tunneling для AmneziaWG на Debian:
корректная установка DKMS
отключение проблемных systemd‑юнитов
автоматическое удаление default‑маршрута awg0
ручное добавление "нужных" подсетей
автозапуск AWG при старте системы
Теперь:
Нужный идёт через VPN (Сервер 2)
весь остальной трафик — напрямую (через Сервер 1)
после перезагрузки всё работает стабильно
Комментарии (15)

0ka
21.04.2026 20:54Во первых пакеты awg с Ubuntu ppa отлично работают в Debian 13 и модуль ядра успешно собирается, во вторых отключение маршрутизации в WG это одна строчка: table=off в секции interface, в третьих - а нафига это все нужно? Я не догоняю

K0Jlya9
21.04.2026 20:54Нужно что бы не включать впн на телефоне.
Для обхода геоблокировок от чатгпт итп можно использоваться днс который перенаправляет запросы к заблокированным сайтам через свой реверс прокси, интересно получится ли так сделать для списка сайтов от ркн или так будут работать далеко не все сайты https://xbox-dns.ru/

Mi113r Автор
21.04.2026 20:54Пробовал на роутере такое настроить - сработало, но телеге это не помогло.
И вопрос открытым остался, что делать когда работает только «белый» интернет. Где оно это заметное окно в Европу.

ku4in
21.04.2026 20:54Удаляем default route, который AmneziaWG добавляет автоматически
Что за костыли? Достаточно в конфиге AmneziaWG добавить Table = off и там же добавить маршруты вручную через PostUp = ip r add ...

Mi113r Автор
21.04.2026 20:54PostUp = ip r add ...
Table = off - отличное решение, я не знал. Спасибо, но routes не получается добавить через PostUp ((

ku4in
21.04.2026 20:54Не, должно всё работать нормально. Попробуйте просто запустить ваш скрипт, который добавляет маршруты: PostUp = /usr/local/bin/awg-start.sh. Или добавить одну подсеть для начала: PostUp = ip r a ...

Garykom
21.04.2026 20:54Вижу что схема слишком переусложнена.
И в тоже время не очень функциональна.
Логичней заиметь две (минимум но можно и больше для резерва) VPS.
Одну в РФ а другую за границей.VPS в РФ лучше выбирать у хостера, который пока еще без лишних коробочек на канале.
Таких мало уже, но есть, можно найти если поискать.
Далее на "non-ru VPS" поднимается AWG 2.0 в обычном варианте с одним каналом-интерфейсом.
А вот на "ru VPS" делаем хитрее и поднимаем три канала-интерфейса (учесть что надо мощности побольше, минимум 2 ядра CPU и 2Gb RAM с хорошим каналом).
Один канал-интерфейс AWG ("исходящий" за границу) с "ru VPS" на "non-ru VPS" с именем awg0.
Далее два канала-интерфейса AWG ("входящие" для мобильных и прочих клиентов) на "ru VPS" с именами awg1 и awg2.
Трафик с клиентов на awg1 идет через "ru VPS" напрямую неважно куда.
А вот трафик с клиентов на awg2 маршрутизируется через awg0 на "non-ru VPS".
В итоге серверу не надо заниматься напряжной split-tunneling маршрутизацией, простые правила в iptables по "входящим" интерфейсам.
А куда и через что пускать решает уже клиент, выборочно для доменов или ip.
Причем сервер у клиента в РФ назначен один, просто разные порты, зарубежный трафик с клиента не отловят легко.

ipbatman69
21.04.2026 20:54Для этого дела я создал свой первый репозиторий на github, где обновляю список сайтов рунета, для которых впн не нужен.

E1ec7r0
21.04.2026 20:54никогда не писал тут, но премудрость этого решения просто убила. Нахрена так сложно?
Берется роутер кинетик (у меня гига 1011 на mipsel). Арендуется белый айпи адрес..(это дешевле чем впс).
На нем поднимается авг тунель до впс за бугром и вг сервер. Настраиваем на нем маршрутизацию по доменам и айпи адресам куда нам надо.
Всё, дома у нас уже сплит туннель.
Теперь на мобилу ставим приложение wg tunnel. Создаём подключение до кинетика.
В приложении можно выбрать вообще что условно только ТГ и Ютуб приложения идут в тунель.
В приложении можно настроить автоматизацию. Слез с вай-фай, Вг до роутера поднялся.
И всё это делается без единого захода в cli. Чисто тык-тык.
Сразу оговорюсь, что от белых списков это не спасает. Может не работать на каких-то провайдерах. Критика про белые списки принимается только с решением как их преодолеть. Остальное идёт лесом.

lked
21.04.2026 20:54Интересный workaround через Table=off + custom systemd-юнит. Для split-tunnel это рабочий способ, особенно когда маршруты меняются динамически.
Проще без Table=off: если в конфиге клиента указать конкретные AllowedIPs (в вашем примере — подсети Telegram), wg-quick по умолчанию НЕ добавляет default route и не ставит fwmark. Маршрут создастся автоматически только для указанных подсетей. Остальной трафик идёт через eth0 по умолчанию ОС, без правок systemd.
По DKMS на Debian 12/13: официальный PPA ставится через mapping bookworm→focal и trixie→noble, модуль собирается штатно. Ваш вариант через bullseye-backports + linux-5.15 валиден для Debian 11, но на новых релизах этот workaround уже не нужен.
MountainGoat
Сколько делал VPSок - Debian 11 отлично самоапдейтится до 13. Зачем сидеть в старье, даже если нужно только докер запустить?
WhiteKeep
В 13 Debian пакета
software-properties-commonбольше нет и туда теперь проблематично ставить пакеты из PPA для Ubuntu - а это самый простой способ поставить AmneziaWG на серверНо на Debian 12 этот способ должен всё ещё работать