Установка Amnezia на MikroTik: настройка AWG через контейнер Mihomo

Подробное руководство по установке и настройке AmneziaWG (обфусцированного WireGuard) на роутере MikroTik. Рассмотрены требования, генерация ключей, параметры обфускации, конфигурация сервера и клиента через контейнер Mihomo, а также проверка соединения и устранение неполадок.

Что такое AmneziaWG и зачем он нужен на MikroTik

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

На роутерах MikroTik AmneziaWG не поддерживается нативно, но может быть запущен через контейнер Mihomo — легковесный прокси-клиент, работающий в среде RouterOS. Это позволяет использовать все преимущества AWG: высокую скорость UDP, низкую задержку и эффективный обход блокировок. Такой подход особенно актуален для пользователей в регионах с жёсткой интернет-цензурой, где обычный WireGuard может быть недоступен.

Основные отличия AmneziaWG от WireGuard:

  • Junk packets — отправка мусорных пакетов в начале handshake.
  • Init packet junk — случайные данные внутри init-пакета.
  • Packet magic header — изменение заголовков пакетов для маскировки.
  • Параметры обфускации задаются отдельно и игнорируются обычным WireGuard, что обеспечивает обратную совместимость.

Требования и подготовка к установке

Перед началом настройки убедитесь, что у вас есть:

  • Роутер MikroTik с поддержкой контейнеров (RouterOS версии 7.4+).
  • VPS-сервер под управлением Linux (Ubuntu/Debian) для размещения сервера AmneziaWG.
  • Открытый UDP-порт на сервере (по умолчанию 51820).
  • Доступ к административной панели MikroTik через WinBox, WebFig или SSH.
  • Подписка на Amnezia VPN или собственный сервер AWG.

Рекомендуется сделать резервную копию текущей конфигурации MikroTik перед внесением изменений. Также обновите RouterOS до последней стабильной версии — это обеспечит совместимость с новыми функциями контейнеризации и повысит безопасность устройства.

Для работы контейнера Mihomo потребуется настроить монтирование директорий и файлов конфигурации. Убедитесь, что на роутере есть достаточно свободного места (USB-накопитель или внутренняя память) для хранения образов и конфигов.

Настройка сервера AmneziaWG на VPS

Первым шагом необходимо развернуть серверную часть AmneziaWG на вашем VPS. Это можно сделать двумя способами: установкой из исходных кодов или через Docker-образ.

Установка из исходных кодов:

  1. Обновите пакеты и установите зависимости:
   apt update && apt install -y wireguard-tools build-essential pkg-config libssl-dev git
  1. Клонируйте репозиторий AmneziaWG:
   git clone https://github.com/amnezia-vpn/amneziawg-linux-kernel-module
   cd amneziawg-linux-kernel-module
   make && make install
  1. Сгенерируйте ключи сервера и клиента:
   wg genkey | tee /etc/amneziawg/server_private.key | wg pubkey > /etc/amneziawg/server_public.key
   wg genkey | tee /etc/amneziawg/client_private.key | wg pubkey > /etc/amneziawg/client_public.key

Установка через Docker (рекомендуется):

docker run -d --name=amneziawg --cap-add=NET_ADMIN --cap-add=SYS_MODULE \
  -p 51820:51820/udp -v /opt/awg:/etc/amneziawg \
  --restart unless-stopped ghcr.io/amnezia-vpn/amneziawg:latest

После установки создайте конфигурационный файл сервера /etc/amneziawg/awg0.conf с указанием приватного ключа, адреса подсети, параметров обфускации и информации о клиенте. Включите IP forwarding и запустите интерфейс командой awg-quick up awg0.

Генерация параметров обфускации AmneziaWG

Ключевая особенность AmneziaWG — использование случайных параметров обфускации, которые должны быть одинаковыми на сервере и клиенте. Эти параметры маскируют трафик под случайный UDP и делают его неотличимым от обычного сетевого шума.

Основные параметры:

  • Jc (Junk packet count) — количество мусорных пакетов, отправляемых в начале handshake (обычно 3–10).
  • Jmin / Jmax — минимальный и максимальный размер мусорных пакетов (от 10 до 1000 байт).
  • S1 / S2 — размер мусора в init-пакете и response-пакете (50–150 байт).
  • H1, H2, H3, H4 — «магические заголовки» (4 байта каждый), которые заменяют стандартные заголовки WireGuard.

Для генерации случайных значений можно использовать команды:

echo $((RANDOM % 8 + 3))        # Jc
echo $((RANDOM % 491 + 10))     # Jmin
echo $((RANDOM % 491 + 510))    # Jmax
echo $((RANDOM % 100 + 50))     # S1
echo $((RANDOM % 100 + 50))     # S2
echo $((RANDOM % 4294967295 + 1))  # H1, H2, H3, H4

Все сгенерированные значения необходимо записать и использовать в конфигурации как сервера, так и клиента. Несовпадение хотя бы одного параметра приведёт к невозможности установить соединение.

Настройка клиента на MikroTik через контейнер Mihomo

MikroTik не поддерживает AmneziaWG напрямую, поэтому используется контейнер Mihomo — прокси-клиент, который умеет работать с AWG как с типом прокси. Настройка состоит из нескольких этапов.

Шаг 1. Создание конфигурационного файла AWG На USB-накопителе или в директории монтирования контейнера создайте файл wg0.conf:

[Interface]
PrivateKey =
Address = 10.8.0.2/24
DNS = 1.1.1.1
Jc = 5
Jmin = 23
Jmax = 911
S1 = 79
S2 = 63
H1 = 1478613713
H2 = 2928809387
H3 = 1973566327
H4 = 1897762677

[Peer]
PublicKey =
Endpoint = :51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Шаг 2. Монтирование директории в контейнер Добавьте монтирование через команду:

/container/mounts add dst=/etc/mihomo/awg name=MIHOMO_AWG src=/usb1/docker_configs/mihomo_mikrotik/awg

Затем пересоздайте контейнер с новым монтированием.

Шаг 3. Настройка config.yaml для Mihomo В файле конфигурации Mihomo добавьте прокси типа wireguard с параметрами amnezia-wg-option:

proxies:
  - name: "AWG-Server"
    type: wireguard
    server:
    port: 51820
    ip: 10.8.0.2
    private-key: ""
    public-key: ""
    allowed-ips:
      - 0.0.0.0/0
    dns:
      - 1.1.1.1
      - 8.8.8.8
    amnezia-wg-option:
      jc: 5
      jmin: 23
      jmax: 911
      s1: 79
      s2: 63
      h1: 1478613713
      h2: 2928809387
      h3: 1973566327
      h4: 1897762677

После этого настройте proxy-groups и rules для маршрутизации трафика.

Маршрутизация трафика и NAT на MikroTik

Чтобы весь трафик с устройств локальной сети шёл через VPN, необходимо настроить маршрутизацию и NAT на MikroTik. Это можно сделать через терминал или WinBox.

Добавление маршрута по умолчанию:

/ip route add dst-address=0.0.0.0/0 gateway=<IP-адрес VPN-сервера>

Настройка NAT (маскарадинг):

/ip firewall nat add chain=srcnat action=masquerade out-interface=wg-amnezia

Если вы используете контейнер Mihomo, маршрутизация может быть настроена внутри самого контейнера через правила TUN. В этом случае дополнительная настройка NAT на роутере не требуется — достаточно указать в rules Mihomo направление всего трафика через прокси.

Для проверки корректности маршрутизации можно временно отключить прямое подключение к интернету на MikroTik и убедиться, что устройства продолжают выходить в сеть через VPN.

Проверка соединения и мониторинг

После завершения настройки необходимо проверить, что соединение установлено и работает корректно.

На сервере: Выполните команду awg show awg0. В выводе должен отображаться peer с информацией о последнем handshake и переданных данных. Если handshake не отображается, проверьте параметры обфускации и открытость порта.

На MikroTik: Проверьте логи контейнера:

/log/print where topics~"container"

Убедитесь, что контейнер Mihomo запущен и нет ошибок монтирования.

Проверка внешнего IP: С любого устройства в локальной сети откройте сайт 2ip.ru или аналогичный. Отображаемый IP-адрес должен соответствовать IP вашего VPS, а не домашнего провайдера. Если этого не происходит, проверьте правила маршрутизации и NAT.

Для постоянного мониторинга можно настроить отправку логов или использовать встроенные инструменты RouterOS для отслеживания состояния интерфейсов.

Устранение типичных неполадок

При настройке AmneziaWG на MikroTik могут возникнуть следующие проблемы:

Handshake не проходит

  • Убедитесь, что параметры Jc, Jmin, Jmax, S1, S2, H1–H4 идентичны на сервере и клиенте.
  • Проверьте, открыт ли UDP-порт на сервере: nc -u -v 51820.
  • Проверьте настройки файрвола на сервере: ufw status или iptables -L INPUT -n.

