Implementarea VPN pe servere headless
FreeGuard CLI rulează nativ pe servere Linux headless fără a necesita un mediu desktop. Fie că securizați o instanță cloud, protejați un laborator acasă sau direcționați traficul containerelor prin VPN, acest ghid acoperă instalarea, autentificarea, configurarea serviciului și monitorizarea pentru implementări pe servere de producție.
De ce să rulați VPN pe un server?
Serverele gestionează trafic sensibil: conexiuni la baze de date, apeluri API, transferuri de backup și comunicare între servicii. Rularea VPN pe serverul însuși asigură că tot traficul de ieșire este criptat fără a configura aplicațiile individuale.
Cazuri de utilizare comune:
- Instanțe cloud care accesează API-uri cu restricții geografice
- Runnere CI/CD care necesită identitate de rețea consistentă
- Servicii auto-găzduite care beneficiază de mascarea IP
- Servere de dezvoltare utilizate de echipe distribuite
Instalare
Ubuntu / Debian
curl -fsSL https://cli.freeguard.com/install.sh | bash
Sau instalați din depozitul APT:
curl -fsSL https://cli.freeguard.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/freeguard.gpg
echo "deb [signed-by=/usr/share/keyrings/freeguard.gpg] https://apt.freeguard.com stable main" | sudo tee /etc/apt/sources.list.d/freeguard.list
sudo apt update
sudo apt install freeguard-cli
CentOS / RHEL / Fedora
curl -fsSL https://cli.freeguard.com/install.sh | bash
Sau utilizați depozitul RPM:
sudo rpm --import https://cli.freeguard.com/gpg.key
sudo tee /etc/yum.repos.d/freeguard.repo <<EOF
[freeguard]
name=FreeGuard CLI
baseurl=https://rpm.freeguard.com/stable
gpgcheck=1
gpgkey=https://cli.freeguard.com/gpg.key
EOF
sudo yum install freeguard-cli
Alpine Linux
curl -fsSL https://cli.freeguard.com/install.sh | bash
Utilizatorii Alpine pot avea nevoie să instaleze mai întâi libc6-compat:
apk add libc6-compat
curl -fsSL https://cli.freeguard.com/install.sh | bash
Verificarea instalării
freeguard --version
Autentificare headless
Pe servere fără browser, nu puteți utiliza fluxul implicit de conectare OAuth. FreeGuard CLI oferă autentificare prin e-mail pentru medii headless.
Conectare prin e-mail
freeguard login --method email
CLI-ul vă solicită să introduceți e-mailul contului. Un cod de verificare este trimis la acea adresă. Introduceți codul în terminal pentru a finaliza autentificarea.
$ freeguard login --method email
Enter your email: [email protected]
Verification code sent. Check your inbox.
Enter code: 483291
Login successful.
Conectare cu token
Pentru implementări automatizate, utilizați un token de serviciu:
freeguard login --method token --token YOUR_SERVICE_TOKEN
Generați tokenuri de serviciu din panoul de control al contului. Tokenurile pot fi limitate la servere specifice și au expirare configurabilă.
Verificarea autentificării
freeguard status --json | jq '.authenticated'
Rularea ca serviciu systemd
Pentru implementări de producție, rulați FreeGuard CLI ca serviciu systemd pentru a porni la boot și a reporni în caz de eșec.
Crearea fișierului de serviciu
sudo tee /etc/systemd/system/freeguard.service <<EOF
[Unit]
Description=FreeGuard VPN
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/freeguard connect --server us-east --no-color
ExecStop=/usr/local/bin/freeguard disconnect
Restart=on-failure
RestartSec=10
User=root
[Install]
WantedBy=multi-user.target
EOF
Activare și pornire
sudo systemctl daemon-reload
sudo systemctl enable freeguard
sudo systemctl start freeguard
Verificarea stării serviciului
sudo systemctl status freeguard
Vizualizarea jurnalelor
sudo journalctl -u freeguard -f
Scripting cu --json și --no-color
Scripturile de producție ar trebui să analizeze ieșirea structurată în loc de text lizibil.
Ieșire JSON
Fiecare comandă suportă --json:
# Connection status
freeguard status --json
Ieșire:
{
"connected": true,
"server": "us-east-1",
"server_name": "New York",
"protocol": "hysteria2",
"uptime": 86400,
"bytes_sent": 1048576,
"bytes_received": 5242880
}
Mod fără culori
Eliminați codurile de culoare ANSI pentru fișiere de jurnal curate:
freeguard status --no-color >> /var/log/freeguard-status.log
Exemplu de scripting
Un script de verificare a sănătății care se reconectează în caz de eșec:
#!/bin/bash
STATUS=$(freeguard status --json 2>/dev/null)
CONNECTED=$(echo "$STATUS" | jq -r '.connected')
if [ "$CONNECTED" != "true" ]; then
echo "$(date): VPN disconnected, reconnecting..." >> /var/log/freeguard-health.log
freeguard connect --server us-east --json >> /var/log/freeguard-health.log 2>&1
fi
Adăugați la cron pentru verificări regulate:
# Check VPN health every 5 minutes
*/5 * * * * /opt/scripts/freeguard-health.sh
Monitorizare și verificări de sănătate
Verificare de sănătate de bază
freeguard status --json | jq -r '.connected'
Returnează true sau false. Suficient de simplu pentru orice sistem de monitorizare.
Integrare cu instrumente de monitorizare
Exportați starea către Prometheus, Datadog sau orice sistem de monitorizare care poate executa comenzi shell:
#!/bin/bash
# prometheus-exporter.sh
STATUS=$(freeguard status --json)
CONNECTED=$(echo "$STATUS" | jq -r '.connected')
UPTIME=$(echo "$STATUS" | jq -r '.uptime')
if [ "$CONNECTED" = "true" ]; then
echo "freeguard_connected 1"
echo "freeguard_uptime_seconds $UPTIME"
else
echo "freeguard_connected 0"
echo "freeguard_uptime_seconds 0"
fi
Alerte
Combinați verificarea de sănătate cu sistemul de alerte. Exemplu cu un webhook simplu:
#!/bin/bash
CONNECTED=$(freeguard status --json | jq -r '.connected')
if [ "$CONNECTED" != "true" ]; then
curl -X POST https://hooks.example.com/alert \
-H "Content-Type: application/json" \
-d '{"text": "FreeGuard VPN disconnected on '"$(hostname)"'"}'
fi
Considerații de securitate
- Rularea ca root: Tunelul VPN necesită privilegii root pentru a modifica rutele de rețea. Serviciul systemd rulează ca root în mod implicit.
- Stocarea tokenurilor: Tokenurile de serviciu sunt stocate în
~/.config/freeguard/. Asigurați permisiuni adecvate ale fișierelor (chmod 600). - Reguli de firewall: Dacă utilizați UFW sau iptables, asigurați-vă că interfața tunelului VPN este permisă.
- Kill switch: Activați kill switch pentru a bloca tot traficul dacă VPN se deconectează:
freeguard config set kill-switch true.
Pași următori
- FreeGuard CLI — referință completă a comenzilor
- Ghid de flux de lucru pentru dezvoltatori — integrați VPN în instrumentele de dezvoltare
- Prețuri — implementările pe servere funcționează cu orice plan
Ultima actualizare: martie 2026