Skip to content

About

No description, website, or topics provided.

Resources

Stars

151 stars

Watchers

4 watching

Forks

Repository files navigation

AWG Toolza

Менеджер AmneziaWG 2.0 / 3.1 — одной командой, из консоли или из Telegram.
3 уровня обфускации, 9 профилей мимикрии (QUIC / cURL QUIC+ECH / DNS / STUN / WebRTC / SIP / NTP / RTP / SSDP), локальный CPS-генератор на базе payloadGen, Warp туннель Cloudflare, DPI-тест.


License: MIT Platform Protocol Version


Boosty YooMoney


Быстрый старт БЕТА

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

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

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

История версий — CHANGELOG.md.

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

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

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

Обновления подписаны: рядом с awg2.sh лежит awg2.sh.sig (ssh-keygen -Y sign, ставит GitHub Actions), и awg2 перед установкой новой версии проверяет подпись ключом релизов, вшитым в сам скрипт. Сборку, подменённую на зеркале (ghproxy и др.) или по пути, он не поставит. Проверить файл вручную:

echo 'awg-toolza-release namespaces="awg-toolza" <ключ из UPDATE_SIGNERS в awg2.sh>' > allowed
ssh-keygen -Y verify -f allowed -I awg-toolza-release -n awg-toolza -s awg2.sh.sig < awg2.sh

Сроки, лимиты трафика и скорость клиентов

Таймер awg2-expire каждые 15 секунд (по часам) проверяет сроки клиентов и ведёт учёт трафика по дням (92 дня, /var/lib/awg2/traffic.json). Если таймер замолчал дольше чем на 5 минут, любой запуск awg2 (меню, бот, панель) перезапускает его. Клиенту можно задать:

  • срок — по его истечении клиент блокируется (не удаляется), срок можно снять;
  • лимит трафика — в месяц (счётчик обнуляется 1-го числа, клиент разблокируется сам) или всего (с момента установки). При 90% приходит предупреждение. Исчерпал — на выбор: блокировать (как истёкший) или замедлять до 1, 2 или 5 Мбит/с — клиент остаётся на связи, в новом месяце (или после смены лимита) скорость возвращается сама;
  • скорость — одна цифра в Мбит/с на скачивание и отдачу. Действует при любом маршруте (напрямую, WARP, Xray, exit-ноды); один конфиг на нескольких устройствах делит скорость между ними. Если клиент ещё и замедлен по лимиту — действует меньшая.

Скорость режет tc ядра: скачивание — HTB на выходе awg0 по адресу клиента, отдача — через ifb-интерфейс awg0-ifb (нет модуля ifb — полисером на входе awg0). Пока ограничений нет ни у кого, очередь awg0 не трогается; поставленную руками свою очередь tc на awg0 awg2 не затирает. После перезапуска awg0 или перезагрузки правила ставит заново тот же таймер — в течение 15 секунд.

Меню: Клиенты → Сроки, лимиты и скорость (там же — трафик по дням столбиками). В боте — карточка клиента (📶 Лимит трафика, 🚀 Скорость, 📊 Трафик по дням), в панели — карточка клиента с графиком за 30 дней и «Обзор» с графиком за 14 дней. API: awg2 api client speed ИМЯ 20|off, awg2 api client limit-mode ИМЯ block|1|2|5. Об истечении, блокировке, замедлении и их снятии владельцам и админам бота пишет сам таймер — даже когда бот остановлен.


Требования к клиентам

Версия протокола задаётся на весь сервер, поэтому клиент обязан её понимать:

версия сервера что нужно клиенту
AWG 2.0 любой клиент AmneziaWG
AWG 3.1 AmneziaVPN 5.0.1.5 или новее

Клиент старше 5.0.1.5 не знает ключей RandomTrailers и DisableCookies и отказывается импортировать конфиг с незнакомым ключом целиком — не «пропускает строку», а отвергает весь файл. Если среди ваших клиентов есть те, кого обновить нельзя, поднимите им отдельный сервер на 2.0.

Отдельно: HeaderProtectionKey, S1-S4, H1-H4 и RandomTrailers обязаны совпадать у сервера и клиента побайтово. Расхождение проявляется молчанием — в awg show просто никогда не появится latest handshake, без единой строки в логах.

Параметры вручную

