Роутеры
14 минут чтения

AmneziaWG и WireGuard на роутерах ASUS с прошивкой Merlin

Прошивка ASUSWRT-Merlin давно стала стандартом для тех, кто хочет от домашнего роутера ASUS больше, чем даёт заводской интерфейс. Она сохраняет привычный веб-интерфейс ASUS, но открывает доступ к JFFS-разделу, кастомным скриптам и пакетному менеджеру Entware. Именно это сочетание позволяет установить на роутер полноценный клиент AmneziaWG — форк WireGuard с обфускацией трафика, который заметно труднее распознать системам DPI. В этой статье разберём весь путь: от выбора модели и установки Entware до автозапуска туннеля и маршрутизации отдельных устройств через VPN. Материал рассчитан на пользователей, у которых уже есть файл конфигурации AmneziaWG (ключи, endpoint, параметры Jc/Jmin/Jmax/S1/S2/H1-H4) — если его нет, сначала нужно сгенерировать конфигурацию на сервере или в приложении Amnezia. Ниже — практические шаги, проверенные команды и типичные грабли, с которыми сталкиваются владельцы ASUS RT-AX и старших моделей.

Получить готовую конфигурацию

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

ШАГ 01

Какие модели ASUS подходят

Merlin поддерживает не всю линейку ASUS, а только роутеры на чипах Broadcom с достаточным объёмом флеш-памяти и оперативной памяти. Это модели серий RT-AC68U, RT-AC86U, RT-AX55, RT-AX56U, RT-AX68U, RT-AX86U, RT-AX88U и более новые флагманы вроде GT-AX11000. Чем мощнее процессор, тем комфортнее будет работать шифрование AmneziaWG без просадки скорости интернета, особенно на тарифах от 300 Мбит/с и выше.

Перед установкой стоит свериться с официальным списком поддерживаемых устройств на сайте Merlin, потому что для разных чипов существуют разные ветки прошивки: одна для Broadcom ARM, другая для MediaTek (например, для линейки RT-AX где используется MTK, действует форк Merlin-MTK от энтузиастов). На MediaTek-моделях набор пакетов Entware несколько уже, но AmneziaWG собирается и там.

Если роутер уже используется как основной в квартире, рекомендуется сначала протестировать связку на запасном устройстве или хотя бы сохранить резервную копию текущих настроек через веб-интерфейс перед перепрошивкой. Откат с Merlin на заводскую прошивку возможен, но иногда требует полного сброса настроек.

ШАГ 02

Установка Merlin и Entware

Сначала скачивается прошивка Merlin, соответствующая точной модели роутера, с официального сайта проекта. Прошивка заливается через тот же раздел веб-интерфейса, что и обычное обновление firmware ASUS — раздел «Администрирование» → «Обновление микропрограммы». После перепрошивки рекомендуется сделать сброс к заводским настройкам и заново настроить интернет-подключение вручную, не восстанавливая старый бэкап, чтобы избежать конфликтов формата настроек.

После входа в новую прошивку нужно включить SSH-доступ (Администрирование → Система → «Включить SSH» на LAN, а лучше временно и на WAN для первичной настройки, если делаете это удалённо). Также в разделе «Администрирование → Система» включается опция JFFS custom scripts and configs — без неё скрипты автозапуска не будут сохраняться после перезагрузки.

Далее по SSH подключаемся к роутеру и запускаем встроенный установщик Entware командой amtm (Asuswrt-Merlin Terminal Menu). В меню выбирается пункт установки Entware на подключённый USB-накопитель — это обязательное условие, потому что внутренней флеш-памяти роутера для полноценного пакетного менеджера не хватает. Подойдёт флешка от 1 ГБ, отформатированная в ext4.

  1. 1Скачать прошивку Merlin для точной модели роутера с официального сайта
  2. 2Прошить роутер через веб-интерфейс и выполнить сброс настроек
  3. 3Включить SSH и опцию JFFS custom scripts and configs
  4. 4Подключить USB-флешку, отформатированную в ext4
  5. 5Запустить amtm по SSH и выбрать установку Entware

Нужны параметры без ручного подбора?

Получите готовый профиль для своего роутера — ключи, endpoint и параметры обфускации уже заполнены.

Получить готовую конфигурацию
ШАГ 03

Установка amneziawg-go и утилит

После установки Entware становится доступна команда opkg — аналог apt в Debian. Через неё устанавливаются базовые пакеты: wireguard-tools для утилиты wg, а также компилятор amneziawg-go, реализующего обфусцированный протокол в пространстве пользователя (userspace), поскольку ядро прошивки ASUS не содержит модуля awg на уровне kernel.

