Skip to content

Latest commit

 

History

262 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AWG Toolza

Менеджер AmneziaWG 2.0 — одной командой.
3 уровня обфускации, профили мимикрии (TLS / DNS / SIP / QUIC), локальный CPS-генератор, Warp туннель Cloudflare, DPI-тест.


License: MIT Platform Protocol Version


Boosty YooMoney


Быстрый старт

sudo curl -fsSL https://raw.githubusercontent.com/pumbaX/awg-multi-script/main/awg2.sh -o /usr/local/bin/awg2 && sudo chmod +x /usr/local/bin/awg2 && sudo awg2

Запуск в любой момент:

sudo awg2

Канал обновлений

По умолчанию скрипт обновляется из основного репозитория (pumbaX/awg-multi-script) — это стабильный канал. Ранние сборки живут в бета-репозитории (genaRijoff/awg-multi-script): sudo awg28) Обновить скрипт2) Переключиться на бета-канал. Выбор сохраняется в /var/lib/awg2/channel и переживает обновление; вернуться на стабильный канал можно там же (если бета-версия окажется новее, обновление предложит откат). Разовый запуск на бета-канале без сохранения: AWG2_UPDATE_CHANNEL=beta sudo -E awg2.

Канал влияет и на Telegram-бота: установка из пункта 6 берёт его код из того же репозитория.


☁ Warp туннель Cloudflare

Обход блокировки IP сервера в РФ. Когда ТСПУ блокирует IP Hetzner/OVH — заворачиваем выходной трафик через Cloudflare.

Клиент РФ → AWG → твой сервер → Cloudflare → интернет

SSH и серверный трафик идут напрямую — не через Warp.

Меню Warp (Туннели и DNS → Warp):

1) Установить wgcf и зарегистрировать Warp
2) Активировать Warp+ (лицензионный ключ)
3) Включить туннель
4) Выключить туннель
5) Перегенерировать профиль
6) Управление клиентами в Warp     ← кто через Warp, кто напрямую
7) Health-check + auto-failover    ← если упал — direct routing
8) Импорт wgcf-profile.conf        ← если регистрация блокируется
9) Поиск рабочего endpoint         ← если 2408 режется DPI
d) Удалить Warp полностью

Где взять Warp+ ключ:

  • 🥈 Приложение 1.1.1.1 → Аккаунт → Ключ

Если Warp не подключается на РФ хостинге:

  1. Туннели и DNS → Warp → 8 — импорт готового профиля через Google Cloud Shell
  2. Туннели и DNS → Warp → 9 — автоматический поиск рабочего endpoint
  3. Если ничего не помогло — провайдер режет UDP к Cloudflare, нужен другой хостинг

Меню

Меню двухуровневое: 8 категорий, у каждой своё подменю.

╔══════════════════════════════════════════════╗
║    AWG Toolza v6.9.0                         ║
║   AWG 2.0 — TLS / DNS / SIP / QUIC мимик     ║
║              + Warp туннель Cloudflare       ║
╚══════════════════════════════════════════════╝
  IP сервера : 100.20.38.41
  Порт       : 41300
  Интерфейс  : ● активен
  Профиль    : standard
  Клиентов   : 21

  1)  Сервер          — установка
  2)  Клиенты         — управление
  3)  Диагностика     — тест, домены
  4)  Бекапы          — создать, восстановить
  5)  Туннели и DNS   — Warp, DNS, каскад
  6)  Telegram-бот    — управление ботом
  7)  Удаление и сброс
  8)  Обновить скрипт — загрузить с GitHub

   0) Выход

1) Сервер

1) Установка зависимостей и AmneziaWG
2) Создать сервер + первый клиент (выбор профиля и мимикрии)
3) Перезапустить awg0
4) Проверить и починить awg0 (авторемонт)
5) Сбросить настройки сервера (чистая переустановка)

Версия протокола

При создании сервера (и при перегенерации параметров) выбирается версия AmneziaWG. Она общая для всего сервера: клиент другой версии не подключится.