Сервер → Протокол и параметры AWG → Изменить параметры вручную (в боте и панели — Сервер → 🎛 Параметры AWG): Jc, Jmin, Jmax, S1-S4, H1-H4, а на 3.x — ContentPaddingAddition, таймеры, RandomTrailers и DisableCookies. В боте и панели есть кубик 🎲: случайные значения из того же генератора — «кроме S и H» (старые конфиги продолжат работать) или все поля; в панели — ещё у каждой группы. Кубик только подставляет значения, применяются они как ручная правка. Ввод проверяется по тем же правилам, что соблюдает генератор:

  • запрещено то, что ломает сервер: S1-S4 < 12 на 3.x, S4 > 32, Jc > 128, Jmin > Jmax, пакеты рукопожатия одной длины (S1 + 56 = S2 и т. п.), пересекающиеся H1-H4, RejectAfterTime не больше RekeyAfterTime;
  • предупреждение (можно сохранить всё равно): почти совпадающие длины, H в 1-4 или выше 2147483647 на 2.0, узкий диапазон H, Jc вне 3-12, нет запаса MTU до 1500.

Новые значения пишутся в сервер и во все клиентские конфиги; перед этим — авто-бэкап, а если awg0 не поднимется, возвращаются прежние. После правки S или H клиентам нужны новые конфиги (бот и панель предложат архив всех конфигов в чат); Jc/Jmin/Jmax, паддинг данных и таймеры совпадать не обязаны — старые конфиги продолжают работать. HeaderProtectionKey меняется только перегенерацией (Протокол → новые параметры).


Модуль ядра и amneziawg-tools

awg2 собирает модуль amneziawg (DKMS) и amneziawg-tools из исходников апстрима и следит за ними сам: Сервер → Модуль ядра и утилиты показывает, что стоит, под какие ядра собрано и есть ли новые теги, и умеет:

  • обновить модуль до последнего тега или выбрать тег из списка;
  • обновить amneziawg-tools;
  • пересобрать модуль под все установленные ядра (после обновления ядра) — недостающие заголовки ядер ставятся сами;
  • перезагрузить модуль без перезагрузки сервера;
  • откатиться из резервной копии исходников.

Перед заменой сборки делается резервная копия исходников и пробная компиляция новых: если новый код не собирается под это ядро, старая сборка остаётся на месте. Если apt поставил новое ядро, а модуль под него не собрался (как с Ubuntu 7.0.0-38), после перезагрузки VPN не поднялся бы: Тулза видит такое ядро заранее и предупреждает в шапке меню, на главной бота и панели и уведомлением бота. Перезагрузка модуля кладёт туннели на несколько секунд; если SSH идёт через сам туннель, перезапуск уходит в systemd-run, чтобы не потерять сервер. Для AWG 3.1 нужен модуль и tools с поддержкой 3.1 — переход на 3.1 (Сервер → Протокол) предложит обновить их сам.


Туннели: Xray, tun2socks, AWG-exit

Раздел Туннели и DNS — Warp, шифрованный DNS, каскад портов, плюс:

  • Xray — outbounds из ссылок vless:// / vmess:// / trojan:// / ss:// / hysteria2://, балансировка (random / roundRobin / leastPing / leastLoad), выбор того, кто из клиентов идёт в туннель. Трафик уходит через интерфейс xray0. РФ-сайты напрямую (Туннели → Xray): .ru/.su/.рф, сервисы «только из РФ» и РФ-IP идут с сервера мимо туннеля — для сервера в РФ с выходом за границу. Базы runetfreedom обновляются раз в неделю. Свой выход клиенту (Туннели → Xray → «Свой выход клиенту», в боте и панели — Маршрут клиента): при нескольких ссылках клиенту можно закрепить конкретный выход без балансировщика; остальные идут через выход по умолчанию.
  • tun2socks — весь трафик AWG-клиентов в готовый SOCKS5 (awg-tun2socks.service)
  • AWG exit-ноды — каскад через другие AWG-серверы, ECMP-балансировка, можно назначить клиенту конкретную ноду (Туннели → AWG exit-ноды → Клиенты): один выходит через одну страну, другой — через другую

Одновременно может быть активен только один из Warp / Xray / tun2socks / exit — скрипт проверяет это при включении каждого.

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

