xah30 0a73d5298b feat(cli): server IP pool + per-client routing (multi-client VPN concentrator)
Server now assigns each connected client an IP from a configurable pool and
maintains a client_ip -> AuraConnection map so packets read from the shared
TUN are dispatched to the right client (and each client's recv loop writes
back to the TUN). Removes v1's "single shared TUN, no NAT/pool" limitation;
turns the server into a proper multi-client VPN concentrator (paired with the
already-landed UDP multi-client demux).

- aura_cli::pool: IpPool + PoolStrategy {StaticOnly, DynamicOnly,
  StaticOrDynamic}; reserves network/broadcast/server-own IP; 15 tests.
- aura_cli::server_router: ServerRouter + ServerRoutes (Arc<RwLock<HashMap>>);
  central TUN read loop dispatching by dst_ip; spawn_inbound_forwarder per
  conn auto-unregisters and releases the IP on disconnect; 4 tests via
  MockTun + MockConn.
- aura_cli::config: [server.pool] {cidr, strategy, static} added with
  serde(default); legacy configs (only [tunnel] pool_cidr) fall back to a
  DynamicOnly pool (backward compatible, tested).
- aura_cli::server: accept loop now: pool.assign(peer_id) -> register ->
  spawn_inbound_forwarder; rejected static_only mismatches dropped+logged.
- config/server.toml.example: documented [server.pool] section.

Workspace: 141 tests passed (+24), clippy -D warnings clean, fmt clean. No
new workspace deps (async-trait added to cli dev-deps for mock traits in tests).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 01:41:29 +03:00

Aura VPN

Aura — гибридный пост-квантовый VPN на Rust. Внутреннее рукопожатие гибридное и взаимно аутентифицированное (X25519 + ML-KEM-768 по FIPS 203 со взаимной X.509-проверкой), данные шифруются ChaCha20-Poly1305 с explicit-nonce, обфускация — паддинг датаграмм под «корзины» HTTPS-размеров.

На проводе по умолчанию идёт собственный UDP-транспорт Aura (без QUIC и без внешнего TLS на основном пути). Если сеть режет UDP, клиент автоматически переключается на TCP/443 или QUIC (мимикрия HTTP/3), последовательно пробуя транспорты из настраиваемого [transport] order. На стороне клиента есть TUN-интерфейс и split-tunnel (longest-prefix matching по CIDR + правила по доменам), которым можно управлять на лету через admin-сокет.

Крейты

Крейт Что внутри
aura-crypto Гибридный KEM (X25519 + ML-KEM-768), HKDF, AEAD ChaCha20-Poly1305, helpers
aura-pki Самоподписанный CA, выпуск server/client-сертификатов, проверка, плоский CRL
aura-proto Рукопожатие Aura, фрейминг, датаграмный/потоковый кодек данных
aura-transport Транспорты: собственный UDP, TCP/443, QUIC; единый dialer с handover
aura-tunnel TUN, маршрутизатор, split-tunnel (CIDR + домены), DNS-резолв в host-маршруты
aura-cli Бинарь aura: pki, server, client, route, status, bench-crypto

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

Подъём сервера на удалённой машине и подключение клиента описаны в docs/deployment.md. Это основная точка входа для развёртывания.

Документация

  • docs/deployment.md — руководство по развёртыванию (сервер + клиент)
  • docs/protocol.md — wire-протокол: рукопожатие, кадры, выбор транспорта
  • docs/pki.md — модель PKI, команды aura pki, верификация и CRL
  • docs/split-tunnel.md — split-tunnel, статика и admin-сокет на лету
  • docs/sing-box.md — план интеграции с sing-box (для мобильных клиентов)
S
Description
No description provided
Readme 1.5 MiB
Languages
Rust 92.3%
Go 6.5%
TypeScript 0.8%
CSS 0.4%