AmneziaWG на OpenWrt — это WireGuard, доработанный для обхода DPI: он добавляет в трафик «мусор», из-за чего провайдер не может опознать и заблокировать VPN. В этой инструкции — установка из репозитория awg-openwrt, получение бесплатного конфига Cloudflare WARP, настройка через LuCI и через SSH, firewall и проверка соединения.

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

Обычный WireGuard быстрый и надёжный, но у его пакетов есть характерный «отпечаток» — системы DPI (глубокого анализа трафика) легко его распознают и режут соединение. AmneziaWG решает это обфускацией: в handshake и поток добавляются случайные данные и меняются размеры пакетов, поэтому трафик перестаёт быть похожим на WireGuard.

Чем это отличается на практике:

  • AmneziaWG vs WireGuard: протокол тот же по сути, но с параметрами обфускации (Jc, Jmin, Jmax, S1, S2, H1–H4). Скорость почти не страдает.
  • Обход блокировки WireGuard DPI: там, где обычный WG «висит» без handshake, AmneziaWG соединяется.

Что понадобится:

  • роутер на OpenWrt 24.10 или 25.12 с SSH-доступом;
  • ~7 МБ свободной flash, если маршрутизация не нужна;
  • ~50 МБ памяти, если нужна маршрутизация через podkop и singbox
  • знание точной версии и архитектуры роутера (получим на шаге 1).

Как это работает: схема на пальцах

Схема обфускации AmneziaWG против DPI на OpenWrt
WireGuard DPI опознаёт по отпечатку и блокирует; AmneziaWG маскирует трафик добавлением мусорных пакетов

Cloudflare WARP здесь используется как бесплатный VPN-сервер: генератор конфигов создаёт для вас ключи к сети WARP в формате AmneziaWG. Это удобно, когда нет своего VPS.

Ограничения бесплатного WARP: скорость нестабильна и зависит от загрузки, IP принадлежат Cloudflare (часть сайтов их не любит), гарантий работы нет. Для стабильности лучше свой сервер, но для старта WARP отлично подходит.

Шаг 1. Подготовка роутера

Узнайте версию и архитектуру — от них зависит, какие пакеты качать:

ssh root@192.168.1.1
ubus call system board

Запишите значения полей release.version (например, 24.10.5) и board_name/target. Точная архитектура критична: пакеты AmneziaWG — это модуль ядра, собранный под конкретную версию OpenWrt и target. Модуль от другой версии не загрузится.

Проверьте свободное место:

df -h /overlay

Нужно не меньше ~5 МБ. Если консоль пугает — начните с объяснения SSH для новичков.

Шаг 2. Установка AmneziaWG из репозитория awg-openwrt

Способ 1 (простой): скрипт установки

Проект awg-openwrt предоставляет пакеты и вспомогательный скрипт. Он сам определяет версию/архитектуру и ставит нужные пакеты.

Просто выполните эту команду на роутере после подключения через SSH. Скипт автоустановки сделаем всё сам, вам останется только перезапустить роутер по окончанию. В процессе установки вам предложат установку русского языка и добавление параметров интерфейса. С установкой языка можно согласиться, а от создания интерфейса при установке можно отказаться, т.к. это проще будет сделать позже через графический интерфейс админки OpenWRT.