Про xray0: старые сборки Xray не умеют inbound tun, поэтому скрипт спрашивает у самого бинаря (xray run -test), есть ли TUN-вход. Если нет — Xray отдаёт SOCKS5 на 127.0.0.1:10808, а xray0 поднимает поверх него tun2socks; режим виден в статусе туннеля. Свой выход клиенту работает только с TUN-входом самого Xray (он видит адрес клиента, через tun2socks все соединения приходят с 127.0.0.1) — актуальный XTLS/Xray-core его умеет.

Ссылка hysteria2:// ставится в формате Xray 26 и новее (протокол hysteria версии 2): пароль, SNI, ALPN, ECH, pinSHA256 и обфускация salamander переносятся, порт-хоппинг (mport) — нет. allowInsecure Xray 26 больше не принимает: самоподписанному сертификату нужен pinSHA256 в ссылке. Скрипт проверяет каждый outbound на самом бинаре до записи в конфиг и не даёт положить туда то, что Xray не примет; старой сборке Xray без Hysteria2 подскажет обновиться. Разобраться с уже сломанным конфигом помогает Туннели → Xray → Диагностика — покажет причину и предложит убрать неподдерживаемые outbounds.

Туннели переживают перезагрузку: WARP, Xray, tun2socks и exit-ноды живут в постоянных юнитах systemd и восстанавливают маршруты клиентов сами.

CLI:

sudo awg2 --auto                  # неинтерактивная установка сервера и client1
sudo awg2 --add-client имя        # добавить клиента
sudo awg2 --tunnel xray restart   # warp | xray | tun2socks | exits | dns: up | down | restart
sudo awg2 --status                # сводка состояния
sudo awg2 api help                # JSON-интерфейс (им пользуется Telegram-бот)
sudo awg2 --help                  # список аргументов

AUTOINSTALL=1 — то же, что --auto.

Бот не подключается к Telegram

На части серверов (чаще всего в РФ) провайдер блокирует адрес, который DNS отдаёт для api.telegram.org — а отдаёт он ровно один. Переключиться не на что, и бот молча не отвечает.

С версии 2.2.3 бот сам подмешивает к ответу DNS известные адреса Telegram и берёт тот, что отвечает. Настройки для этого не нужно.

Если режут не по IP, нужен прокси: Telegram-бот → Прокси до Telegram (в меню awg2 или в самом боте). Бот сам найдёт все выходы сервера — SOCKS Xray, апстрим tun2socks, WARP, AWG Exit-ноды, TUN-интерфейсы — проверит каждый до Telegram и перезапустит бота. Подойдёт и любой сторонний SOCKS5 или HTTP-прокси. Туннели без SOCKS бот использует через iface://<интерфейс> (привязка сокетов, как curl --interface).

Если туннель выключен (например, аварийным сбросом), прокси на 127.0.0.1 исчезает. Бот это переживает: не достучавшись до прокси, он идёт напрямую с запасными адресами и пишет причину в лог. Когда туннель подняли обратно — systemctl restart awg-bot.

Руками — строка в /etc/awg-bot.conf, затем systemctl restart awg-bot:

BOT_PROXY=socks5://127.0.0.1:10808
# или через туннель:
BOT_PROXY=iface://warp0

Проверить, что запасные адреса подключились:

journalctl -u awg-bot -n 50 | grep 'Запасные адреса'

Строка Запасные адреса Telegram подключены (5 шт.) — всё на месте.


🛡 Антисканер

Сервер → Антисканер (в боте и панели — там же): новые входящие подключения из сетей сканеров РКН, СКИПА и госорганов отбрасываются до SSH, Xray, панелей и Mini App — сервер реже попадает в базы, которые собирают по итогам сканирований. Это не защита от DPI: блокировку по анализу трафика он не отменяет.

  • Списки — публичные traffic-guard-lists: сканеры, СКИПА, сети госорганов (любой можно выключить). Каждая запись проверяется: частные и служебные сети и подсети шире /12 отбрасываются, оборванный ответ не заменяет прежний список.
  • ipset и одно правило первым в INPUT: DROP только новых соединений — открытые (текущий SSH) не рвутся, VPN-трафик клиентов (FORWARD) не трогается. IPv6 — тоже.
  • Твой SSH-адрес, если он в списке, и адреса сервера в исключения попадают сами; свои исключения — адрес или подсеть.
  • Служба ставит правило при загрузке раньше UFW; таймер раз в час возвращает его на место, раз в сутки обновляет списки. iptables-persistent не нужен.
  • Клиенты VPN из этих сетей тоже не подключатся — для них есть исключения.

