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).
Как это работает: схема на пальцах
Cloudflare WARP здесь используется как бесплатный VPN-сервер: генератор конфигов создаёт для вас ключи к сети WARP в формате AmneziaWG. Это удобно, когда нет своего VPS.
Шаг 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)
Способ 2 (ручной): скачиваем .ipk/.apk под свою версию
- Откройте раздел Releases репозитория awg-openwrt на GitHub.
- Найдите релиз, соответствующий вашей связке версия OpenWrt + target/subtarget (например,
25.12.4+mediatek/filogic). Это самый частый источник ошибок — берите пакеты строго под свою сборку. - Скачайте четыре пакета:
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
Проверьте, что модуль ядра загрузился:
modprobe amneziawg
lsmod | grep amneziawg
Если строка есть — драйвер работает. Если modprobe ругается на несовпадение версии («kernel version mismatch») — вы скачали пакет не под свою сборку OpenWrt. Это типовая ошибка №1: вернитесь к п. 2 и возьмите релиз точно под свою версию.
Шаг 3. Получаем бесплатный конфиг через WARP-генератор
- Откройте наш генератор конфигов WARP.
- Включите переключатель AmneziaWG (с обфускацией) (не обычный WireGuard!).
- Нажмите «Получить конфиг 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 пакетов |
H1–H4 | изменённые типы заголовков (маскировка под другой протокол) |
Если вместо WARP вы поднимаете свой сервер AmneziaWG с нуля, согласованный набор параметров обфускации и ключей для клиента и сервера можно получить в нашем генераторе AmneziaWG — он сразу выдаёт два готовых конфига с одинаковыми Jc/Jmin/Jmax/S1/S2/H1–H4.
Шаг 4. Настройка через LuCI (без командной строки)
- Network → Interfaces → Add new interface, имя
awg0, протокол AmneziaWG. - Вкладка General: вставьте
PrivateKeyиз конфига. Listen port можно оставить пустым для клиентского режима. - Укажите IP-адрес интерфейса из строки
Addressконфига (например,172.16.0.2/32). - Вкладка Peers → Add peer:
PublicKey,Endpoint(host:port),Allowed IPs(0.0.0.0/0для полного туннеля),Persistent Keepalive= 25. - Вкладка Advanced Settings: перенесите параметры
Jc,Jmin,Jmax,S1,S2,H1–H4из конфига. - Save & Apply.
Если в вашей версии luci-app-amneziawg есть кнопка Import configuration — можно импортировать .conf целиком, тогда все поля заполнятся автоматически.
Шаг 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, чтобы в туннель шли только заблокированные сайты, и запомните: после обновления прошивки пакеты придётся ставить заново.
Комментарии
💬 Пока нет комментариев. Будьте первым!
Оставить комментарий