Amnezia 2.0 на Ubuntu: установка, настройка и обход DPI

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

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

AmneziaWG 2.0 — это форк WireGuard, разработанный командой Amnezia для противодействия глубокому анализу пакетов (DPI). В отличие от классического WireGuard, который легко идентифицировать по фиксированной сигнатуре в первом пакете, AmneziaWG 2.0 добавляет несколько уровней обфускации: случайные junk-пакеты, маскировку заголовков (H1–H4), изменение размеров пакетов (S1–S4) и скрывающие пакеты I1–I5. Это делает трафик похожим на обычный UDP-поток, например, видеозвонок, что позволяет обходить блокировки в России, Иране, Китае и на корпоративных сетях.

Версия 2.0 принципиально отличается от 1.x: полностью изменены параметры обфускации, конфигурационные файлы несовместимы. Если у вас установлена версия 1.x, перед обновлением необходимо полностью удалить старую и создать новые клиентские конфиги. Важно понимать, что AmneziaWG 2.0 не даёт 100% гарантии обхода DPI — эффективность зависит от оператора и региона, но на текущий момент это один из самых надёжных протоколов для самостоятельного хостинга VPN.

Подготовка сервера: выбор VPS и системные требования

Для установки AmneziaWG 2.0 подойдёт чистый VPS с Ubuntu 24.04 LTS или Debian 13. Минимальные требования — 1 vCPU, 512 МБ RAM и 5 ГБ диска. Этого достаточно для комфортной работы VPN на несколько устройств. Важно, чтобы сервер был выделенным, а не домашним роутером или общим хостингом — скрипт оптимизирует систему под единственную задачу VPN.

При выборе провайдера обратите внимание на наличие аварийной консоли: если SSH перестанет отвечать после перезагрузки или из-за файрвола, консоль станет единственным способом восстановить доступ. Также проверьте, что сервер поддерживает архитектуру amd64 или arm64 — для ARM (Raspberry Pi, Hetzner CAX, Oracle Ampere) есть предустановленные модули, что упрощает установку.

Перед началом убедитесь, что у вас есть root-доступ по SSH. Если SSH слушает нестандартный порт, укажите его при установке через флаг --ssh-port, иначе скрипт может не обнаружить его автоматически.

Автоматическая установка AmneziaWG 2.0 скриптом

Самый простой способ развернуть AmneziaWG 2.0 на Ubuntu — использовать готовый скрипт install_amneziawg.sh из репозитория bivlked/amneziawg-installer. Скрипт выполняет полную настройку: устанавливает ядерный модуль через DKMS, генерирует параметры обфускации, создаёт клиентские конфиги с QR-кодами, настраивает UFW, Fail2Ban и sysctl-харденинг, а также оптимизирует систему под VPN-сервер (BBR, буферы, swap).

Установка запускается одной командой:

wget -O install_amneziawg.sh https://raw.githubusercontent.com/bivlked/amneziawg-installer/main/install_amneziawg.sh
chmod +x install_amneziawg.sh
sudo ./install_amneziawg.sh

Для неинтерактивной установки (например, в автоматизации) используйте флаги:

sudo ./install_amneziawg.sh --port=51820 --disallow-ipv6 --route-amnezia --yes

Скрипт поддерживает state machine с возобновлением: если установка прервётся перезагрузкой, повторный запуск продолжит с того же шага. После завершения вы получите QR-код и vpn-ссылку для импорта в клиент Amnezia.

Управление клиентами: добавление, удаление, временный доступ

После установки управление клиентами осуществляется через скрипт manage_amneziawg.sh. Основные команды:

  • sudo ./manage_amneziawg.sh add client2 — добавить нового клиента;
  • sudo ./manage_amneziawg.sh list — список клиентов;
  • sudo ./manage_amneziawg.sh remove client2 — удалить клиента;
  • sudo ./manage_amneziawg.sh regen client2 — перегенерировать ключи клиента.

Скрипт поддерживает пакетное добавление: manage add client1 client2 client3 — это выполнит один syncconf вместо трёх, что снижает риск kernel panic. Также есть флаг --expires=7d для создания временных клиентов с автоудалением по крону — удобно для гостевого доступа.

Для автоматизации предусмотрен JSON-вывод: manage list --json или manage stats --json. Это позволяет интегрировать управление с Telegram-ботами или другими скриптами. Например, сторонний бот awgram уже работает на этом интерфейсе.