Официальные бинарники amneziawg-go под архитектуру ARM или MIPS роутера ASUS не всегда есть в репозитории Entware, поэтому часто их собирают вручную через кросс-компиляцию на ПК с Go либо берут готовые сборки из сообщества Amnezia на GitHub. Скачанный бинарник копируется на роутер в каталог /opt/sbin и делается исполняемым командой chmod +x.

Важно проверить архитектуру процессора роутера командой uname -m перед скачиванием бинарника: ARMv7, ARMv8 (aarch64) и MIPS требуют разных сборок. Ошибка в архитектуре — самая частая причина того, что интерфейс awg0 не поднимается и в логах появляется сообщение об ошибке exec format error.

  1. 1Обновить список пакетов: opkg update
  2. 2Установить wireguard-tools: opkg install wireguard-tools
  3. 3Определить архитектуру: uname -m
  4. 4Скачать подходящий бинарник amneziawg-go и поместить в /opt/sbin
  5. 5Выдать права на исполнение: chmod +x /opt/sbin/amneziawg-go
CONFIG / TERMINAL
opkg update
opkg install wireguard-tools kmod-wireguard
uname -m
curl -L -o /opt/sbin/amneziawg-go https://example.com/awg/amneziawg-go-armv7
chmod +x /opt/sbin/amneziawg-go
ШАГ 04

Настройка конфигурации через wg-quick

Конфигурационный файл AmneziaWG размещается в каталоге /opt/etc/amnezia/ (создайте его при необходимости) под именем awg0.conf. В секции Interface указываются приватный ключ, адрес интерфейса и параметры обфускации Jc, Jmin, Jmax, S1, S2, H1-H4 — именно они отличают AmneziaWG от классического WireGuard и делают трафик менее заметным для систем DPI.

В секции Peer прописываются публичный ключ сервера, endpoint (адрес и порт) и AllowedIPs. Если нужно направить через туннель весь трафик роутера, указывается 0.0.0.0/0, если только часть сетей — конкретные подсети. Значение PersistentKeepalive в 25 секунд рекомендуется оставлять включённым, чтобы соединение не разрывалось при использовании NAT на стороне провайдера.

Поднять интерфейс можно командой wg-quick up awg0, если утилита wg-quick корректно распознаёт бинарник amneziawg-go через переменную окружения WG_QUICK_USERSPACE_IMPLEMENTATION. Для роутеров без встроенного модуля ядра wireguard это обязательный шаг — иначе wg-quick попытается создать интерфейс через kernel-модуль, которого просто нет в прошивке Merlin.

CONFIG / TERMINAL
# /opt/etc/amnezia/awg0.conf
[Interface]
PrivateKey = <ключ_клиента>
Address = 10.8.0.2/32
Jc = 4
Jmin = 40
Jmax = 70
S1 = 50
S2 = 100
H1 = 1
H2 = 2
H3 = 3
H4 = 4

[Peer]
PublicKey = <ключ_сервера>
Endpoint = <адрес_сервера>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Значения Jc/Jmin/Jmax/S1/S2/H1-H4 должны полностью совпадать на клиенте и сервере, иначе handshake не установится.

ШАГ 05

Автозапуск туннеля при загрузке роутера

Merlin поддерживает пользовательские скрипты, которые выполняются на определённых этапах загрузки системы. Для запуска AmneziaWG используется скрипт services-start, который выполняется после инициализации сетевых служб, — это важно, потому что более ранние хуки (например, init-start) выполняются до того, как смонтирован раздел Entware на USB-накопителе.

Скрипт должен экспортировать переменную окружения для userspace-реализации, дождаться готовности файловой системы Entware (можно добавить небольшую задержку sleep) и только после этого вызывать wg-quick up awg0. Также рекомендуется добавить обработку остановки через services-stop, чтобы при перезагрузке или выключении роутера туннель корректно закрывался и не оставлял висящих маршрутов.

После создания скриптов их нужно сделать исполняемыми и поместить в каталог /jffs/scripts/. Если веб-интерфейс не показывает изменения сразу, поможет полная перезагрузка роутера — только на ней применяются хуки services-start в правильном порядке относительно монтирования USB.

  1. 1Создать файл /jffs/scripts/services-start
  2. 2Добавить в него export WG_QUICK_USERSPACE_IMPLEMENTATION=amneziawg-go
  3. 3Добавить sleep 10 для ожидания монтирования Entware
  4. 4Добавить команду /opt/bin/wg-quick up awg0
  5. 5Сделать файл исполняемым: chmod +x /jffs/scripts/services-start
