Servere și NAS
Warren fără aplicația de birou
Sub aplicația de birou stau un demon și o linie de comandă care nu au nevoie de ecran, o imagine de container care duce tunelul pentru vecinii ei și un gateway care vorbește protocolul WireGuard cu dispozitivele care nu pot instala nimic altceva. Suficient ca să pui un seedbox, un NAS, un router sau un server întreg în spatele lui Warren.
Un container care duce tunelul
Imaginea warren-vpn rulează clientul Warren fără interfață grafică, în forma popularizată de gluetun: un singur container deține tunelul, kill-switch-ul și spațiul de rețea, iar tot ce trebuie să iasă prin VPN intră în acel spațiu. În Docker Compose este o linie în serviciul vecin; în Kubernetes este un sidecar în același pod.
Warren nu vorbește nici WireGuard, nici OpenVPN, deci niciun container VPN generic nu îl poate transporta. Această imagine este calea prevăzută oriunde rulează containere: un server Linux, un Synology, un QNAP, un Unraid, un TrueNAS, un cluster Kubernetes.
- Kill-switch-ul este activ implicit. Când demonul moare, spațiul de rețea moare cu el: nu există nicio clipă în care traficul să poată ieși pe lângă tunel.
- Port forwarding NAT-PMP este inclus. Când serverul de ieșire acordă un port public, containerul îl scrie într-un fișier și lansează comanda pe care i-ai dat-o, cu portul substituit, ca să îl împingi în aplicația ta: un client torrent ascultă și se anunță apoi pe același port. Rețeta completă pentru qBittorrent, cu tot cu datele de autentificare, este în docker/examples/ din depozit.
- Fraza de recuperare se montează ca fișier, niciodată ca variabilă de mediu: o variabilă se citește într-un docker inspect. Într-un container, demonul nu o poate sigila cu cipul mașinii și revine la un fișier pe care doar contul root îl poate citi, deci tratează volumul de stare ca material secret.
- Are nevoie de NET_ADMIN și de /dev/net/tun. Containerul își pune regulile în propriul spațiu de rețea și nu atinge niciodată firewall-ul mașinii gazdă.
Imaginea se reconstruiește și se publică la fiecare versiune a demonului și la fiecare corecție a imaginii în sine, dar pachetul rămâne deocamdată privat: un docker pull răspunde „unauthorized”. Până se deschide, scriptul din depozit construiește aceeași imagine local, în jurul ultimului demon publicat, sub numele exact pe care îl folosesc exemplele.
git clone https://github.com/WarrenBrowse/warren-cli && cd warren-cli
./docker/build.sh -t ghcr.io/warrenbrowse/warren-vpn:beta Apoi vecinul care trebuie să treacă prin tunel intră în spațiul de rețea al containerului Warren și așteaptă ca acesta să fie conectat înainte să pornească.
services:
warren:
image: ghcr.io/warrenbrowse/warren-vpn:beta
cap_add: [NET_ADMIN]
devices: [/dev/net/tun]
environment:
- WARREN_MNEMONIC_FILE=/run/secrets/warren_mnemonic
- WARREN_RELAY_LOCATION=fi
secrets: [warren_mnemonic]
restart: unless-stopped
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
network_mode: "service:warren"
depends_on:
warren:
condition: service_healthy
secrets:
warren_mnemonic:
file: ./warren_mnemonic.txtUn server Linux, fără container
Clientul Warren este un demon (warren-daemon) și o comandă (warren). Amândouă rulează fără Electron, fără ecran și fără sesiune grafică: o mașină accesibilă prin SSH este de ajuns. Depozitul warren-cli publică pachetele gata de instalat (deb, rpm, arhivă generică, macOS, Windows), sumele lor de control, serviciul potrivit (systemd, OpenRC sau sysvinit) și un script de instalare dintr-o singură linie care citește mașina și alege în locul tău.
curl -fsSL https://raw.githubusercontent.com/WarrenBrowse/warren-cli/main/scripts/install.sh | sudo sh Apoi îți creezi contul, adaugi timp cu codul tău, alegi o țară și te conectezi.
warren account create
warren account redeem <code>
warren relay set location FR
warren connect
warren status Un singur demon Warren pe mașină: pachetul de server și aplicația de birou și-ar disputa același socket și aceeași identitate de firewall, deci se exclud. Alpine și celelalte sisteme musl nu sunt acoperite, iar instalatorul ți-o spune în loc să îți lase un binar care nu pornește.
Depozit: WarrenBrowse/warren-cliRoutere, Apple TV, gluetun: gateway-ul local
Un router, un Apple TV sau o consolă au deseori un singur client VPN, iar acel client vorbește WireGuard. Warren are propriul protocol, deci aceste dispozitive nu se pot conecta la el direct.
Gateway-ul warren-bolthole umple acest gol. Implementează protocolul WireGuard, astfel încât clienții WireGuard obișnuiți să poată folosi Warren, și rulează fără niciun privilegiu pe o mașină din rețeaua ta: un NAS, un Raspberry Pi, un server, un container. Pe partea de rețea locală, dispozitivele tale se conectează cu clientul lor obișnuit; spre internet, totul iese printr-un singur tunel Warren către ieșire.
Comanda warren-bolthole init scrie un fișier de configurare pentru fiecare dispozitiv, de importat ca atare: un cod QR în aplicația WireGuard a unui telefon, un fișier pe un Apple TV, LuCI pe OpenWrt sau panoul unui GL.iNet. Un router contează ca un singur dispozitiv și aduce după el tot ce nu are propriul client VPN, o consolă de exemplu. O stivă gluetun existentă își păstrează imaginea nemodificată: provider custom, tip wireguard, plus fișierul de mediu pe care gateway-ul îl generează.
Totul a fost verificat pe o ieșire reală a rețelei: wg-quick standard în modul kernel și în spațiul utilizatorului, un gluetun nemodificat, DNS rezolvat prin tunel fără nicio scurgere locală, și port forwarding NAT-PMP care ajunge la un serviciu din spatele unui dispozitiv, verificat dintr-un punct neutru de pe internet.
Gateway-ul trăiește în depozitul SDK-ului Rust, warren-sdk-rs, și astăzi se construiește cu cargo. Punerea în funcțiune:
export WARREN_MNEMONIC_FILE=/etc/warren/mnemonic
export WARREN_BOLTHOLE_LAN=1 WARREN_BOLTHOLE_LISTEN=0.0.0.0:51820
warren-bolthole init --peers 2 --label tv --label router
warren-bolthole show tv --qr
warren-bolthole run - Toate dispozitivele din spatele unui gateway împart o singură sesiune Warren: o singură adresă de ieșire, un singur loc de dispozitiv pe cont, o singură cotă de port forwarding, lățime de bandă comună. Fișierele de client sunt chei ale contului tău: păstrează-le pentru propriile tale dispozitive. Dispozitivele sunt izolate unele de altele implicit.
- Obfuscarea Warren începe la gateway. Între dispozitivul tău și gateway este WireGuard obișnuit, recognoscibil la orice inspecție de trafic. În rețeaua ta locală, exact acesta este rostul; nu publica niciodată portul UDP al gateway-ului pe internet.
- Când tunelul Warren cade, gateway-ul tace: nu mai răspunde nimic dispozitivelor până când ieșirea este dovedită din nou, și nimic nu poate ieși pe lângă tunel. Kill-switch-ul dispozitivului rămâne propria lui setare: activează „Blochează conexiunile fără VPN” pe Android, echivalentul routerului tău, sau firewall-ul integrat al gluetun.
„WireGuard” este o marcă înregistrată a lui Jason A. Donenfeld. Acest proiect nu este afiliat proiectului WireGuard și nu este aprobat de acesta.
Depozit: WarrenBrowse/warren-sdk-rs