🐳 Переход с Amnezia (Docker)

Сервер поставлен приложением AmneziaVPN (контейнер amnezia-awg2 или старый amnezia-awg)? Сервер → Перенос из Amnezia (в боте и панели — там же) переносит его в Тулзу без перевыдачи конфигов: ключ сервера, порт, подсеть, параметры AWG (2.0 и 3.1) и все клиенты с их PSK — те же, клиенты подключаются со своими конфигами из Amnezia.

  • Сначала — предпросмотр: протокол, порт, клиенты и их имена (кириллица и пробелы — латиницей, исходное имя видно рядом). Ничего не меняется, пока не нажать «Перенести».
  • Нужны компоненты Тулзы (Сервер → Установить компоненты) и сервер без своего awg0.
  • Контейнер останавливается, а не удаляется: «Вернуть Amnezia» снимает awg0 Тулзы (перед этим — бэкап) и запускает контейнер снова. awg0 не поднялся — Amnezia возвращается сама. Когда всё работает, контейнер можно удалить там же.
  • Из конфига Amnezia берутся только известные параметры с проверкой; команды (PostUp и т.п.) не переносятся — NAT ставит Тулза.
  • Приватных ключей клиентов на сервере нет — они только у клиентов. Перенесённым Тулза не покажет конфиг и QR, а перевыпустит его по просьбе (новый ключ; адрес, сроки и лимиты — прежние, старый конфиг перестаёт подключаться).
  • После переноса приложение AmneziaVPN этим сервером не управляет; как клиент работает как раньше.

WG + обфускатор (как Phobos)

Пункт WG + обфускатор главного меню — второй сервер рядом с AWG: обычный WireGuard (wgobf0) за wg-obfuscator v1.6. Весь трафик клиента маскируется под STUN (видеозвонок) или XOR-обфусцируется. Снаружи виден только порт обфускатора: порт WireGuard закрыт для всего, кроме самого обфускатора.

  • AWG, его клиенты и туннели (Warp / Xray / tun2socks / exit) не затрагиваются: своя подсеть, свои правила iptables (метка awg-wgobf); по умолчанию клиенты wgobf0 выходят напрямую через сервер.
  • Обфускатор собирается из исходников закреплённого тега (коммит сверяется).
  • Клиенту выдаётся комплект в /root/wgobf/<имя>/: wg.conf, obfuscator.conf, install-linux.sh (Debian/Ubuntu одной командой) и памятка для Windows / macOS / OpenWrt / Android.
  • Keenetic с AWG Manager: вкладка «Phobos» — ссылка phobos:// (phobos-link.txt) в нижнее поле «Или конфиг .conf … / ссылка phobos://»; верхнее «Ссылка установки Phobos» — пустым, оно только для http(s)-ссылок панели Phobos. Или вкладка «ClusterM» — поля руками. Всё расписано в keenetic.txt комплекта.
  • Клиенты Phobos совместимы, пока у них выключены obfuscate-bytes и маскировка MEDIA (проверено).
  • Клиенту нужен обфускатор на устройстве: роутер, Linux, Windows, macOS. Для iOS и телефонов без обфускатора есть опция «пускать клиентов без обфускатора» — такие подключаются обычным WireGuard (wg-direct.conf), но их трафик DPI видит как WireGuard.
  • Смена ключа обфускатора — Настройки → Сменить ключ (комплекты перевыпускаются сами).
  • Выход клиентов: напрямую или через туннель — WARP, Xray (выход по умолчанию или свой), exit-ноды (общий выход или своя нода). Всем сразу (и новым) или каждому клиенту: пункт меню «Выход клиентов», в боте «🌐 Выход клиентов» и «🌐 Маршрут» в карточке клиента, в панели — экран «Обфускатор» и карточка клиента. Туннели те же, что у клиентов AWG; работает поднятый, а клиенты выключенного туннеля (и при его отказе) не теряют интернет — идут напрямую.
  • В Telegram-боте — тот же раздел «🛡 WG + обфускатор»: установка, клиенты, комплект одним архивом и ссылка phobos://, настройки, смена ключа.
  • Без меню: awg2 --wgobf add|del|bundle ИМЯ, awg2 --wgobf rotate-key|restart.
  • Бэкапы и Удаление → Удалить всё режим учитывают.

🤖 Telegram-бот

