DIRECT-destination traffic now bypasses the TUN entirely via OS routing
table edits, instead of going through user-space and hitting the v1
send_direct stub. The user-space router only sees VPN-bound packets,
making the split-tunnel real.
- aura_cli::os_routes::OsRouteGuard: RAII install + rollback of OS routes.
Linux: `ip route show default` parser -> DIRECT CIDRs via original gw,
VPN default via TUN with metric 50. macOS: `route -n get default`
parser -> `route add -net/-host ... <gw>` for DIRECT, `route add -net
... -interface <tun>` for VPN. Windows: stub + warning (v3).
- dry_run works on every platform (logs `would run: ...`); useful for
tests and operator confidence-checks.
- SplitRoutes::from_config folds [[tunnel.split.direct]]/[[...vpn]] +
resolved domains (via AuraDns) into one declarative plan.
- New [tunnel.os_routes] {enabled (default true), dry_run, gateway,
egress_iface}; absent section = old user-space behavior (back-compat).
- client::run installs routes after AuraTun::create, before privdrop;
guard's Drop reverts everything on shutdown.
- aura-tunnel::router unchanged; AuraRouter::send_direct kept as a
defensive fallback (in v2 it should never fire — OS routes prevent
DIRECT packets from reaching the TUN at all).
20 new tests (linux/macos parser unit tests, install dry-run, config
back-compat). Workspace: 174 tests passed (+19), clippy -D warnings
clean, fmt clean.
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 (для мобильных клиентов)