После установки пакета amneziawg-tools на роутер с OpenWrt интерфейс AmneziaWG не появляется в LuCI до тех пор, пока не создан сетевой интерфейс с протоколом AmneziaWG и не импортированы параметры конфигурации — это первое, что нужно проверить, если туннель «молчит». Частая причина неработающего подключения на роутере — не сам протокол, а отсутствие правила файрвола для новой зоны или неверно указанные параметры обфускации Jc, Jmin, Jmax, S1, S2, H1–H4, которые должны точно совпадать со значениями на сервере.
AmneziaWG — это форк WireGuard с дополнительной маскировкой трафика, разработанный проектом Amnezia VPN. На OpenWrt он работает через отдельный пакет, а не через стандартный wireguard-tools, поэтому обычные инструкции для WireGuard подходят лишь частично. Ниже разберём подготовку системы, установку, создание интерфейса, маршрутизацию и диагностику ошибок.
Что потребуется перед началом настройки
Прежде чем ставить пакеты, убедитесь, что роутер соответствует минимальным требованиям. AmneziaWG требователен к свободному месте во флеш-памяти: на устройствах с 8 МБ флеша места может не хватить даже для базового набора пакетов. Комфортный минимум — 16 МБ флеша и 128 МБ оперативной памяти, хотя точные требования зависят от версии OpenWrt и набора уже установленных пакетов.
Также понадобится рабочий конфиг AmneziaWG. Его можно получить из приложения Amnezia на смартфоне или компьютере: в настройках подключения есть функция экспорта конфигурации в файл или текст. Конфиг должен содержать секции [Interface] и [Peer] вместе с параметрами обфускации — без них туннель будет работать как обычный WireGuard и, скорее всего, не поднимется против сервера с включённой маскировкой.
- 🔑 Конфиг AmneziaWG с полным набором параметров обфускации (Jc, Jmin, Jmax, S1, S2, H1–H4)
- 💾 Достаточно свободного места во флеше роутера — проверяется командой
df -h /overlay - 🌐 Доступ к роутеру по SSH или через веб-интерфейс LuCI с правами администратора
- 📦 Актуальные списки пакетов — выполните
opkg updateперед установкой
⚠️ Внимание: параметры обфускации из конфига нельзя менять на своё усмотрение. Они жёстко привязаны к настройкам сервера, и даже одно несовпадающее значение (например,
Jc) приведёт к тому, что рукопожатие не пройдёт, а в логах не будет явной ошибки.
Установка пакетов AmneziaWG на OpenWrt
Подключитесь к роутеру по SSH и обновите списки пакетов. В зависимости от версии OpenWrt пакеты AmneziaWG могут входить в официальные репозитории или подключаться из стороннего репозитория сообщества — этот момент стоит уточнить для вашей конкретной версии прошивки, так как состав репозиториев меняется между релизами.
opkg update
opkg install kmod-amneziawg amneziawg-tools luci-proto-amneziawg
Пакет kmod-amneziawg — это модуль ядра, amneziawg-tools — утилиты управления (awg, аналог wg), а luci-proto-amneziawg добавляет поддержку протокола в веб-интерфейс. Если модуль ядра не устанавливается из-за несовпадения версии ядра, это признак того, что пакет собран под другую сборку OpenWrt — в таком случае нужен репозиторий, соответствующий именно вашей версии прошивки.
После установки перезагрузите роутер или хотя бы перезапустите сеть командой /etc/init.d/network restart. Проверить, что модуль загрузился, можно командой lsmod | grep amnezia — в выводе должна присутствовать строка с модулем.
Создание интерфейса AmneziaWG через LuCI
В веб-интерфейсе откройте раздел Сеть → Интерфейсы и нажмите «Добавить новый интерфейс». В поле протокола выберите AmneziaWG (он появится в списке только после установки luci-proto-amneziawg), задайте имя интерфейса, например awg0.
Далее заполните поля данными из конфига. В секции общих настроек укажите приватный ключ из [Interface] и IP-адрес туннеля. Во вкладке пиров добавьте пир: публичный ключ сервера, endpoint (адрес и порт сервера), Allowed IPs и при необходимости Persistent Keepalive (обычно 25 секунд, если роутер за NAT). Параметры обфускации вводятся в соответствующие поля расширенных настроек интерфейса.
☑️ Проверка конфигурации интерфейса awg0
⚠️ Внимание: при копировании ключей из файла конфигурации следите, чтобы в конце строк не попадали невидимые символы или пробелы. Ключ с лишним символом принимается формой, но рукопожатие не проходит — это одна из самых коварных причин «мёртвого» туннеля.
Если предпочитаете настройку через терминал, интерфейс описывается в файле /etc/config/network. Пример фрагмента:
config interface 'awg0'
option proto 'amneziawg'
option private_key 'ПРИВАТНЫЙ_КЛЮЧ'
list addresses '10.8.1.2/32'
Точный набор опций и их имена могут отличаться между версиями пакета — сверяйтесь с документацией к установленной сборке. После правок примените изменения командой /etc/init.d/network reload.
Настройка файрвола и маршрутизации
Сам по себе поднятый туннель не направляет трафик клиентов роутера — для этого нужны зона файрвола и корректные маршруты. Создайте в Сеть → Файрвол новую зону (например, awg), включите в неё интерфейс awg0, разрешите форвардинг из зоны lan в эту зону и включите MASQUERADE для зоны туннеля — без маскарадинга ответы от сервера не вернутся к клиентам локальной сети.
Дальше есть два базовых сценария, и от выбора зависит настройка Allowed IPs:
- 🌍 Весь трафик через туннель — в
Allowed IPsукажите0.0.0.0/0и включите опцию маршрутизации этих подсетей (Route Allowed IPs) - 🎯 Только отдельные ресурсы — перечислите нужные подсети в
Allowed IPs, тогда остальной трафик пойдёт через обычного провайдера - 🔀 Разделение по устройствам — реализуется через policy-based routing (пакет
pbrили ручные правилаip rule), это более сложный сценарий
Проверить, какие маршруты реально появились в системе, можно командой ip route. Если маршрута по умолчанию через туннель нет, хотя Allowed IPs содержит 0.0.0.0/0, — вероятно, не включена опция маршрутизации разрешённых подсетей в настройках пира.
Проверка работы и диагностика проблем
Первый индикатор живого туннеля — счётчики handshake. Выполните в терминале команду awg show: в выводе должны быть строки latest handshake с недавним временем и ненулевые значения transfer. Если handshake отсутствует или время не обновляется — туннель не установлен, и дальнейшая проверка маршрутов бессмысленна.
Типичные причины отсутствия рукопожатия и способы их проверки сведены в таблицу:
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| Нет handshake вообще | Несовпадение параметров обфускации | Сравнить Jc, S1, S2, H1–H4 с серверным конфигом |
| Нет handshake, в логах таймауты | Endpoint недоступен или порт заблокирован | Проверить адрес и порт сервера, доступность сети |
| Handshake есть, трафика нет | Не настроен форвардинг или MASQUERADE | Зоны файрвола, разрешённый форвардинг lan → awg |
| Работает часть сайтов | Некорректные Allowed IPs | Список маршрутизируемых подсетей в настройках пира |
| Туннель периодически отваливается | Разрывы NAT-сессии за провайдером | Включить Persistent Keepalive со значением около 25 |
Как посмотреть подробные логи на OpenWrt
Используйте команду logread -e amnezia для фильтрации сообщений, связанных с интерфейсом. Общий системный журнал смотрится командой logread без аргументов, а за событиями в реальном времени удобно следить через logread -f в отдельной SSH-сессии, одновременно перезапуская интерфейс командой ifdown awg0 && ifup awg0.
Отдельный тест — проверка с самого роутера: ping до адреса сервера внутри туннеля (например, шлюза туннельной подсети). Если пинг с роутера есть, а у клиентов локальной сети нет — проблема точно в файрволе или маршрутизации, а не в туннеле. Эта простая проверка сокращает круг поиска вдвое.
Особенности и ограничения на слабом железе
Шифрование трафика — нагрузка на процессор роутера. На устройствах со слабым одноядерным CPU скорость через туннель может оказаться заметно ниже тарифной скорости провайдера, и это ограничение железа, а не конфигурации. Проверить загрузку во время активной передачи данных можно командой top: если процесс kworker или система в целом упирается в 100%, вы нашли узкое место.
Дополнительная обфускация AmneziaWG добавляет служебные пакеты и увеличивает накладные расходы по сравнению с чистым WireGuard. Параметры Jc и диапазоны Jmin/Jmax влияют на количество «мусорного» трафика — но менять их можно только согласованно с сервером, самостоятельная «оптимизация» этих значений сломает соединение.
⚠️ Внимание: не используйте одновременно пакеты
wireguard-toolsиamneziawg-toolsдля управления одним интерфейсом — утилиты и модули ядра несовместимы по параметрам. Если раньше на роутере был настроен обычный WireGuard, держите конфигурации строго раздельными.
Часто задаваемые вопросы
Можно ли использовать конфиг от обычного WireGuard для AmneziaWG?
Только если сервер настроен на приём подключений без обфускации. Против типичного сервера Amnezia с включённой маскировкой обычный WireGuard-конфиг работать не будет — рукопожатие не пройдёт из-за отсутствия параметров обфускации.
Почему интерфейс AmneziaWG не появляется в списке протоколов LuCI?
Не установлен пакет luci-proto-amneziawg либо веб-интерфейс закэшировал старый список протоколов. Установите пакет и перезагрузите роутер или очистите кэш браузера и перезайдите в LuCI.
Handshake есть, но интернета у клиентов нет — с чего начать?
Проверьте зону файрвола: интерфейс туннеля должен быть в зоне с включённым MASQUERADE, а форвардинг из lan в эту зону — разрешён. Затем убедитесь, что Allowed IPs и маршруты (ip route) соответствуют вашему сценарию.
Нужен ли публичный IP-адрес для работы клиента на роутере?
Нет. Роутер выступает клиентом и сам инициирует соединение к серверу, поэтому «серый» IP от провайдера не помеха. Публичный адрес нужен только на стороне сервера.
Как обновить пакеты AmneziaWG при обновлении OpenWrt?
Модули ядра привязаны к конкретной версии ядра, поэтому после обновления прошивки пакеты нужно переустановить из репозитория, соответствующего новой версии OpenWrt. Конфигурация интерфейсов при обновлении с сохранением настроек обычно сохраняется.