Sistem Mimarisi
Phantom-WG, WireGuard® tabanlı bir VPN yönetim platformudur. Tüm bileşenler Docker container yapısı içerisinde çalışır ve asıl işi yapan Phantom Daemon Unix Domain Socket (UDS) üzerinden haberleşir.
Üretim Topolojisi, Docker Compose üzerinden yürütülen üç konteyner yapısından oluşur. Organizasyon üzerindeki yapının temel görevi sorguyu güvenli bir şekilde Daemon yapısına aktarmaktır.
Daemon, yapısına ulaşan iki farklı trafik yolu vardır.
Yönetim Trafiği (Kullanıcı Etkileşimi) (:443): İnternet →
phantom-nginx → phantom-auth → phantom-daemon
VPN trafiği (:51820/udp): WireGuard istemcileri doğrudan
phantom-daemon'a bağlanır.
UDS soketi (daemon.sock) Docker named volume üzerinden phantom-auth ile
paylaşılır.
phantom-nginx, sistemin tek dışa açık HTTPS giriş noktasıdır.
Routing
|
Location
|
Hedef
|
Açıklama
|
|---|---|---|
/auth/* |
phantom-auth:8443 | Auth endpointleri (login, MFA, session) |
/api/* |
phantom-auth:8443 | API proxy — backup işlemleri için buffering kapalı |
/ |
SPA static (try_files) | React SPA fallback — bilinmeyen path'ler index.html'e yönlenir |
/assets/* |
Static cache | 1 yıl, Cache-Control: public, immutable |
Nginx Konfigürasyonu
phantom-auth, iki temel rol üstlenir: kendi auth endpointlerini doğrudan karşılar (/auth/*)
ve daemon API isteklerini UDS üzerinden proxy'ler (/api/*).
Çevre Değişkenleri
|
Değişken
|
Varsayılan
|
|---|---|
AUTH_HOST |
0.0.0.0 |
AUTH_PORT |
8443 |
AUTH_LOG_LEVEL |
info |
AUTH_PROXY_URL |
unix:///var/run/phantom/daemon.sock |
AUTH_PROXY_TIMEOUT |
30.0 |
AUTH_PROXY_MAX_BODY |
67108864 (64 MB) |
AUTH_DB_DIR |
/var/lib/phantom/auth |
AUTH_SECRETS_DIR |
/run/secrets |
AUTH_TOKEN_LIFETIME |
86400 (24h) |
AUTH_MFA_TOKEN_LIFETIME |
120 (2m) |
AUTH_TOTP_SETUP_LIFETIME |
300 (5m) |
AUTH_INACTIVITY_TIMEOUT |
1800 (30m) |
AUTH_RATE_LIMIT_WINDOW |
60 |
AUTH_RATE_LIMIT_MAX |
5 |
phantom-daemon, sistemin çekirdeğidir. WireGuard arayüzlerini, istemci yönetimini, firewall kurallarını ve veritabanlarını yönetir. Yönetim erişimi yalnızca UDS üzerinden sağlanır.
Çevre Değişkenleri
|
Değişken
|
Varsayılan
|
|---|---|
PHANTOM_DB_DIR |
/var/lib/phantom/db |
PHANTOM_STATE_DIR |
/var/lib/phantom/state/db |
WIREGUARD_LISTEN_PORT |
51820 |
WIREGUARD_MTU |
1420 |
WIREGUARD_KEEPALIVE |
25 |
WIREGUARD_ENDPOINT_V4 |
— |
WIREGUARD_ENDPOINT_V6 |
— |
Kernel Gereksinimleri
|
Parametre
|
Açıklama
|
|---|---|
NET_ADMIN |
WireGuard arayüz ve nftables kural yönetimi |
NET_RAW |
Raw socket erişimi |
net.ipv4.ip_forward=1 |
IP paket yönlendirme |
/dev/net/tun |
TUN arayüz oluşturma |
Docker Compose Yapısı
İstek Yaşam Döngüsü
Bir API isteğinin sistemden geçiş süreci:
Bridge Mimarisi
Daemon, sistem düzeyindeki işlemleri native bridge'ler aracılığıyla gerçekleştirir. Python katmanı iş mantığını yönetir, bridge'ler ise kernel ile doğrudan iletişim kurar.
|
Bridge
|
Dil
|
Sorumluluk
|
|---|---|---|
| wireguard-go-bridge | Go | WireGuard userspace, TUN arayüz oluşturma, peer yönetimi, UAPI protokolü |
| firewall-bridge | Rust | nftables kural grupları, routing policy, atomik kural uygulaması |
Veritabanları
Tüm veritabanları SQLite formatındadır. İki kategoriye ayrılır:
Kalıcı Veriler
Kullanıcı verileri ve yapılandırma. Yedekleme ve taşıma bu veritabanları üzerinden yapılır.
|
Veritabanı
|
Sahip
|
Konteyner Yolu
|
|---|---|---|
| wallet.db | daemon | /var/lib/phantom/db |
| exit.db | daemon | /var/lib/phantom/db |
| auth.db | auth-service | /var/lib/phantom/auth |
Çalışma Zamanı (Runtime) Durumu
Bridge'ler tarafından yönetilen çalışma zamanı verileri. Daemon başlatıldığında otomatik oluşturulur, müdahale gerektirmez.
|
Veritabanı
|
Sahip
|
Konteyner Yolu
|
|---|---|---|
| device.db | wireguard-go-bridge | /var/lib/phantom/state/db/wireguard/{ifname}/ |
| firewall.db | firewall-bridge | /var/lib/phantom/state/db |