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>
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, верификация и CRLdocs/split-tunnel.md— split-tunnel, статика и admin-сокет на летуdocs/sing-box.md— план интеграции с sing-box (для мобильных клиентов)