Releases: E2Kv5/amneziaguard
Release list
AmneziaGuard 0.4.1 — a slow upload no longer freezes other apps
A robustness fix on top of 0.4.0 (which reached throughput parity with the
stock client). Same speeds, steadier under real mixed traffic.
What changed
The app's upload was forwarded to the tunnel with a blocking write on the
one thread that reads every app's packets. If the tunnel couldn't keep up,
that write stalled — and froze packet processing for every app at once
(a background upload could hang your browsing). Each connection now drains
its upload on its own thread, so a slow flow slows only itself.
A speedtest never showed this (it runs download then upload, never both);
it takes real mixed traffic — a background upload while you browse — to
notice, and that now stays responsive.
Throughput is unchanged from 0.4.0. Installs over it; app data is preserved.
AmneziaGuard 0.4.0 — datapath throughput parity
The no-root userspace datapath now runs at throughput parity with the
stock client. Same per-app blocking, much faster.
Measured on-device
| 0.3.0 | 0.4.0 | stock ref | |
|---|---|---|---|
| download | ~50 | ~110–115 | ~120 |
| upload | ~68 | ~150 | ~148 |
What changed
- Advertise a TCP MSS in the SYN-ACK — apps no longer fall back to
536-byte segments, roughly doubling upload. - Remove a needless global lock around the tun write that serialised every
downstream packet under load. - Resolve a flow's owning app once and cache it, instead of a system call
per UDP datagram (the QUIC path was paying it per packet). - Fragment UDP replies larger than the tunnel MTU instead of dropping them,
fixing stalled QUIC downloads. - Cheaper Internet checksum and no per-datagram allocation on the UDP relay.
Installs over 0.3.0; app data is preserved.
AmneziaGuard 0.3.0 - per-app blocking without root
AmneziaGuard 0.3.0 — блокировка приложений без root
Главное: режим «без интернета» теперь по-настоящему работает без root и при поднятом туннеле. Раньше без root заблокированное приложение всего лишь принудительно уходило в туннель — реальный IP скрывался, но сеть у него оставалась.
Как это сделано
Штатный VpnService не даёт API «отрезать приложение от сети», поэтому появился собственный userspace-датапас: наш VpnService читает tun, спрашивает у системы владельца каждого соединения (getConnectionOwnerUid) и по правилу приложения либо релеит поток через SOCKS5 туннеля, либо обрывает его.
Приложение само выбирает путь при подключении:
| Быстрый путь | Фильтрующий движок | |
|---|---|---|
| Когда | нет правил «без интернета» | есть хотя бы одно |
| Датапас | целиком в amneziawg-go |
наш tun2socks поверх SOCKS5 туннеля |
| «Без интернета» | ✗ | ✓ без root |
| Скорость | максимальная | ниже (датапас в JVM) |
На главном экране видно, какой путь несёт трафик — поведение не скрыто.
Что ещё
- Через движок идут TCP и UDP — QUIC, игры и DNS уходят в туннель (UDP через SOCKS5 UDP ASSOCIATE); если ассоциацию поднять не удалось, DNS переотправляется по TCP, чтобы приложение не осталось без резолвера.
- Уведомление на обоих путях показывает имя сервера, скорость ↓/↑ и кнопку Disconnect; скорость отображается и на главном экране.
- Убрано устаревшее предупреждение «полный блок требует root» — оно больше не соответствует действительности.
- Root-ярус (
iptablesowner-match) остался как опция: блокирует на уровне ядра независимо от туннеля.
⚠️ Требуется Android 10+
Минимальная версия поднята с 8.0 до 10 (API 29): пофайловая блокировка без root опирается на getConnectionOwnerUid, которого до Android 10 просто нет — на 8–9 главная функция молча деградировала бы до «нужен root».
Известные ограничения
- Фильтрующий движок медленнее быстрого пути: датапас обрабатывается в JVM, а не в Go.
- Ответы UDP крупнее MTU отбрасываются (IP-фрагментация не реализована).
- APK крупнее прежнего (~89 МБ): начиная с API 28 AGP хранит DEX без сжатия, чтобы ART мапил его напрямую. На занимаемое место на устройстве это не влияет.
APK ниже подписан тем же ключом, что и предыдущие релизы, — ставится поверх с сохранением конфигов.
AmneziaGuard 0.1.2
Full Changelog: v0.1.1...v0.1.2
AmneziaGuard 0.1.1
Full Changelog: v0.1.0...v0.1.1
AmneziaGuard 0.1.0
AmneziaGuard 0.1.0
Первый релиз — нативный Android VPN-клиент на протоколе AmneziaWG 2.0 с пофайловым фаерволом, kill-switch, защитой от DNS-утечек и плиткой быстрых настроек.
Возможности
- AmneziaWG 2.0 — полный набор обфускационных параметров (
Jc/Jmin/Jmax,S1–S4,H1–H4,I1–I5), реконнект при смене сети, несколько серверов. - Per-app фаервол, 3 режима — через VPN / напрямую / без интернета (root-iptables, blackhole-VpnService или принудительный VPN-маршрут).
- Kill-switch — блокировка трафика при обрыве туннеля до реконнекта.
- DNS-leak protection — принудительный DNS через туннель + периодический self-test.
- Quick Settings Tile — подключение из шторки, long-press → выбор сервера.
- Импорт конфигов — текст, файл
.conf, QR-код.
Установка
Скачайте amneziaguard-0.1.0.apk из ассетов ниже и установите на устройство (Android 8.0+, minSdk 26). Потребуется разрешить установку из неизвестных источников.
Технические детали
- Ядро туннеля:
com.zaneschepke:amneziawg-android(прекомпилированныйamneziawg-go). - Kotlin · Jetpack Compose · Material 3 · Hilt · Room · WorkManager.
- APK подписан релизным ключом; сборка воспроизводится через
./gradlew assembleRelease.