Настройка сервера Amnezia VPN (AWG 2.0 и 3.0) на MikroTik
В этом материале мы разберём, как развернуть собственный VPN-сервер с поддержкой протоколов AmneziaWG 2.0 и 3.0 на роутере MikroTik с помощью легковесного Docker-контейнера. Решение работает на архитектурах ARM, ARM64 и x86 и практически не нагружает процессор (5–15% CPU, 7–10 МБ RAM на ARM64).
Как это работает
MikroTik WG-клиент → UDP → [awg-proxy контейнер] → UDP → AmneziaWG-сервер
- Родной WireGuard-клиент MikroTik шифрует трафик.
- Контейнер-прокси (awg-proxy) преобразует пакеты в формат AmneziaWG: подменяет заголовки, добавляет padding и мусорные пакеты.
- Сервер AmneziaWG принимает трафик как обычный AWG-клиент.
Контейнер не расшифровывает и не хранит ключи — он только преобразует формат пакетов, безопасность остаётся на уровне WireGuard.
AmneziaWG 2.0 и 3.0: в чём разница
- AWG 2.0: динамические заголовки (H1–H4), случайный padding (S1–S4), мусорные пакеты (I1–I5). Маскирует отдельные пакеты.
- AWG 3.0: добавляет шифрование заголовков (HeaderProtectionKey), дополнительный padding (ContentPaddingAddition) и случайные таймеры. Маскирует всё соединение целиком.
Версия определяется автоматически по переменным в конфиге.
Подготовка
Требования к роутеру:
- Архитектура: ARM, ARM64 или x86_64
- RouterOS: версия 7.4+ с пакетом container
- Свободное место: минимум 5 МБ
- Оперативная память: от 16 МБ свободной RAM
- Белый IP-адрес: статический или DynDNS
Важно: Перед настройкой отключите FastTrack в RouterOS.
Подготовка конфигурационного файла
Вам понадобится .conf-файл, экспортированный из приложения AmneziaVPN:
1. Откройте приложение AmneziaVPN.
2. Выберите подключение с нужной версией протокола (AWG 2.0 или 3.0).
3. Нажмите «Поделиться» → «Формат подключения» → «Оригинальный (нативный) формат AmneziaWG».
4. Сохраните .conf-файл.
Важно: Версия протокола определяется автоматически по наличию параметров HeaderProtectionKey и ContentPaddingAddition. Если они есть — это AWG 3.0, если только I1–I5 и H/S — AWG 2.0.
Пошаговая настройка
Шаг 1. Включение контейнеров
1. Скачайте пакет container с сайта MikroTik под вашу архитектуру.
2. Загрузите его на роутер через WinBox и перезагрузите.
3. В терминале выполните:
/system/device-mode/update container=yes fetch=yes
4. Подтвердите действие физически (кнопка на корпусе или перезагрузка).
Шаг 2. Создание сети для контейнера
В терминале выполните:
/interface bridge add name=containers
/interface veth add address=192.168.112.2/29 gateway=192.168.112.1 name=awg-proxy
/interface bridge port add bridge=containers interface=awg-proxy
Шаг 3. Загрузка и настройка контейнера
Рекомендуется использовать C-версию контейнера — она даёт на 100–150% больше пропускной способности, чем Go-версия.
Откройте конфигуратор: timbrs.github.io/amneziawg-mikrotik-c/configurator.html, вставьте содержимое .conf-файла и скопируйте сгенерированные команды в терминал MikroTik.
Ручная установка (если конфигуратор недоступен):
/container/add remote-image=wiktorbgu/amneziawg-mikrotik interface=awg-proxy root-dir=/usb1/docker/amneziawg start-on-boot=yes logging=yes mounts=amnezia_wg_conf dns=1.1.1.1
Подставьте свои пути и имена интерфейсов.
Шаг 4. Настройка маршрутизации
Чтобы клиенты могли выходить в интернет через AWG-сервер, настройте NAT и маршрут по умолчанию:
/ip firewall nat add chain=srcnat action=masquerade out-interface=wg-awg-proxy comment="NAT for AWG"
/ip route add dst-address=0.0.0.0/0 gateway=wg-awg-proxy distance=1 comment="default via AWG"
Для выборочной маршрутизации (только определённые IP или подсети) создайте address-list и правила mangle.
Шаг 5. Запуск и проверка
/container start [имя_контейнера]
/container logs [имя_контейнера]
Убедитесь, что handshake проходит успешно.
Серверный режим (1:N) — несколько клиентов
Если вы хотите подключать к одному MikroTik несколько клиентов, используйте режим awg-server (reverse-hub).
Схема работы:
proxy1 (normal) ──AWG──┐
proxy2 (normal) ──AWG──┤──> [reverse-hub] ──WG──> WG-сервер на MikroTik
proxy3 (normal) ──AWG──┘
Для этого:
1. На MikroTik поднимите обычный WireGuard-сервер (интерфейс wg-server с IP-пулом).
2. Настройте reverse-hub контейнер, который будет принимать AWG-трафик от нескольких normal-прокси и маршрутизировать его на локальный WG-сервер.
3. Каждый клиент получает свой конфиг для normal-прокси с уникальным ключом.
Подробная настройка описана в разделе «Серверный режим (1:N)» в README контейнера.
Параметры AWG 2.0 и 3.0 (примеры)
- AWG 2.0: I1 = <r 128>, I2 = <r 48>, H1 = 100000-800000, S1 = 0-100
- AWG 3.0: HeaderProtectionKey = <base64>, ContentPaddingAddition = true
Версия определяется автоматически, но вы можете экспериментировать с I1–I5 для AWG 2.0.
Устранение неполадок
- Handshake не проходит: проверьте порты в firewall, правильность endpoint, логи контейнера: /container logs [имя]
- Контейнер не запускается: убедитесь, что включён режим контейнеров (/system/device-mode/update container=yes fetch=yes), проверьте свободное место на диске.
- Ошибка not allowed by device-mode: выполните команду включения контейнеров и перезагрузите роутер.
- Низкая скорость: используйте C-версию контейнера вместо Go, проверьте MTU (рекомендуется 1420), в конфиге клиента укажите MTU = 1420 в секции [Interface].
- Роутер крешится: добавьте swap на флешку.
Часто задаваемые вопросы
Вопрос: Можно ли использовать один конфиг для нескольких устройств?
Ответ: Нет, каждый клиент должен иметь свой собственный ключ и IP-адрес. В серверном режиме (1:N) вы создаёте отдельные конфиги для каждого устройства.
Вопрос: Как узнать, какая версия AWG используется?
Ответ: Версия определяется автоматически по наличию параметров HeaderProtectionKey и ContentPaddingAddition в конфиге. Если они есть — это AWG 3.0, если только I1–I5 и H/S — AWG 2.0.
Вопрос: Почему handshake не проходит после перезагрузки роутера?
Ответ: Проверьте, что контейнер запускается автоматически (параметр start-on-boot=yes). Также убедитесь, что в фаерволе разрешён входящий трафик на порт WireGuard.
Заключение
Вы развернули AmneziaWG-сервер на MikroTik с поддержкой AWG 2.0 и 3.0. Контейнер-прокси работает в паре с родным WireGuard-клиентом, преобразуя трафик в формат AmneziaWG.
Что дальше?
- Подключайте клиенты через приложение AmneziaVPN, используя экспортированный конфиг.
- Для нескольких клиентов используйте серверный режим (1:N).
- При необходимости экспериментируйте с параметрами I1–I5 (для AWG 2.0) и HeaderProtectionKey (для AWG 3.0).
Полезные ссылки
- Конфигуратор для C-версии (рекомендуется): https://timbrs.github.io/amneziawg-mikrotik-c/configurator.html
- Репозиторий C-версии контейнера: https://github.com/timbrs/amneziawg-mikrotik-c
- Репозиторий catesin/AmneziaWG-MikroTik — полная инструкция: https://github.com/catesin/AmneziaWG-MikroTik
- Официальная документация Amnezia: https://docs.amnezia.org/ru/