Amnezia Box: настройка обфусцированного VPN на своём сервере

Разбираем Amnezia Box — форк sing-box с протоколом AmneziaWG. Установка, настройка, обход DPI, сравнение с AmneziaVPN и ответы на вопросы.

Что такое Amnezia Box и зачем он нужен

Amnezia Box — это специализированный форк популярного прокси-движка sing-box, который добавляет поддержку протокола AmneziaWG (AWG). Протокол AmneziaWG представляет собой модификацию WireGuard с расширенными возможностями обфускации трафика, что делает его эффективным инструментом для обхода глубокой инспекции пакетов (DPI).

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

Amnezia Box сохраняет всю функциональность оригинального sing-box, включая поддержку множества протоколов (Shadowsocks, VMess, VLESS, Trojan, Hysteria2, TUIC, NaiveProxy), гибкую систему маршрутизации и прозрачное проксирование. Однако ключевое отличие — интеграция AWG, которая делает его особенно ценным для пользователей в странах с жёсткой интернет-цензурой.

Ключевые возможности Amnezia Box

Основные возможности Amnezia Box можно разделить на несколько категорий:

  • Поддержка AmneziaWG: полная реализация протокола AWG с параметрами обфускации H1-H4, S3/S4 padding и цепочками I1-I5. Эти параметры позволяют настраивать внешний вид трафика, делая его неотличимым от обычного HTTPS-трафика.
  • Универсальная поддержка протоколов: помимо AWG, доступны Shadowsocks, VMess, VLESS, Trojan, Hysteria2, TUIC и NaiveProxy. Это позволяет выбрать оптимальный протокол под конкретные условия сети.
  • Гибкая маршрутизация: встроенный движок правил поддерживает GeoIP, rule-sets и сопоставление по процессам. Можно настроить, какие сайты или приложения будут идти через VPN, а какие — напрямую.
  • Прозрачное проксирование: поддержка TUN, TProxy и Redirect inbound'ов позволяет перехватывать весь трафик устройства без настройки каждого приложения отдельно.
  • Кроссплатформенность: готовые бинарники и библиотеки доступны для Linux, Windows, macOS, Android и iOS.

Отличия Amnezia Box от AmneziaVPN

Важно понимать разницу между Amnezia Box и AmneziaVPN. AmneziaVPN — это готовое приложение с графическим интерфейсом, которое автоматизирует развёртывание VPN-сервера и предоставляет простые клиенты для всех платформ. Оно использует различные протоколы, включая OpenVPN, WireGuard и собственные модификации.

Amnezia Box — это более низкоуровневый инструмент, предназначенный для опытных пользователей и администраторов. Он не имеет графического интерфейса и управляется через JSON-конфигурацию. Однако он предлагает гораздо больше гибкости: можно точно настроить параметры обфускации, маршрутизацию и использовать дополнительные протоколы.

Если AmneziaVPN — это решение "из коробки", то Amnezia Box — это конструктор, который позволяет собрать VPN-решение под конкретные задачи. Например, можно использовать Amnezia Box как основу для собственного VPN-сервиса или интегрировать его в существующую инфраструктуру.

Установка Amnezia Box на сервер

Установка Amnezia Box может быть выполнена несколькими способами. Самый простой — использовать готовые пакеты для популярных дистрибутивов Linux. Для Debian/Ubuntu доступен APT-репозиторий, для Alpine — APK. Также можно запустить Amnezia Box в Docker-контейнере.

Для пользователей Arch Linux доступен пакет в AUR (amnezia-box). Он собирается из исходников с необходимыми флагами, включая поддержку AmneziaWG, xhttp и mieru. При установке из AUR важно учитывать, что пакет конфликтует с sing-box, поэтому перед установкой нужно удалить оригинальный sing-box.

Если готовых пакетов нет, можно собрать Amnezia Box из исходников. Для этого потребуется Go (версия 1.24 или новее) и компилятор Clang. Сборка выполняется с использованием build-тегов, например with_awg для включения поддержки AmneziaWG. Ветка main содержит стабильные версии, а ветка alpha — экспериментальные.

Базовая конфигурация Amnezia Box