CONFIG / TERMINAL
#!/bin/sh
sleep 10
export WG_QUICK_USERSPACE_IMPLEMENTATION=/opt/sbin/amneziawg-go
/opt/bin/wg-quick up awg0

Получить готовый конфиг

Если не хотите собирать профиль вручную, возьмите готовую конфигурацию и продолжайте инструкцию с шага импорта.

Получить готовую конфигурацию
ШАГ 06

Policy routing: VPN только для отдельных устройств

Не всегда нужно заворачивать в туннель весь трафик домашней сети — часто требуется, чтобы через AmneziaWG ходили только конкретные устройства, например рабочий ноутбук или телевизор, а остальные клиенты выходили в интернет напрямую. Для этого на Merlin используется связка iptables и ip rule, которая маркирует пакеты от определённых MAC- или IP-адресов и направляет их в отдельную таблицу маршрутизации, где шлюзом по умолчанию выступает интерфейс awg0.

Создаётся отдельная таблица маршрутизации в /etc/iproute2/rt_tables (либо используется свободный номер таблицы прямо в командах ip rule без правки файла), затем добавляется маршрут по умолчанию через awg0 только в этой таблице. Правило ip rule add from <IP_устройства> table <номер> заставляет ядро смотреть маршруты для пакетов с этим source-адресом именно в новой таблице.

Такой подход удобен тем, что легко обратим: достаточно удалить правило ip rule, чтобы вернуть устройство на обычный маршрут через провайдера, без перезапуска всего туннеля. Скрипты с такими правилами также стоит вызывать из services-start после поднятия интерфейса awg0.

  1. 1Определить IP-адреса устройств, которым нужен VPN (лучше закрепить их через DHCP-резервацию)
  2. 2Добавить маршрут по умолчанию через awg0 в отдельную таблицу маршрутизации
  3. 3Добавить правило ip rule from <IP> table <номер> для каждого устройства
  4. 4Проверить работу через traceroute с целевого устройства
  5. 5При необходимости отката — удалить соответствующее правило ip rule
ШАГ 07

Мониторинг соединения и диагностика

Проверить состояние туннеля можно командой wg show awg0 — она покажет последний handshake, объём переданных данных и статус пира. Если handshake не обновляется дольше двух-трёх минут при активном PersistentKeepalive, вероятная причина — блокировка UDP-порта на стороне провайдера или неверные параметры обфускации.

Для диагностики скорости полезно временно выключить обфускацию (оставить только базовый WireGuard) и сравнить результат: если скорость восстанавливается, проблема на стороне DPI-фильтрации оператора, и нужно подбирать параметры Jc/Jmin/Jmax под конкретного провайдера. Логи Entware-пакетов можно просматривать через logread, а состояние сетевых интерфейсов — через ifconfig awg0.

Отдельное внимание стоит уделить нагрузке на процессор: на слабых моделях вроде RT-AC68U userspace-реализация amneziawg-go может заметно нагружать CPU при скоростях выше 100-150 Мбит/с, поскольку шифрование не ускоряется аппаратно, как это происходит в некоторых нативных модулях ядра.

ШАГ 08

Обновления прошивки и обслуживание

Обновление Merlin до новой версии сбрасывает раздел JFFS не всегда, но лучше заранее делать резервную копию скриптов и конфигурации AmneziaWG на компьютер, поскольку иногда мажорные обновления требуют полного сброса настроек. USB-накопитель с Entware при этом обычно не затрагивается, и после обновления прошивки достаточно заново прописать переменные окружения, если что-то было настроено вручную через веб-интерфейс.

Пакеты Entware стоит периодически обновлять командой opkg upgrade, но делать это осознанно: если после обновления wireguard-tools или сопутствующих библиотек туннель перестал подниматься, полезно временно закрепить рабочую версию пакета через opkg с флагом --nodeps или откатиться на сохранённый .ipk файл.

Раз в несколько месяцев рекомендуется также обновлять сам бинарник amneziawg-go, поскольку разработчики регулярно улучшают устойчивость протокола к новым методам DPI-анализа. Обновлённый бинарник просто заменяет старый файл в /opt/sbin, после чего требуется перезапуск интерфейса командами wg-quick down awg0 и wg-quick up awg0.

Частые вопросы

Готовы подключить роутер?

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

Получить готовую конфигурацию

Продолжите настройку

Все руководства — настройка роутеров, MTU, DNS и устройств.