Бот повторяет меню awg2 целиком: те же девять разделов и те же пункты, кнопками в два столбца; пояснения к пунктам — в тексте экрана. Установка компонентов, создание сервера, клиенты (конфиг файлом и QR, сроки, мимикрия, туннели клиента), протокол 2.0/3.1 и параметры AWG вручную, модуль ядра, диагностика и журналы, бэкапы (скачать, восстановить из присланного архива), WARP, Xray, tun2socks, exit-ноды, каскад, шифрованный DNS, WG + обфускатор, обновление и удаление — всё доступно со смартфона.

  • Всю работу делает awg2 api: бот не хранит своей логики AWG, поэтому ведёт себя ровно как меню.
  • Долгие операции (сборка модуля, установка, обновления) идут задачами: бот показывает живой журнал в сообщении и итог. Задача переживает перезапуск бота — так бот обновляет и перезапускает сам себя.
  • Доступ: владельцы (ADMIN_ID в /etc/awg-bot.conf) и приглашённые админы — одноразовая ссылка на 15 минут. Списком админов, оформлением и Mini App управляет только владелец. Бот работает только в личных сообщениях: в группах молчит, а если его туда добавили — выходит сам.
  • Оформление: цветные кнопки — зелёные создают и включают, красные удаляют, синие отмечают главное действие. Монохромные иконки (custom emoji) вместо эмодзи включаются в Telegram-бот → 🎨 Оформление: набор по ссылке t.me/addemoji/… или свои иконки. Telegram показывает их от бота, только если у владельца бота есть Telegram Premium или у бота есть имя с Fragment, — бот проверяет это сам и без них остаётся на обычных эмодзи.
  • Мониторинг: #ping в заметке клиента (или кнопка «Мониторинг активности») — бот сообщит, когда клиент пропал и когда вернулся. Об истечении сроков и лимитов трафика пишет таймер awg2, даже когда бот остановлен.
  • Уведомления о сервере (Telegram-бот → 🔔 Уведомления, по одному можно выключить): awg0 упал и поднялся, сервер перезагрузился, вышла новая версия Тулзы, установлено ядро без модуля AWG, истекает сертификат Mini App, диск заполнен на 90%. Каждое событие — одно сообщение.
  • Автобэкап (Бэкапы → 🕒 Автобэкап): полный бэкап раз в день или неделю — файлом в чат, только владельцам (в нём приватные ключи); на сервере остаются последние 3–30 автобэкапов.

📱 Mini App и HTTPS-сертификат

Mini App — панель управления внутри Telegram. Telegram открывает её только по HTTPS с настоящим сертификатом, поэтому awg2 выпускает его сам — Telegram-бот → Mini App и HTTPS-сертификат (или в боте: Telegram-бот → 📱 Mini App):

  • На IP — Let's Encrypt выдаёт сертификаты на IP с января 2026: живут ~6 дней (профиль shortlived), таймер awg2-cert.timer продлевает их сам.
  • На домен — если у сервера есть домен с A-записью на его IP; 90 дней.
  • Адрес проверяется по http-01: на время выпуска и продления acme.sh сам слушает порт 80 — он должен быть свободен и открыт снаружи.
  • Порт 80 занят (Caddy, nginx…) — Готовый сертификат сервера: Тулза находит сертификаты Caddy, certbot, acme.sh, Marzban, 3x-ui и nginx, выписанные на этот сервер, и подключает выбранный ссылкой — продлевает его та программа. Или выпуск своего с паузой службы, держащей порт 80, на секунды выпуска и продления.
  • Сервер Mini App живёт в боте (порт WEBAPP_PORT, по умолчанию 8443) и пускает только владельцев и приглашённых админов: каждый запрос несёт данные пользователя, подписанные Telegram токеном бота.

Панель открывается кнопкой «Меню» слева от поля ввода или в боте: Telegram-бот → 📱 Mini App → Открыть панель. Внизу — Обзор · Клиенты · Туннели · Сервер · Ещё. Обзор: сводка (в сети, скорость сейчас, трафик сегодня и за месяц, аптайм), маршруты трафика — схема клиенты → awg0 → выходы или список с долями выходов (есть клиенты WG + обфускатора — второе окно «Phobos», листается свайпом), живая скорость, лимиты, сроки на 30 дней, события блокировок, трафик за 14 дней. В шапке — флаг страны сервера (по геобазе Cloudflare, раз в сутки) с точкой состояния awg0; нажатие на флаг — окно «О сервере» (имя, адрес, протокол, аптайм, версия, «Скрыть адрес» для скриншотов). Панель «Тема» (луна/солнце в шапке): стиль — «Классика» (по умолчанию) или «Карточки» (меню разделов в шапке, клиенты крупными карточками, шрифт IBM Plex), тёмная / светлая / как Telegram, акцент, оттенок фона, скругление, масштаб, в веб-панели — значок вкладки (знак Тулзы или флаг страны сервера) — запоминается на устройстве.