Конфигурация Amnezia Box представляет собой JSON-файл, который описывает все компоненты: логирование, DNS, входящие и исходящие соединения, маршрутизацию. Рассмотрим минимальную конфигурацию для работы с AmneziaWG.

Пример конфигурации для сервера:

{
  "log": {
    "level": "info"
  },
  "inbounds": [
    {
      "type": "tun",
      "tag": "tun-in",
      "address": ["10.0.0.1/24"],
      "auto_route": true
    }
  ],
  "outbounds": [
    {
      "type": "amneziawg",
      "tag": "awg-out",
      "server": "vpn.example.com",
      "server_port": 443,
      "local_address": ["10.0.0.2/24"],
      "private_key": "YOUR_PRIVATE_KEY",
      "peer_public_key": "YOUR_PEER_PUBLIC_KEY",
      "junk_packet_count": 5,
      "junk_packet_size": 40
    }
  ]
}

В этой конфигурации создаётся TUN-интерфейс для захвата всего трафика, и все соединения направляются через AmneziaWG-туннель. Параметры junk_packet_count и junk_packet_size отвечают за обфускацию — они добавляют случайные пакеты в поток, что затрудняет DPI.

Настройка обфускации AmneziaWG

Обфускация AmneziaWG — это ключевая особенность, которая отличает его от стандартного WireGuard. Она включает несколько уровней:

  • Junk packets: добавление случайных пакетов в поток данных. Параметры junk_packet_count и junk_packet_size контролируют количество и размер этих пакетов.
  • Padding: добавление случайных байтов в начало и конец пакетов. Параметры S3/S4 позволяют настраивать диапазоны размеров padding'а.
  • Obfuscation chains: последовательности преобразований, которые применяются к пакетам. Параметры I1-I5 определяют, какие именно преобразования использовать.
  • H1-H4 ranges: диапазоны значений для различных параметров обфускации, которые делают трафик более разнообразным.

Настройка этих параметров требует понимания того, как DPI анализирует трафик. Слишком агрессивная обфускация может снизить производительность, а слишком слабая — не дать нужного эффекта. Рекомендуется начинать со стандартных значений и постепенно увеличивать интенсивность, проверяя доступность заблокированных ресурсов.

Маршрутизация и правила

Amnezia Box поддерживает мощную систему маршрутизации, которая позволяет гибко управлять трафиком. Правила могут основываться на:

  • Геолокации (GeoIP): можно направлять трафик в зависимости от страны назначения. Например, все запросы к российским сайтам можно отправлять напрямую, а к заблокированным — через VPN.
  • Rule-sets: наборы правил, которые можно загружать из файлов или URL. Это удобно для использования готовых списков заблокированных сайтов.
  • Процессах: можно указать, какие приложения должны использовать VPN, а какие — нет. Это особенно полезно на мобильных устройствах.
  • Доменах: можно задавать конкретные домены или их части для маршрутизации.

Пример правила для маршрутизации:

"route": {
  "rules": [
    {
      "geoip": ["ru"],
      "outbound": "direct"
    },
    {
      "domain_suffix": [".example.com"],
      "outbound": "awg-out"
    }
  ]
}

Это правило отправляет весь трафик к российским IP напрямую, а трафик к доменам example.com — через AmneziaWG-туннель.

Исправление DNS-резолвинга для AWG

Одним из важных улучшений Amnezia Box является исправление DNS-резолвинга для AmneziaWG. В оригинальной реализации sing-box возникали проблемы с разрешением доменных имён внутри туннеля, особенно при использовании FakeIP. Amnezia Box переопределяет методы DialContext() и ListenPacket(), чтобы гарантировать, что FQDN и FakeIP-адреса правильно резолвятся через внутренний DNS-роутер перед установкой туннельного соединения.

Это критически важно для корректной работы VPN, поскольку без правильного DNS-резолвинга многие сайты могут не открываться, даже если туннель установлен. Благодаря этому исправлению, Amnezia Box обеспечивает стабильную работу с AmneziaWG в различных сетевых условиях.

Производительность и ограничения