Версия Что добавляет Требования
2.0 Jc/Jmin/Jmax, S1-S4, H1-H4 + мимикрия I1-I5 любой клиент AmneziaWG
3.0 HeaderProtectionKey, ContentPaddingAddition, рандомизация таймеров (RekeyAfterTime, RejectAfterTime, KeepaliveTimeout, MaxHandshakeAttempts), PersistentKeepalive диапазоном tools и модуль с поддержкой 3.0
3.1 плюс RandomTrailers (случайный «хвост» у пакетов рукопожатия — их длина перестаёт быть постоянной) и DisableCookies (сервер не отвечает cookie-пакетами) amneziawg-tools и модуль v3.1.20260812 или новее — и на сервере, и на клиенте

Скрипт проверяет установленные компоненты до перезаписи конфигов: если awg не знает ключей выбранной версии, он предупредит, а не оставит сервер лежать.

DisableCookies = on отключает штатную защиту WireGuard от флуда рукопожатиями — это плата за то, что в трафике не появляется отдельный тип пакета.

2) Клиенты

1) Добавить клиента
2) Переименовать клиента
3) Удалить клиента
4) Показать QR клиента
5) Показать конфиг клиента (текст)
6) Создать N клиентов (массово)
7) Срок действия клиента (auto-suspend по истечении)
8) Активность клиентов
9) Экспорт конфигов (zip)
10) Сменить мимикрию у клиента

3) Диагностика

1) Проверить домены из пулов (ping)
2) Тест DPI мимикрии (захват CPS пакета)

4) Бекапы — создать (~/awg_backup/) / восстановить.

5) Туннели и DNS — Warp туннель Cloudflare, шифрованный DNS, каскад на зарубежный VPS.

7) Удаление и сброс — очистить клиентов / удалить всё.


Профили и мимикрия

При создании сервера (Сервер → 2) выбирается профиль:

Профиль Обфускация Мимикрия I1
Lite базовая DNS (icloud.com)
Standard сбалансированная TLS ClientHello
Pro на выбор (без I1 / +I1 / +I1-I5) TLS / DNS / SIP / QUIC

Профили мимикрии (Pro, выбор уровня I1–I5):

  • QUIC — Initial 1200 Б по RFC 9000 + короткие заголовки. Единственный профиль, где содержимое пакета — шифротекст: смотреть DPI не на что, а по UDP это настоящий протокол. Есть сообщение из поля, что в РФ проходит.
  • DNS — DNS Query c EDNS0 и случайным TXID. Тоже настоящий UDP-протокол и самый компактный: ~40 байт.
  • TLS — ClientHello, Chrome-подобный. ⚠️ TLS-записи поверх UDP не существует — настоящий UDP-TLS это DTLS, а у него другой формат записи. Плюс SNI уходит открытым текстом и не совпадает с IP сервера. Сообщение из поля: конфиг с этим профилем не работал в РФ, но работал в ЕС.
  • SIP — REGISTER-запрос (VoIP). Настоящий UDP-протокол, но целиком открытый текст.

Если конфиг не проходит у конкретного провайдера, профиль меняется у одного клиента без пересоздания: Клиенты → «Сменить мимикрию у клиента». I1–I5 живут только в клиентском конфиге, поэтому сервер и остальные клиенты не затрагиваются.

CPS-пакеты I1–I5 — это клиентские параметры. В серверный awg0.conf они не пишутся (там только Jc/Jmin/Jmax/S/H). Разные клиенты могут иметь разную мимикрию на одном сервере.

Размер CPS-пакетов

I1–I5 уходят перед каждым рукопожатием, поэтому пакеты собираются компактными — но так, чтобы каждый оставался валидным для своего протокола:

Профиль Суммарно I1–I5 Было Что урезано
DNS ~200 Б ~200 Б ничего — и так минимум
TLS ~1.1 КБ ~1.7 КБ пустой legacy_session_id, без padding-расширения и Chrome-специфики (ALPS, compress_certificate, OCSP, SCT), без legacy-шифров
QUIC ~1.5 КБ ~1.8 КБ вместо невалидного второго Initial (300–600 Б) идёт 1-RTT пакет
SIP ~2.0 КБ ~2.7 КБ без Allow/Supported и длинного User-Agent

SNI, key_share x25519, supported_versions, ALPN и GREASE в TLS остаются на месте; в SIP — весь обязательный минимум RFC 3261 плюс Contact и Expires. QUIC I1 остаётся 1200 Б намеренно: RFC 9000 §14.1 требует этого от любой клиентской датаграммы с Initial — сервер обязан отбросить короткий Initial, а для DPI это готовая аномалия.