Настройка обфускации под мобильных операторов

Одна из ключевых особенностей AmneziaWG 2.0 — гибкая настройка обфускации. Параметры Jc/Jmin/Jmax (junk-пакеты), S1–S4 (padding), H1–H4 (маскировка заголовков) и I1–I5 (скрывающие пакеты) можно подбирать под конкретного оператора связи. Для мобильных сетей в России нет единого универсального профиля: DPI у разных операторов ведёт себя по-разному.

Скрипт предоставляет флаг --preset=mobile, который выставляет Jc=3 и узкий диапазон Jmax (Jmin+20..80). Однако для некоторых операторов (например, Tele2 Красноярск или Мегафон в регионах) может потребоваться ручная правка I1. В таких случаях рекомендуется тестировать параметры на клиентском устройстве, не переустанавливая сервер: достаточно изменить файл конфигурации на телефоне.

Важно: параметры S1–S4 и H1–H4 должны совпадать на сервере и клиенте, иначе пакеты будут отбрасываться. Jc/Jmin/Jmax и I1–I5 не обязаны совпадать — это отдельные decoy-пакеты, которые другая сторона просто игнорирует.

Установка клиента Amnezia VPN на Ubuntu

Для подключения к серверу AmneziaWG 2.0 на Ubuntu можно использовать официальный клиент Amnezia VPN. Он распространяется в виде портативного AppImage со страницы релизов GitHub-репозитория amnezia-vpn/amnezia-client или с сайта amnezia.org. Установка проста:

  1. Определите архитектуру: uname -m (обычно x86_64).
  2. Скачайте AppImage из официального релиза.
  3. Дайте права на запуск: chmod +x ./AmneziaVPN*.AppImage.
  4. Запустите: ./AmneziaVPN*.AppImage.

Если при запуске возникает ошибка про FUSE, установите библиотеку: sudo apt install libfuse2 (Ubuntu/Debian) или sudo pacman -S fuse2 (Arch). При первом подключении клиент запросит права через polkit — введите пароль sudo.

Импортируйте конфигурацию: файл .conf/.vpn, вставка строки или QR-код. После подключения проверьте, что внешний IP сменился на адрес сервера (curl ifconfig.me) и нет утечек DNS.

Альтернативные способы установки: Docker и userspace

Некоторые пользователи предпочитают запускать AmneziaWG в Docker-контейнере. Однако скрипт install_amneziawg.sh устанавливает ядерный модуль через DKMS, что невозможно из контейнера. Docker-решения используют userspace-реализацию amneziawg-go, которая заметно медленнее. Если Docker принципиален, можно использовать проекты amneziawg-web-ui или amnezia-wg-easy, но учтите потерю производительности.

Для LXC-контейнеров также доступен userspace-вариант, но он требует ручной настройки. В целом, для максимальной скорости и стабильности рекомендуется использовать ядерный модуль, который ставится скриптом.

Если вы хотите развернуть зеркальный сервер, можно использовать backup/restore: на первом сервере выполните manage_amneziawg.sh backup, скопируйте архив на второй, установите скрипт и выполните restore. Это перенесёт конфиги, ключи и клиентов. Endpoint придётся заменить вручную, если IP отличается.

Решение типичных проблем при установке и подключении

Рассмотрим частые ошибки и способы их устранения.

Проблема: AppImage не запускается, ошибка про FUSE. Решение: установите libfuse2 (Ubuntu/Debian) или fuse2 (Arch).

Проблема: туннель не поднимается, пароль не запрашивается. Решение: убедитесь, что установлен polkit, и введите пароль sudo в системном диалоге.

Проблема: подключение активно, но нет интернета. Решение: проверьте конфигурацию и DNS, пересоздайте ключи.

Проблема: AmneziaWG не подключается, хотя WireGuard работает. Решение: почти всегда это несовпадение параметров обфускации. Сравните S1–S4 и H1–H4 на сервере и клиенте — они должны совпадать. Также проверьте версию amneziawg-tools: старые сборки не поддерживают 2.0.

Проблема: kernel panic при управлении клиентами. Решение: обновите скрипт до последней версии (v5.7.11+), где исправлен deadlock в ядерном модуле. Используйте batch-режим для добавления клиентов.

