В последнее время наблюдаются проблемы с подключением 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)


  1. MountainGoat
    21.04.2026 20:54

    Сколько делал VPSок - Debian 11 отлично самоапдейтится до 13. Зачем сидеть в старье, даже если нужно только докер запустить?


    1. WhiteKeep
      21.04.2026 20:54

      В 13 Debian пакета software-properties-common больше нет и туда теперь проблематично ставить пакеты из PPA для Ubuntu - а это самый простой способ поставить AmneziaWG на сервер

      Но на Debian 12 этот способ должен всё ещё работать


  1. V1tol
    21.04.2026 20:54

    Жуткий нейрослоп, даже читать больно.


  1. 0ka
    21.04.2026 20:54

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


    1. K0Jlya9
      21.04.2026 20:54

      Нужно что бы не включать впн на телефоне.

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


      1. Mi113r Автор
        21.04.2026 20:54

        Пробовал на роутере такое настроить - сработало, но телеге это не помогло.

        И вопрос открытым остался, что делать когда работает только «белый» интернет. Где оно это заметное окно в Европу.


        1. Rubilnik
          21.04.2026 20:54

          И не поможет потому что telegram по ip подключается, а не через dns.


  1. ku4in
    21.04.2026 20:54

    Удаляем default route, который AmneziaWG добавляет автоматически

    Что за костыли? Достаточно в конфиге AmneziaWG добавить Table = off и там же добавить маршруты вручную через PostUp = ip r add ...


    1. Mi113r Автор
      21.04.2026 20:54

      PostUp = ip r add ...

      Table = off - отличное решение, я не знал. Спасибо, но routes не получается добавить через PostUp ((


      1. ku4in
        21.04.2026 20:54

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


  1. greenlittlefrog
    21.04.2026 20:54

    Спойлер - настраивается аналогично обычному WG


  1. 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.
    Причем сервер у клиента в РФ назначен один, просто разные порты, зарубежный трафик с клиента не отловят легко.


  1. ipbatman69
    21.04.2026 20:54

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

    https://github.com/ipbatman/amnezia_sites.json


  1. E1ec7r0
    21.04.2026 20:54

    никогда не писал тут, но премудрость этого решения просто убила. Нахрена так сложно?

    Берется роутер кинетик (у меня гига 1011 на mipsel). Арендуется белый айпи адрес..(это дешевле чем впс).

    На нем поднимается авг тунель до впс за бугром и вг сервер. Настраиваем на нем маршрутизацию по доменам и айпи адресам куда нам надо.

    Всё, дома у нас уже сплит туннель.

    Теперь на мобилу ставим приложение wg tunnel. Создаём подключение до кинетика.

    В приложении можно выбрать вообще что условно только ТГ и Ютуб приложения идут в тунель.

    В приложении можно настроить автоматизацию. Слез с вай-фай, Вг до роутера поднялся.

    И всё это делается без единого захода в cli. Чисто тык-тык.

    Сразу оговорюсь, что от белых списков это не спасает. Может не работать на каких-то провайдерах. Критика про белые списки принимается только с решением как их преодолеть. Остальное идёт лесом.


  1. 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 уже не нужен.