Вернуть прежние размеры: AWG_CPS_FULL=1 sudo -E awg2.

Пакеты не повторяются

Случайные части I1–I5 не запекаются в конфиг, а описываются тегами, которые клиент заполняет заново при каждой отправке: <r N> — случайные байты, <rc N> — латинские буквы. Так client_random в TLS, хвост шифротекста в QUIC и branch/tag/Call-ID в SIP меняются от рукопожатия к рукопожатию — иначе клиент слал бы байт в байт один и тот же пакет, а это отпечаток устройства, заметный лучше самого факта VPN.

Побочный эффект — конфиг короче: строка QUIC I1 занимает ~600 символов вместо ~3000 при том же размере пакета в 1200 байт.

Целевой клиент

Перед генерацией цепочки скрипт спрашивает, куда поедет конфиг. Диапазоны Jc/S/H — параметры устройства, они одинаковы у сервера и всех клиентов, поэтому выбор влияет только на I1–I5:

Клиент Что учитывается
Amnezia VPN / AmneziaWG всё как обычно
Linux / OpenWrt (модуль ядра) всё как обычно
Keenetic (KeeneticOS 4.x) движок цепочки по исходникам не установлен — предлагается короткий вариант: уровень «+I1» и профиль DNS
WireSock (Windows) цепочку не читает вовсе — конфиг генерируется без I1–I5
Не знаю / разные всё как обычно, цепочка переносима

⚠️ WireSock (форк BoringTun) не поддерживает I1–I5: по документации вендора поля «silently ignored». Туннель поднимается, мимикрии в трафике нет, ошибки тоже нет — поэтому скрипт не кладёт их в конфиг, а говорит об этом прямо. Обфускация H/S/Jc у WireSock работает в полном объёме.

Используются только теги b, r, rc, rd — их понимают оба движка (amneziawg-go и модуль ядра). <c> есть только у ядра, <d>/<ds>/<dz> — только у go, а незнакомый тег отвергается вместе со всем пакетом, а не сам по себе.


🔐 Шифрованный DNS (Туннели и DNS → DNS-шифрование)

Все DNS-запросы клиентов идут через DoH (DNS-over-HTTPS) к Cloudflare / Google / Quad9 с проверкой DNSSEC.

Клиент → AWG → DNAT iptables → dnscrypt-proxy → DoH → Cloudflare/Google/Quad9
                (порт 53)        (127.0.0.1:5300)        (HTTPS зашифрованно)

Что даёт:

  • Защита от DNS-leak (даже если в конфиге клиента указан 8.8.8.8 — запрос пойдёт через шифрованный канал)
  • Провайдер сервера не видит какие домены резолвятся
  • DNSSEC защищает от подмены ответов
  • No-logging резолверы

Меню:

1) Включить (установить + настроить)
2) Перезапустить сервис
3) Логи
4) Сменить upstream (Cloudflare / Google / Quad9 / комбинации)
5) Выключить и удалить

🤖 Telegram бот

Опционально — Telegram бот для управления сервером со смартфона. Добавляешь токен от @BotFather, и бот даёт inline-меню с теми же возможностями что и SSH. Управление полностью кнопками, без команд.

Что умеет:

  • Список клиентов со статусом (🟢 онлайн / ⚪️ офлайн / 🚫 заблокирован, трафик, маршрут, последний handshake), в два столбца, с пагинацией (◀️ ▶️) — корректно работает при сотнях клиентов
  • ↕️ Сортировка по активным — кнопка поднимает онлайн-клиентов наверх
  • 🚨 Сигнал при отвале клиента — добавь #ping в заметку клиента, и если такой клиент пропадает из сети (нет handshake более 5 минут), бот шлёт уведомление (имя, IP, заметка, время пропажи). Чтобы не пропустить упавшее резервирование
  • Добавить клиента — выбор профиля мимикрии прямо в боте (TLS / DNS / SIP / QUIC / базовый)
  • Получить QR-код / .conf файл по любому клиенту (для больших конфигов с I1 QR не помещается — бот автоматически отдаёт .conf)
  • 📝 Заметки к клиентам (произвольный текст; маркер #ping включает мониторинг)
  • ☁️ Вкл/выкл WARP для клиента прямо из карточки — синхронизировано с awg2 (policy-routing через peers.list)
  • Срок действия клиента (1ч / 1д / 7д / 30д / своя дата) с auto-suspend по истечении и уведомлением; снятие срока возвращает доступ
  • 🌐 Смена upstream шифрованного DNS (DNSCrypt: Cloudflare / Google / Cisco / Yandex Safe)
  • Переименовать / удалить клиента с подтверждением
  • Статус сервера (uptime AmneziaWG, IP и порт, профиль, сводка по клиентам и трафику), перезапуск интерфейса, резервная копия

Установка:

Проще всего — через главное меню: sudo awg26) Telegram-бот → Установить.