Нет трафика после handshake

  • Проверьте, включён ли IP forwarding на сервере: sysctl net.ipv4.ip_forward (должно быть 1).
  • Убедитесь, что настроено NAT-правило на сервере: iptables -t nat -L POSTROUTING -n -v.

Конфиг AWG не подхватывается Mihomo

  • Файл wg0.conf должен иметь окончания строк LF (Unix), а не CRLF (Windows).
  • Проверьте путь монтирования: файл должен находиться по пути /etc/mihomo/awg/wg0.conf внутри контейнера.
  • Пересоздайте контейнер после изменения монтирования.

Низкая скорость соединения

  • Попробуйте уменьшить количество мусорных пакетов (Jc) или их размер (Jmin/Jmax).
  • Убедитесь, что VPS имеет достаточную пропускную способность и низкую задержку до вашего региона.

Сравнение AmneziaWG с альтернативными протоколами

AmneziaWG — не единственный способ обхода блокировок на MikroTik. Рассмотрим его основные альтернативы.

VLESS Reality

  • Протокол: TCP (порт 443).
  • Обфускация: имитация TLS-сайта.
  • Задержка: чуть выше из-за TCP.
  • Блокировка UDP: не уязвим.
  • Нативная поддержка MikroTik: через контейнер.

OpenVPN

  • Протокол: UDP или TCP.
  • Обфускация: возможна через дополнительные плагины.
  • Задержка: выше из-за сложного handshake.
  • Блокировка: легко детектится DPI.
  • Нативная поддержка MikroTik: есть, но требует настройки.

WireGuard (стандартный)

  • Протокол: UDP.
  • Обфускация: отсутствует.
  • Задержка: минимальная.
  • Блокировка: легко детектится по заголовкам.
  • Нативная поддержка MikroTik: есть встроенная.

AmneziaWG сочетает низкую задержку WireGuard с эффективной обфускацией, что делает его оптимальным выбором для регионов с DPI. Однако он уязвим к блокировке UDP-трафика на уровне провайдера — в таких случаях лучше использовать VLESS Reality на TCP.

Рекомендации по безопасности и обслуживанию

Чтобы ваше VPN-соединение оставалось безопасным и стабильным, следуйте этим советам:

  • Регулярно обновляйте RouterOS и контейнер Mihomo — новые версии содержат исправления уязвимостей и улучшения совместимости.
  • Меняйте ключи WireGuard периодически — это снижает риск компрометации.
  • Настройте автоматический запуск контейнера при перезагрузке MikroTik — используйте параметр --restart unless-stopped или скрипты RouterOS.
  • Делайте резервные копии конфигурации — это позволит быстро восстановить работу после сбоя.
  • Используйте failover — настройте автоматическое переключение на резервный канал в случае проблем с VPN.
  • Не используйте одинаковые параметры обфускации для разных серверов — генерируйте уникальные значения для каждого подключения.

Помните, что безопасность — это непрерывный процесс. Регулярно проверяйте логи и обновляйте настройки в соответствии с новыми угрозами.

Вопросы и ответы

Можно ли установить AmneziaWG напрямую на MikroTik без контейнера?

Нет, RouterOS не поддерживает AmneziaWG нативно. Единственный способ запустить AWG на MikroTik — использовать контейнер Mihomo, который выступает в роли прокси-клиента и поддерживает обфусцированный WireGuard.

Какие параметры обфускации нужно указывать на клиенте?

На клиенте необходимо указать те же параметры, что и на сервере: Jc, Jmin, Jmax, S1, S2, H1, H2, H3, H4. Они задаются в конфигурационном файле wg0.conf и в config.yaml Mihomo в секции amnezia-wg-option.

Что делать, если handshake не проходит?

Проверьте:

  • Совпадение параметров обфускации на сервере и клиенте.
  • Открытость UDP-порта на сервере (по умолчанию 51820).
  • Настройки файрвола на сервере.
  • Правильность ключей и IP-адресов.
  • Формат файла wg0.conf (должен быть LF, а не CRLF).
Как проверить, что трафик действительно идёт через AmneziaWG?

С любого устройства в локальной сети откройте сайт 2ip.ru или аналогичный. Если отображается IP вашего VPS, а не домашнего провайдера — соединение работает. Также можно проверить статистику на сервере командой awg show awg0.

Можно ли использовать AmneziaWG вместе с другими протоколами на MikroTik?

Да, вы можете настроить несколько прокси в Mihomo (например, AWG и VLESS Reality) и переключаться между ними через proxy-groups. Это удобно для failover или выбора оптимального протокола в зависимости от условий.