Podkop и AmneziaWG на OpenWrt: настройка выборочной маршрутизации

Подробное руководство по настройке VPN на роутере OpenWrt с использованием AmneziaWG и Podkop для выборочной маршрутизации трафика. Установка, конфигурация, диагностика и ответы на частые вопросы.

Введение: зачем нужна выборочная маршрутизация

Когда весь трафик домашней сети направляется через VPN, это создаёт несколько проблем: возрастает задержка, увеличивается нагрузка на сервер, а доступ к локальным ресурсам и российским сайтам может стать менее удобным. Решение — использовать выборочную маршрутизацию, при которой через VPN проходят только те сервисы, которые действительно нуждаются в обходе ограничений, а остальной трафик идёт напрямую через провайдера.

В экосистеме OpenWrt для этой задачи существует несколько инструментов, и один из самых популярных — Podkop. В сочетании с протоколом AmneziaWG, который обеспечивает дополнительную обфускацию трафика, Podkop позволяет гибко управлять маршрутизацией, сохраняя высокую скорость и стабильность соединения. В этой статье мы подробно разберём, как настроить такую связку на роутере с OpenWrt, какие существуют варианты маршрутизации и как диагностировать возможные проблемы.

Что такое AmneziaWG и чем он отличается от WireGuard

AmneziaWG — это форк протокола WireGuard, разработанный для усиления обфускации трафика. В отличие от стандартного WireGuard, который легко детектируется DPI-системами, AmneziaWG добавляет несколько параметров, изменяющих структуру пакетов и делающих VPN-соединение менее заметным.

Ключевые параметры обфускации:

  • Jc, Jmin, Jmax — определяют количество и размер «мусорных» пакетов, отправляемых перед началом VPN-сессии.
  • S1, S2 — добавляют «мусор» в пакеты рукопожатия, изменяя их размер.
  • H1–H4 — используются для дополнительной обфускации пакетов; их точное назначение не раскрывается, но они обязательны для работы.

Версии протокола также различаются: AmneziaWG 1.0, 1.5 и 2.0. В OpenWrt начиная с версии 24.10.3 поддерживаются версии 1.5 и 2.0, что важно учитывать при настройке. Например, файлы конфигурации Amnezia Premium выпускаются только для версии 3.1, которая пока не поддерживается OpenWrt нативно, поэтому для роутера потребуется использовать Self-hosted сервер с версией 1.5 или 2.0.

Подготовка роутера: установка OpenWrt и пакетов AmneziaWG

Первый шаг — убедиться, что ваш роутер поддерживает OpenWrt версии 24.10.3 или новее. Проверить это можно на официальном сайте OpenWrt или через firmware-selector. Установите актуальную стабильную версию, избегая release-кандидатов (например, версий с суффиксом -rcN).

После установки OpenWrt необходимо установить пакеты AmneziaWG. В репозитории OpenWrt они отсутствуют, поэтому используется скрипт установки:

sh <(wget -O - https://raw.githubusercontent.com/Slava-Shchipunov/awg-openwrt/refs/heads/master/amneziawg-install.sh)

Если скрипт завершается ошибкой из-за IPv6, выполните команду с принудительным IPv4:

sh <(wget -4 -O - https://raw.githubusercontent.com/Slava-Shchipunov/awg-openwrt/refs/heads/master/amneziawg-install.sh)

Скрипт установит три пакета: kmod-amneziawg, amneziawg-tools и luci-proto-amneziawg (или luci-app-amneziawg). При запуске скрипт спросит, нужно ли настраивать интерфейс — ответьте N, так как мы будем настраивать его вручную. Также скрипт может предложить включить перенаправление всего трафика — снимите эту галочку, если она появится, чтобы сохранить контроль над маршрутизацией.

Создание VPN-интерфейса AmneziaWG в LuCi

После установки пакетов перейдите в веб-интерфейс LuCi (обычно по адресу 192.168.1.1) и выполните следующие шаги:

  1. Перейдите в Network → Interfaces и нажмите Add new interface.
  2. Укажите имя интерфейса (например, awg0) и выберите протокол AmneziaWG VPN.
  3. Нажмите Create interface.

Откроется окно настройки. Здесь есть два пути: импорт из файла конфигурации или ручное заполнение параметров.

Импорт из файла:

  • Нажмите Load configuration и перетащите файл .conf или вставьте его содержимое.
  • Нажмите Import settings.
  • Важно: в версиях OpenWrt ниже 24.10.1 данные для вкладки AmneziaWG Settings могут вставляться некорректно, поэтому проверьте их вручную.

Ручное заполнение:

  • В General Settings укажите Private Key и IP-адреса из секции [Interface] конфигурации.
  • Поле Public Key не генерируется автоматически — его нужно получить командой echo 'PRIVATE_KEY' | amneziawg pubkey или нажать Save и Dismiss, затем Edit, чтобы продолжить.
  • Перейдите на вкладку AmneziaWG Settings и заполните все поля (Jc, Jmin, Jmax, S1, S2, H1–H4) значениями из конфига.
  • На вкладке Peers нажмите Add peer, затем Edit и внесите параметры из секции [Peer]: Public Key, Preshared Key (если есть), Allowed IPs, Endpoint Host, Endpoint Port.
  • Установите Persistent Keep Alive в значение 25 — без этого туннель не будет соединяться с сервером.
  • Снимите галочку Route Allowed IPs, если она установлена, чтобы не направлять весь трафик через VPN.

После сохранения настроек нажмите Save & Apply и перезапустите интерфейс. В полях RX и TX должны появиться ненулевые значения, что указывает на успешное подключение.

Настройка через консоль и UCI

Для тех, кто предпочитает командную строку, существует два способа настройки: через файл конфигурации /etc/config/network или через команды UCI.

Через файл конфигурации: Откройте файл /etc/config/network и добавьте секции:

config interface 'awg0'
    option proto 'amneziawg'
    option listen_port '51820'
    option private_key 'ВАШ_ПРИВАТНЫЙ_КЛЮЧ'
    list addresses '172.16.0.2'
    option awg_s1 '0'
    option awg_s2 '0'
    option awg_jc '3'
    option awg_jmin '10'
    option awg_jmax '50'
    option awg_h1 '904321824'
    option awg_h2 '245411986'
    option awg_h3 '663334667'
    option awg_h4 '1944657114'

config amneziawg_awg0
    option name 'awg0_client'
    option route_allowed_ips '0'
    option persistent_keepalive '25'
    list allowed_ips '0.0.0.0/0'
    option endpoint_host 'HOST'
    option endpoint_port '51820'
    option public_key 'ПУБЛИЧНЫЙ_КЛЮЧ_СЕРВЕРА'
    option preshared_key 'ПРЕ_ОБЩИЙ_КЛЮЧ'

Замените переменные на значения из вашего конфигурационного файла. После этого перезагрузите сеть командой service network restart.

Через UCI: Выполните последовательность команд, устанавливающих параметры интерфейса и пира. Например:

uci set network.awg0="interface"
uci set network.awg0.proto="amneziawg"
uci set network.awg0.private_key="$PRIVATE_KEY"
# ... остальные параметры
uci commit network
/etc/init.d/network reload

Обратите внимание, что параметры awg_* обязательны для работы AmneziaWG, и их отсутствие приведёт к ошибке подключения.

Установка и настройка Podkop для выборочной маршрутизации

Podkop — это система выборочной маршрутизации для OpenWrt, которая анализирует соединения и решает, отправлять ли трафик через VPN или напрямую. Она работает на основе списков доменов и IP-подсетей, которые можно настраивать.

Установка Podkop: Выполните команду в SSH-терминале роутера:

sh <(wget -O - https://raw.githubusercontent.com/itdoginfo/podkop/refs/heads/main/install.sh)

Если возникают проблемы с IPv6, используйте wget -4. После установки скрипт спросит, нужен ли русский язык интерфейса — ответьте y. Затем перезагрузите роутер командой reboot.

Настройка Podkop:

  1. Зайдите в LuCi и перейдите в Services → Podkop.
  2. В разделе Тип подключения выберите VPN.
  3. В поле Сетевой интерфейс укажите созданный ранее интерфейс AmneziaWG (например, awg0).
  4. Если в конфигурации VPN использовался нестандартный DNS-сервер (не 8.8.8.8, 8.8.4.4, 1.1.1.1 или 1.0.0.1), включите опцию Резолвер доменов и укажите этот DNS-сервер.
  5. В разделе Списки сообщества добавьте нужные списки. По умолчанию уже добавлен список Russia inside — оставьте его, если вы в России. Добавьте, например, Telegram, Discord, Google AI — они будут маршрутизироваться через VPN.
  6. Нажмите Save & Apply.

После этого трафик к доменам и IP-адресам из выбранных списков будет идти через VPN, а остальной — напрямую. Это позволяет, например, использовать Telegram и YouTube через VPN, а российские сайты — без него.

Архитектура Podkop: как это работает

Podkop использует сложную, но эффективную архитектуру, основанную на нескольких компонентах Linux.

Основные этапы обработки пакета:

  1. Podkop определяет, нужно ли использовать VPN для конкретного соединения, на основе списков доменов и IP-подсетей.
  2. Если VPN нужен, пакет попадает в правила nftables, где ему присваивается метка fwmark (в конфигурации используется значение 0x100000).
  3. Policy Routing — ядро Linux видит метку и направляет пакет в специальную таблицу маршрутизации podkop.
  4. В таблице podkop маршрут указывает на локальный интерфейс lo, что необходимо для работы TPROXY.
  5. TPROXY (Transparent Proxy) перехватывает пакет и передаёт его процессу sing-box, который работает на локальном адресе 127.0.0.1:1602.
  6. sing-box принимает окончательное решение и отправляет пакет через интерфейс AmneziaWG (awg0) на VPS-сервер.

Такая схема позволяет не изменять основной маршрут системы, сохраняя прямой доступ к локальной сети и российским ресурсам. Кроме того, списки маршрутизации можно обновлять без перезагрузки роутера.

Проверка работы:

  • Интерфейс AmneziaWG: команда amneziawg show должна показывать latest handshake менее 2 минут и ненулевые значения transfer.
  • Policy Routing: ip rule show должен содержать правило from all fwmark 0x100000 lookup podkop.
  • Таблица podkop: ip route show table podkop должен показывать local default dev lo scope host.
  • sing-box: ps | grep sing-box и netstat -lntup | grep 1602 подтвердят, что процесс запущен и слушает порт.

Варианты маршрутизации: только некоторые сервисы или весь трафик

Podkop предлагает два основных варианта маршрутизации, которые выбираются на этапе настройки.

Вариант 1: Только некоторые сервисы через VPN Этот вариант подходит, если вы хотите, чтобы через VPN работали только определённые сайты и приложения (например, Telegram, Discord, YouTube), а остальной трафик шёл напрямую. Для этого в Podkop выбираются соответствующие списки сообщества. Важно: на подключённых устройствах необходимо отключить пользовательские DNS-серверы, чтобы использовались настройки DNS роутера. В противном случае маршрутизация по доменам может не работать.

Вариант 2: Весь трафик через VPN Если вы хотите, чтобы весь трафик устройств, подключённых к роутеру, проходил через VPN, можно настроить Podkop на маршрутизацию всех пакетов. Однако это приведёт к увеличению задержки и нагрузки на сервер, а также может замедлить доступ к локальным ресурсам. Этот вариант обычно используется, когда требуется полная анонимность или обход всех ограничений.

Выбор варианта зависит от ваших потребностей. Для большинства пользователей оптимален первый вариант, так как он сохраняет высокую скорость для большинства сайтов и снижает нагрузку на VPN-сервер.

Диагностика и устранение неисправностей

При настройке AmneziaWG и Podkop могут возникнуть типичные проблемы. Рассмотрим основные из них и способы их решения.

Проблема: Туннель не соединяется

  • Проверьте, что в настройках Peers указан Persistent Keep Alive = 25. Без этого параметра туннель не устанавливает соединение.
  • Убедитесь, что все параметры обфускации (Jc, Jmin, Jmax, S1, S2, H1–H4) заполнены корректно. Ошибка в любом из них приведёт к неработоспособности.
  • Проверьте, что на роутере установлена версия OpenWrt 24.10.3 или новее, иначе может использоваться устаревшая версия AmneziaWG 1.0, которая часто блокируется.

Проблема: Podkop не маршрутизирует трафик

  • Убедитесь, что в настройках Podkop выбран правильный сетевой интерфейс (awg0).
  • Проверьте, что на устройствах отключены пользовательские DNS-серверы. Если они включены, маршрутизация по доменам не будет работать.
  • Проверьте, что выбранные списки сообщества содержат нужные домены и IP-подсети. При необходимости добавьте дополнительные списки.

Проблема: Нет доступа к интернету после настройки

  • Проверьте, что в настройках интерфейса AmneziaWG снята галочка Route Allowed IPs, если вы не хотите направлять весь трафик через VPN.
  • Проверьте правила фаервола: для работы Podkop не требуется создавать отдельную зону, но если вы её создали, убедитесь, что она не блокирует трафик.

Проблема: Низкая скорость

  • Убедитесь, что через VPN идёт только необходимый трафик. Если весь трафик идёт через VPN, скорость может снижаться.
  • Проверьте задержку до сервера: ping HOST — если она высокая, возможно, сервер расположен далеко.

Если проблема не решается, обратитесь к официальной документации Podkop и AmneziaWG, а также к сообществу OpenWrt.

Заключение и дополнительные ресурсы

Связка AmneziaWG и Podkop на роутере OpenWrt предоставляет мощный инструмент для выборочной маршрутизации трафика, позволяя обходить ограничения без потери скорости и удобства. Мы рассмотрели основные шаги: установку OpenWrt, настройку AmneziaWG, установку Podkop и выбор варианта маршрутизации.

Важно помнить, что Amnezia Premium не поддерживается на OpenWrt из-за несовместимости версий протокола, поэтому для роутера потребуется Self-hosted сервер. Также следует регулярно обновлять списки сообщества Podkop, чтобы маршрутизация оставалась актуальной.

Дополнительные ресурсы:

Надеемся, что эта статья помогла вам настроить VPN на роутере. Если у вас остались вопросы, обратитесь к разделу FAQ ниже или к сообществу OpenWrt.

Вопросы и ответы

Можно ли использовать Amnezia Premium с OpenWrt?

Нет, Amnezia Premium не поддерживается на OpenWrt, так как файлы конфигурации Premium выпускаются только для AmneziaWG 3.1, а OpenWrt поддерживает версии 1.5 и 2.0. Преобразовать конфигурацию 3.1 в 2.0 невозможно, подключение не будет работать. Для роутера необходимо использовать Self-hosted сервер с версией AmneziaWG 1.5 или 2.0.

Что делать, если у меня ссылка вида vpn://, а не файл конфигурации?

Если вы настраивали сервер через приложение AmneziaVPN, вы можете перейти в раздел Share VPN Access и выбрать в пункте Connection format - AmneziaWG native format, после чего получить конфиг в виде параметров. Если вы не владелец сервера, можно использовать декодер от AmneziaVPN для Windows, но вывод будет трудночитаемым, и придётся вручную сопоставлять параметры с примером конфигурации.

Почему туннель AmneziaWG не соединяется, если не указан Persistent Keep Alive?

Persistent Keep Alive — это интервал отправки пакетов для поддержания соединения. Без него туннель не устанавливает соединение с сервером, так как NAT-устройства и файрволы могут разрывать неактивные сессии. Рекомендуемое значение — 25 секунд.

Как проверить, что AmneziaWG работает на роутере?

Через LuCi перейдите в Status → AmneziaWG и проверьте, что Latest Handshake меньше 2 минут, а Data Received и Data Transmitted не равны 0. В консоли выполните команду amneziawg show — в выводе должны быть аналогичные показатели.

Нужно ли настраивать фаервол для Podkop?

Для работы Podkop не требуется создавать отдельную зону фаервола и настраивать перенаправление с lan. Если вы используете скрипт установки, он может включить перенаправление всего трафика — снимите эту галочку, чтобы сохранить выборочную маршрутизацию.

Какие списки сообщества Podkop выбрать для России?

По умолчанию уже добавлен список Russia inside — его нужно оставить, если вы подключаетесь из России. Дополнительно можно добавить списки для конкретных сервисов, например Telegram, Discord, Google AI. Выбирать несколько списков сразу нельзя — добавляйте их последовательно.

Что делать, если Podkop не маршрутизирует трафик по доменам?

Убедитесь, что на подключённых устройствах отключены пользовательские DNS-серверы в системных настройках, параметрах сетевого адаптера и в браузерах. Podkop использует DNS-запросы для определения доменов, и если устройства используют сторонние DNS, маршрутизация не сработает.