Telegram Desktop для Windows показывает Mini App через Microsoft Edge WebView2. Нет его (например, удалён Edge) — Telegram берёт старый движок Edge 18, и вид упрощён (панель сама об этом скажет). Поставь WebView2 Runtime и перезапусти Telegram.

Уже в панели:

  • Клиенты — поиск, фильтры, сортировка, карточка с QR и конфигом, срок, мимикрия, маршрут, заметка и мониторинг, создание одного и пачкой, выбор и удаление нескольких.
  • Сервер — сводка, создание сервера одной формой, протокол 2.0/3.1, параметры AWG вручную (проверка на лету), endpoint, модуль ядра и tools (обновление, версия, откат), ремонт, рестарт, сброс, перезагрузка.
  • Туннели — вкладки «Туннели», «Exit-ноды», «Xray» со счётчиками, сводка (выход клиентов, обмен, лидер), карточка на каждый туннель (переключатель — с вопросом, если работает другой; адрес сервера скрыт «глазом»; трафик с запуска интерфейса), каждую exit-ноду и выход Xray; поиск и три вида. Внутри — WARP, Xray, tun2socks, exit-ноды (тумблер туннеля, «все клиенты» или выбранные — переключателем у каждого, «все» / «никого» разом, нода каждому), каскад портов, шифрованный DNS, «всё напрямую»; журналы служб.
  • Диагностика — сводка, домены мимикрии (мир и Россия), тест мимикрии, проверка DPI у клиента, журналы всех служб.
  • Бэкапы — создать (файл сразу приходит в чат), список на сервере, прислать в чат, восстановить — в том числе из архива, выбранного на телефоне. Из присланного бэкапа на место ложатся только файлы Тулзы, а команды в хуках конфигов, которые пишет не Тулза (PostUp и т. п.), убираются с предупреждением: чужой архив не выполнит на сервере ничего своего.
  • Обновление — проверка канала, обновление и переустановка awg2, обновление бота, стабильный или бета-канал; «Что нового» — список изменений канала.
  • Обфускатор — установка, маскировка STUN/NONE, «чистый WG», смена ключа, клиенты: ссылка для Keenetic, конфиг, QR чистого WireGuard, всё — в чат.
  • Бот — перезапуск и обновление (панель дожидается бота), прокси до Telegram, админы и приглашения, иконки, Mini App: сертификат и порт.

Долгое (установка, сборка модуля, создание сервера, бэкап) идёт задачей с живым журналом. В панели теперь все разделы бота. Telegram открывает Mini App и по IP (проверено вживую).

Установка: sudo awg2 → Telegram-бот → Установить. Или вручную:

sudo bash -c 'd=$(mktemp -d) && curl -fsSL https://raw.githubusercontent.com/pumbaX/awg-multi-script/main/awg-bot-install.sh -o "$d/awg-bot-install.sh" && bash "$d/awg-bot-install.sh"; rm -rf "$d"'

Установщик спросит:

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

Бот работает службой awg-bot.service и поднимается сам после перезагрузки. Ему нужен awg2 версии 1.0 или новее.


🌐 Веб-панель

Та же панель, что Mini App, но в обычном браузере — по логину и паролю, без Telegram. Бот для неё не нужен.