Обфускация трафика неизбежно сказывается на производительности. Дополнительные пакеты и padding увеличивают объём передаваемых данных, что может снизить скорость соединения. В среднем, производительность AmneziaWG ниже, чем у чистого WireGuard, но это цена за возможность обхода DPI.

Также стоит учитывать, что Amnezia Box — это сложный инструмент, требующий определённых знаний для настройки. Ошибки в конфигурации могут привести к неработоспособности VPN или даже к утечкам трафика. Поэтому перед использованием в production-среде рекомендуется тщательно тестировать конфигурацию.

Ещё одно ограничение — отсутствие официальной поддержки. Проект развивается силами сообщества, и документация может быть неполной. Однако, благодаря активному сообществу, можно найти ответы на большинство вопросов.

Практические примеры использования

Amnezia Box можно использовать в различных сценариях:

  • Личный VPN-сервер: разверните Amnezia Box на VPS и используйте его для защиты своего трафика. Это особенно актуально в странах с жёсткой цензурой.
  • Корпоративный VPN: благодаря гибкой маршрутизации можно настроить доступ к внутренним ресурсам компании, скрывая их от посторонних.
  • Обход блокировок: используйте AmneziaWG для доступа к заблокированным сайтам и сервисам. Обфускация делает трафик неотличимым от обычного HTTPS.
  • Интеграция с другими инструментами: Amnezia Box может работать вместе с Clash API, V2Ray API и другими инструментами, что позволяет создавать сложные прокси-схемы.

Например, можно настроить Amnezia Box как шлюз для всей домашней сети, направив через него трафик с роутера. Это обеспечит защиту для всех устройств, включая Smart TV и игровые консоли.

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

Чем Amnezia Box отличается от AmneziaVPN?

AmneziaVPN — это готовое приложение с графическим интерфейсом, которое автоматизирует настройку VPN-сервера и предоставляет простые клиенты. Amnezia Box — это низкоуровневый прокси-движок (форк sing-box) с поддержкой AmneziaWG, который настраивается через JSON-конфигурацию. Amnezia Box даёт больше гибкости и возможностей для тонкой настройки, но требует технических знаний.

Какие протоколы поддерживает Amnezia Box?

Amnezia Box поддерживает AmneziaWG, Shadowsocks, VMess, VLESS, Trojan, Hysteria2, TUIC, NaiveProxy, а также стандартные протоколы WireGuard и другие. Это позволяет выбрать оптимальный протокол под конкретные условия сети и требования по обфускации.

Как установить Amnezia Box на сервер?

Установка может быть выполнена через пакетные менеджеры (APT, APK), Docker или сборкой из исходников. Для Arch Linux доступен пакет в AUR. При сборке из исходников необходимо использовать build-тег with_awg для включения поддержки AmneziaWG. Требуется Go 1.24+ и Clang.

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

Основные параметры: junk_packet_count и junk_packet_size (количество и размер случайных пакетов), padding (S3/S4 диапазоны), obfuscation chains (I1-I5), а также диапазоны H1-H4. Эти параметры позволяют маскировать трафик под случайные данные, что затрудняет DPI.

Влияет ли обфускация на скорость VPN?

Да, обфускация увеличивает объём передаваемых данных за счёт дополнительных пакетов и padding, что может снизить скорость. Однако это необходимая плата за возможность обхода DPI. В большинстве случаев снижение скорости незначительно и не мешает комфортному использованию.

Можно ли использовать Amnezia Box на Windows или macOS?

Да, Amnezia Box предоставляет бинарники для Windows, macOS, Linux, Android и iOS. Однако на десктопных платформах чаще используется в качестве серверного решения или в составе других инструментов. Для клиентских устройств проще использовать AmneziaVPN или другие клиенты, поддерживающие AmneziaWG.

Какие системные требования для сервера с Amnezia Box?

Минимальные требования: 1 ядро процессора, 512 МБ ОЗУ (для версии 3.1.0) или 1 ГБ для более новых версий, скорость соединения от 100 Мбит/с. Рекомендуется использовать Ubuntu 20.04 или новее. Для Amnezia Box требования аналогичны, так как он работает на том же сервере.