# Автоматическая установка Amnezia VPN в одну строку
sh <(wget -O - https://raw.githubusercontent.com/Slava-Shchipunov/awg-openwrt/master/install.sh)
Инфо: Точный адрес и наличие install-скрипта проверяйте в разделе README репозитория awg-openwrt — проект развивается, и команда установки могла измениться. Если скрипта нет, используйте ручной способ ниже.

Способ 2 (ручной): скачиваем .ipk/.apk под свою версию

  1. Откройте раздел Releases репозитория awg-openwrt на GitHub.
  2. Найдите релиз, соответствующий вашей связке версия OpenWrt + target/subtarget (например, 25.12.4 + mediatek/filogic). Это самый частый источник ошибок — берите пакеты строго под свою сборку.
  3. Скачайте четыре пакета: kmod-amneziawg, amneziawg-tools, luci-app-amneziawg, luci-proto-amneziawg.

Полный блок команд (замените URL на ссылки из нужного релиза):

cd /tmp
wget https://github.com/Slava-Shchipunov/awg-openwrt/releases/download/.../kmod-amneziawg_....ipk
wget https://github.com/Slava-Shchipunov/awg-openwrt/releases/download/.../amneziawg-tools_....ipk
wget https://github.com/Slava-Shchipunov/awg-openwrt/releases/download/.../luci-app-amneziawg_....ipk
wget https://github.com/Slava-Shchipunov/awg-openwrt/releases/download/.../luci-proto-amneziawg_....ipk
opkg install kmod-amneziawg_*.ipk amneziawg-tools_*.ipk luci-app-amneziawg_*.ipk luci-proto-amneziawg_*.ipk
На OpenWrt 25.12+ (`apk`) скачивайте `.apk`-пакеты и ставьте их: `apk add --allow-untrusted ./kmod-amneziawg_*.apk ...`.

Проверьте, что модуль ядра загрузился:

modprobe amneziawg
lsmod | grep amneziawg

Если строка есть — драйвер работает. Если modprobe ругается на несовпадение версии («kernel version mismatch») — вы скачали пакет не под свою сборку OpenWrt. Это типовая ошибка №1: вернитесь к п. 2 и возьмите релиз точно под свою версию.

Шаг 3. Получаем бесплатный конфиг через WARP-генератор

  1. Откройте наш генератор конфигов WARP.
  2. Включите переключатель AmneziaWG (с обфускацией) (не обычный WireGuard!).
  3. Нажмите «Получить конфиг WARP» и скачайте .conf-файл.

Структура конфига построчно:

[Interface]
PrivateKey = <ваш приватный ключ>
Address = 172.16.0.2/32, 2606:4700:110:...::/128
Jc = 4
Jmin = 40
Jmax = 70
S1 = 0
S2 = 0
H1 = 1
H2 = 2
H3 = 3
H4 = 4

[Peer]
PublicKey = <публичный ключ сервера WARP>
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 162.159.192.1:2408

Что означают параметры обфускации:

ПараметрЗначение
Jcколичество мусорных пакетов при подключении
Jmin/Jmaxминимальный и максимальный размер мусорного пакета
S1/S2размер префикса для init/response пакетов
H1H4изменённые типы заголовков (маскировка под другой протокол)
Важно: клиент и сервер должны иметь одинаковые параметры обфускации (Jc, S1, S2, H1–H4). Для WARP генератор уже подставляет согласованные значения — не меняйте их вручную.

Если вместо WARP вы поднимаете свой сервер AmneziaWG с нуля, согласованный набор параметров обфускации и ключей для клиента и сервера можно получить в нашем генераторе AmneziaWG — он сразу выдаёт два готовых конфига с одинаковыми Jc/Jmin/Jmax/S1/S2/H1–H4.

Шаг 4. Настройка через LuCI (без командной строки)

  1. Network → Interfaces → Add new interface, имя awg0, протокол AmneziaWG.
  2. Вкладка General: вставьте PrivateKey из конфига. Listen port можно оставить пустым для клиентского режима.
  3. Укажите IP-адрес интерфейса из строки Address конфига (например, 172.16.0.2/32).
  4. Вкладка Peers → Add peer: PublicKey, Endpoint (host:port), Allowed IPs (0.0.0.0/0 для полного туннеля), Persistent Keepalive = 25.
  5. Вкладка Advanced Settings: перенесите параметры Jc, Jmin, Jmax, S1, S2, H1H4 из конфига.
  6. Save & Apply.

Если в вашей версии luci-app-amneziawg есть кнопка Import configuration — можно импортировать .conf целиком, тогда все поля заполнятся автоматически.

Создание интерфейса AmneziaWG в LuCI на OpenWrt Настройка параметров обфускации amneziawg конфиг в LuCI Добавление peer с endpoint WARP для настройки amnezia wg на роутере

Шаг 5. Настройка через SSH и UCI

Готовый пример блока в /etc/config/network для интерфейса awg0:

config interface 'awg0'
	option proto 'amneziawg'
	option private_key '<ваш приватный ключ>'
	list addresses '172.16.0.2/32'
	option awg_jc '4'
	option awg_jmin '40'
	option awg_jmax '70'
	option awg_s1 '0'
	option awg_s2 '0'
	option awg_h1 '1'
	option awg_h2 '2'
	option awg_h3 '3'
	option awg_h4 '4'

config amneziawg_awg0
	option public_key '<публичный ключ сервера>'
	option endpoint_host '162.159.192.1'
	option endpoint_port '2408'
	list allowed_ips '0.0.0.0/0'
	list allowed_ips '::/0'
	option persistent_keepalive '25'
	option route_allowed_ips '1'

После правки конфига перезапустите сеть:

uci commit network
service network restart

Шаг 6. Настройка Firewall (без этого VPN не заработает)

VPN-интерфейсу нужна своя зона firewall с NAT. Готовый блок для /etc/config/firewall:

config zone
	option name 'awg'
	list network 'awg0'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'

config forwarding
	option src 'lan'
	option dest 'awg'

Тот же результат UCI-командами:

uci add firewall zone
uci set firewall.@zone[-1].name='awg'
uci add_list firewall.@zone[-1].network='awg0'
uci set firewall.@zone[-1].input='REJECT'
uci set firewall.@zone[-1].output='ACCEPT'
uci set firewall.@zone[-1].forward='REJECT'
uci set firewall.@zone[-1].masq='1'
uci set firewall.@zone[-1].mtu_fix='1'
uci add firewall forwarding
uci set firewall.@forwarding[-1].src='lan'
uci set firewall.@forwarding[-1].dest='awg'
uci commit firewall
service firewall restart

Ключевые опции: masq='1' включает NAT (маскарадинг), mtu_fix='1' — MSS clamping, без которого крупные страницы «висят». MTU для WireGuard/AmneziaWG обычно 1420; при проблемах с загрузкой снижайте до 1280.

Шаг 7. Проверка работоспособности

# получил ли интерфейс адрес
ifstatus awg0

# пинг через туннель
ping -c 3 -I awg0 1.1.1.1

# состояние туннеля и handshake
awg show

В выводе awg show ищите строку latest handshake: N seconds ago — если handshake есть, туннель установлен. Проверьте внешний IP:

curl --interface awg0 ifconfig.me

Должен вернуться IP Cloudflare. На клиентском устройстве проверьте через 2ip.ru или whoer.net.

Чек-лист, если handshake нет:

  • проверьте, что модуль загружен: lsmod | grep amneziawg;
  • проверьте endpoint и порт (WARP — 2408/udp);
  • убедитесь, что параметры обфускации совпадают с конфигом;
  • проверьте, что firewall-зона создана и forwarding lan→awg настроен;
  • посмотрите логи: logread | grep -i amnezia.

Шаг 8. Выборочная маршрутизация (не гнать весь трафик в VPN)

Полный туннель (AllowedIPs = 0.0.0.0/0) — плохая идея: замедляются локальные сервисы, банки и госуслуги могут блокировать иностранные IP. Два способа пускать в VPN только нужное:

  • Вариант А — podkop поверх AmneziaWG. podkop использует ваш awg0-интерфейс как исходящий канал и сам решает, какие домены отправлять в туннель. Это самый гибкий путь — см. настройку podkop.
  • Вариант Б — policy-based routing (pbr). Пакет pbr (luci-app-pbr) маршрутизирует трафик по правилам (по подсети, порту, устройству).
  • Вариант В — сузить AllowedIPs. Прописать в peer только нужные подсети вместо 0.0.0.0/0. Грубо, но работает без доп. пакетов.

Автозапуск и отказоустойчивость

Интерфейс с proto amneziawg в /etc/config/network поднимается автоматически при загрузке — отдельного автозапуска не требуется. Для надёжности добавьте watchdog, который перезапускает туннель при пропаже handshake. Файл /root/awg-watchdog.sh:

#!/bin/sh
if ! ping -c 3 -W 5 -I awg0 1.1.1.1 >/dev/null 2>&1; then
    logger -t awg-watchdog "AmneziaWG down, restarting"
    ifdown awg0
    sleep 5
    ifup awg0
fi

В cron каждые 5 минут:

chmod +x /root/awg-watchdog.sh
echo "*/5 * * * * /root/awg-watchdog.sh" >> /etc/crontabs/root
service cron restart

Часто задаваемые вопросы (FAQ)

AmneziaWG медленнее обычного WireGuard? Незначительно. Обфускация добавляет немного накладных расходов, но на домашних скоростях разница обычно в пределах погрешности.

Можно ли использовать AmneziaWG со своим VPS вместо WARP? Да, и это надёжнее WARP. Поднимите AmneziaWG-сервер (например, через панель Amnezia) и вставьте его конфиг вместо WARP. Параметры обфускации на сервере и роутере должны совпадать.

Почему нет handshake? Чаще всего: не совпадают параметры обфускации, неверный endpoint/порт, не настроен firewall, либо провайдер блокирует UDP на этот порт. Пройдите чек-лист из шага 7.

Пакет не устанавливается: «Unknown package» / «kernel version mismatch». Вы скачали пакеты не под свою версию OpenWrt. Модуль ядра привязан к конкретной сборке — берите релиз строго под связку версия + target из ubus call system board.

Сколько устройств выдержит роутер? На MT7981-роутере AmneziaWG спокойно тянет домашнюю сеть на 10–20 устройств. Упор идёт в CPU при шифровании на высоких скоростях.

WARP бесплатный навсегда? Какие лимиты? Базовый WARP бесплатен, жёстких лимитов трафика у него нет, но скорость не гарантируется и может проседать. Платный WARP+ даёт приоритет.

Чем AmneziaWG отличается от VLESS Reality — что выбрать? AmneziaWG проще в настройке и не требует своего сервера (можно на WARP), но WARP-IP иногда блокируются. VLESS Reality маскируется под обычный HTTPS и лучше проходит жёсткий DPI, но нужен свой сервер — см. VLESS через podkop.

Слетит ли AmneziaWG после обновления OpenWrt? Да. При sysupgrade удаляются все пакеты, включая kmod-amneziawg. После обновления ставьте их заново — см. как обновить OpenWrt.

Заключение

AmneziaWG даёт рабочий обход DPI на роутере: установили пакеты под свою версию → взяли бесплатный конфиг WARP → создали интерфейс awg0 → настроили firewall с NAT → проверили handshake. Дальше подключите выборочную маршрутизацию через podkop, чтобы в туннель шли только заблокированные сайты, и запомните: после обновления прошивки пакеты придётся ставить заново.