Что такое 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-образ.
Установка из исходных кодов:
- Обновите пакеты и установите зависимости:
apt update && apt install -y wireguard-tools build-essential pkg-config libssl-dev git- Клонируйте репозиторий AmneziaWG:
git clone https://github.com/amnezia-vpn/amneziawg-linux-kernel-module
cd amneziawg-linux-kernel-module
make && make install- Сгенерируйте ключи сервера и клиента:
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 или выбора оптимального протокола в зависимости от условий.