Проблема: код ошибки 1100 (ApiConfigDownloadError). Решение: проверьте интернет-соединение, смените сеть, убедитесь, что подписка активна.

Сравнение с официальным приложением Amnezia и другими инструментами

Скрипт amneziawg-installer и официальное приложение Amnezia используют один и тот же протокол AmneziaWG 2.0, но отличаются подходом к развёртыванию. Официальное приложение предоставляет графический интерфейс и автоматическую настройку сервера, но часто требует Docker и не даёт тонкой настройки обфускации. Скрипт же ставит ядерный модуль напрямую, что обеспечивает более высокую скорость и меньший след на сервере.

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

Важно помнить, что AmneziaWG 2.0 — это не панацея. Некоторые операторы могут адаптировать свои DPI, поэтому следите за обновлениями протокола и сообществом.

Обновление и обслуживание сервера

Для обновления скрипта до новой версии скачайте свежий релиз и запустите с флагом --force. Серверные ключи, клиенты и настройки обфускации сохранятся. После обновления ядра DKMS автоматически пересоберёт модуль для нового ядра. На ARM-серверах с предустановленным модулем повторный запуск установщика установит модуль для текущего ядра.

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

Скрипт поддерживает флаг --no-tweaks, если вы не хотите, чтобы он менял системные настройки (например, если сервер уже оптимизирован). Для автоматизации используйте --yes и --json — это позволит интегрировать установку в CI/CD.

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

Можно ли установить AmneziaWG 2.0 поверх версии 1.x?

Нет, установить поверх нельзя. В AmneziaWG 2.0 полностью изменены параметры обфускации, и конфигурационные файлы несовместимы с 1.x. Необходимо сначала удалить старую версию (например, sudo bash install_amneziawg.sh --uninstall), а затем установить заново. При удалении бэкап сохранится в /root/. После переустановки клиентам нужно раздать новые конфиги — старые не подойдут.

Какие минимальные требования к VPS для AmneziaWG 2.0?

Достаточно 1 vCPU, 512 МБ RAM и 5 ГБ диска. Сервер должен быть выделенным, а не домашним роутером или общим хостингом. Поддерживаются архитектуры amd64 и arm64. Для ARM (Raspberry Pi, Hetzner CAX, Oracle Ampere) есть предустановленные модули, что упрощает установку.

Как настроить обфускацию для мобильного оператора?

Используйте флаг --preset=mobile при установке — он выставляет Jc=3 и узкий диапазон Jmax. Однако для некоторых операторов (Tele2 Красноярск, Мегафон в регионах) может потребоваться ручная правка I1. Тестируйте параметры на клиентском устройстве, изменяя только файл конфигурации, без переустановки сервера. Параметры S1–S4 и H1–H4 должны совпадать на сервере и клиенте.

Что делать, если AmneziaWG не подключается, а WireGuard работает?

Почти всегда это несовпадение параметров обфускации. Сравните [Interface] параметры на сервере и клиенте: S1–S4 и H1–H4 должны совпадать, иначе пакеты отбрасываются. Jc/Jmin/Jmax и I1–I5 не обязаны совпадать. Также проверьте версию amneziawg-tools — старые сборки не поддерживают 2.0.

Можно ли запустить AmneziaWG в Docker?

Да, но только через userspace-реализацию amneziawg-go, которая медленнее ядерного модуля. Скрипт install_amneziawg.sh ставит ядерный модуль через DKMS, что невозможно в контейнере. Если Docker принципиален, используйте проекты amneziawg-web-ui или amnezia-wg-easy, но учтите потерю производительности.

Как обновить скрипт установки до новой версии?

Скачайте новый релиз скрипта и запустите с флагом --force. Серверные ключи, клиенты и настройки обфускации сохранятся. После обновления ядра DKMS автоматически пересоберёт модуль. На ARM-серверах повторный запуск установщика установит модуль для текущего ядра.

Какие коды ошибок Amnezia VPN встречаются и что они означают?

Код 1100 (ApiConfigDownloadError) — не удалось получить конфигурацию из API: проверьте интернет или подписку. Код 1108 (ApiConfigLimitError) — превышен лимит конфигураций (Premium до 7 устройств). Коды 300/305 — ошибки SSH (неверные креды или таймаут). Код 1000 — ошибка VPN-подключения на Android, проверьте формат конфига.