Установка: sudo awg2 → w) Веб-панель → Установить. Логин — Enter = admin; пароль — от 10 символов или Enter, и его сгенерирует (покажет один раз). В конце — адрес вида https://IP:порт/<секретный путь>/. Порт случайный: если у хостера свой фаервол, открой этот TCP-порт и там (UFW Тулза открывает сама).

  • Сертификат — тот же, что у Mini App (Let's Encrypt на IP или домен, готовый сертификат сервера); его нет — самоподписанный, браузер предупредит. Настоящий — пункты меню 6-8; панель подхватывает его сама.

  • Защита — только секретный путь (всё остальное на порту — 404), пароль — хешем scrypt, 5 неверных паролей — блокировка адреса на 15 минут и дольше, сессия 12 часов без действий или 7 дней, запросы с чужих сайтов отклоняются, HTTPS с TLS 1.2+. Входы — в /var/log/awg-web.log; стоит бот — сообщением владельцам.

  • Доступ — w) Веб-панель → a) Доступ, в боте 🛡 Доступ, в самой панели «Аккаунт» → «Доступ к панели»:

    • для всех — как раньше;
    • по адресам — только с указанных адресов и подсетей (IPv4; IPv6 — если панель слушает IPv6, WEB_LISTEN) и через свой VPN (AWG, WG + обфускатор): сменился адрес дома — зайди через VPN;
    • только через VPN — снаружи порт закрыт для всех, панель открывается по адресу сервера внутри VPN (https://10.x.x.1:порт/путь/; браузер предупредит о сертификате — он выписан на внешний адрес).

    Два слоя: правило файрвола (ipset, первым в INPUT, раньше UFW; с антисканером уживается) и проверка адреса самой панелью — чужим 404, даже если правило кто-то снял; раз в 5 минут панель возвращает правило сама. Режим, который закрыл бы панель от тебя же, она не даст сохранить. SSH и Telegram-бот работают всегда — «для всех» возвращается оттуда. Прокси на этом же сервере (3x-ui и т. п.) — как чужие адреса; пускать через них — добавь в список адрес самого сервера.

  • Отличия от Mini App — файлы (конфиг, ZIP с конфигом, архивы, бэкапы) скачиваются, а не уходят в чат; на ПК — лента разделов слева, поиск Ctrl+K и карточка клиента панелью справа.

  • Меню — пароль, логин, порт, новый секретный путь, сертификат, журнал входов, доступ, остановить/запустить, обновить код, удалить.

  • В боте — 💻 Веб-панель в главном меню (только владельцам): адрес и логин, если забыл, новый пароль (бот покажет его один раз), новый адрес, доступ, перезапуск, журнал входов. Там же панель ставится без терминала: логин admin, пароль придумает бот.


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

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

  • QR — Клиенты → Показать QR, сканируй с терминала (или QR от бота)
  • Текст — Клиенты → Показать конфиг для больших конфигов (с I1–I5) → копируй в буфер
  • Файл — Добавить туннель → Из файла → передай /root/<имя>_awg2.conf (AWG 2.0) или _awg3.conf (3.x) через scp
  • Ссылка на 5 минут — бот (карточка клиента → 🔗 Ссылка 5 мин) или панель («Конфиг и QR» → 🔗 Ссылка на 5 минут): отправь ссылку человеку — по ней QR (если конфиг влезает), текст и файл имя.conf. Ссылку отдаёт Mini App или веб-панель (если та закрыта «только через VPN», человек без VPN ссылку не откроет). Ссылка случайная (192 бита), живёт 5 минут, «Отозвать» гасит раньше; удалили клиента — ссылка не отдаёт ничего. Конфиг на странице — только по кнопке: предпросмотр мессенджеров его не видит. Это доступ к VPN — отправляй только тому, кому он предназначен.

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

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


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

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


Разработка

Исходники awg2 — в src/ (модули src/lib/*.sh, встроенный Python — src/py/). Один файл для установки собирает ./build.sh → dist/awg2.sh (./build.sh awg2.sh — в корень репозитория, откуда его берут установка и самообновление). Бот — awg_bot/.

Тесты без root и сети (песочница — tests/sandbox.py):

./build.sh
python3 tests/test_toolza.py      # awg2: параметры, конфиги, helper, служебные скрипты, API
python3 tests/test_cps.py         # генератор I1-I5
python3 tests/test_bot.py         # бот на живом диспетчере против awg2 api (нужен aiogram)
python3 tests/test_panel.py       # панель Mini App в Chromium (нужны aiogram и Playwright для node)
python3 tests/test_web.py         # веб-панель: вход, защита, файлы, вид в Chromium
python3 tests/test_admins.py && python3 tests/test_net.py && python3 tests/test_meta_menu.py
python3 tests/test_regress_f2f3.py && python3 tests/test_amnezia.py

Поддержать

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 v1.2.43 · MIT License

About

No description, website, or topics provided.

Resources

Stars

151 stars

Watchers

4 watching

Forks

Contributors

Languages