Или вручную:

sudo bash -c 'curl -fsSL https://raw.githubusercontent.com/pumbaX/awg-multi-script/main/awg-bot-install.sh -o /tmp/awg-bot-install.sh && bash /tmp/awg-bot-install.sh'

В процессе установщик спросит:

  1. Bot Token — получи у @BotFather: /newbot → имя → токен
  2. Telegram ID — твой ID для авторизации (узнать через @userinfobot)

После установки бот стартует как systemd-сервис (awg-bot.service) и сам поднимается при перезагрузке.

Обновление: меню 6) Telegram-бот → Обновить (или пункт 1 в меню установщика, либо sudo awg-bot → 2). Свежая версия тянется с GitHub автоматически, токен и chat_id сохраняются. Переход со старого бота — без потери данных (ADMIN_CHAT_ID переносится в ADMIN_ID автоматически).

Управление в консоли:

sudo awg-bot                        # меню: установка / обновление / статус / логи / удаление

Команды бота:

  • /start — главное меню (inline-кнопки)

Управление сервисом:

sudo systemctl status awg-bot       # статус
sudo systemctl restart awg-bot      # перезапуск
sudo journalctl -u awg-bot -f       # живые логи

Файлы

Путь Назначение
/etc/amnezia/amneziawg/awg0.conf Серверный конфиг
/root/<имя>_awg2.conf Клиентские конфиги
/var/log/awg-Toolza.log Лог
~/awg_backup/ Бекапы
/tmp/awg_domain_cache.txt Кэш проверки доменов (пункт 6)
/usr/local/bin/awg-bot.py Код Telegram-бота
/etc/awg-bot.conf Токен и chat_id бота
/etc/systemd/system/awg-bot.service Сервис бота
/var/log/awg-bot.log Лог бота

Импорт на клиенте

AmneziaVPN (Android / iOS / macOS / Windows / Linux):

  • QR — Клиенты → 4, сканируй с терминала
  • Текст — Клиенты → 5 для больших конфигов (с I1–I5) → копируй в буфер
  • ФайлДобавить туннель → Из файла → передай /root/<имя>_awg2.conf через scp

AmneziaWG3.0 — официальное приложение протокола AmneziaWG:

Keenetic — KeeneticOS 4.x+ или AWG Manager на Entware


Проверка конфига

Проверить свой .conf на валидность, DPI-стойкость и оптимальность параметров можно через AWG Analyzer — полностью локальный JS-инструмент:

  • Детект версии (WireGuard / AWG 1.0 / 1.5 / 2.0) + уровень обфускации
  • Глубокий разбор I1-I5 (валидность <b 0x...>, лимит <r>, протокол)
  • Проверка H1-H4 sub-квадрантов (12/12 = идеал)
  • Security / Stealth / DPI score
  • Рекомендации CRIT/HIGH/MED/LOW + пошаговый upgrade path

Анализатор обновлён под параметры v6.2 — проверки по официальному мануалу AmneziaWG.


Поддержать

Boosty: https://boosty.to/awgtoolza/donate

YooMoney: https://yoomoney.ru/to/4100119521619579

Сеть Адрес
USDT TRC20 TN2rQAsGNHQr8wnneKRD14UMX629D2Ca5q
USDT ERC20 0x721845234eeC44e0a9BaE78402965828C1bc6c57
USDT TON UQCwj-RY2a4BH7sIDDeLb77XRaPDq0mb1FVwyC4UaOGbLMYy
TON UQCdQtJO4CF0Lyeb93X2zdeWeAcDJ-ieBC3AaL7LIqWfMBg3

Отдельная благодарность AWG-Manager


Сообщество AWG-Toolza

AWG Toolza · MIT License

About

No description, website, or topics provided.

Resources

Stars

118 stars

Watchers

2 watching

Forks

Contributors

Languages