VPN:n käyttöönotto headless-palvelimilla
FreeGuard CLI toimii natiivisti headless Linux -palvelimilla ilman työpöytäympäristöä. Suojaatpa pilvi-instanssia, kotilabia tai reititätkö konttiliikennettä VPN:n kautta, tämä opas kattaa asennuksen, todennuksen, palvelun konfiguroinnin ja valvonnan tuotantopalvelinympäristöissä.

VPN:n käyttöönotto headless-palvelimilla

FreeGuard CLI toimii natiivisti headless Linux -palvelimilla ilman työpöytäympäristöä. Suojaatpa pilvi-instanssia, kotilabia tai reititätkö konttiliikennettä VPN:n kautta, tämä opas kattaa asennuksen, todennuksen, palvelun konfiguroinnin ja valvonnan tuotantopalvelinympäristöissä.

Miksi käyttää VPN:ää palvelimella?

Palvelimet käsittelevät arkaluonteista liikennettä: tietokantayhteyksiä, API-kutsuja, varmuuskopioiden siirtoja ja palvelujen välistä viestintää. VPN:n käyttö suoraan palvelimella varmistaa, että kaikki lähtevä liikenne on salattua ilman yksittäisten sovellusten konfigurointia.

Yleiset käyttötapaukset:

  • Pilvi-instanssit, jotka käyttävät maantieteellisesti rajoitettuja API:ita
  • CI/CD-ajajat, jotka tarvitsevat johdonmukaisen verkkoidentiteetin
  • Itse ylläpidetyt palvelut, jotka hyötyvät IP-osoitteen peittämisestä
  • Kehityspalvelimet, joita hajautetut tiimit käyttävät

Asennus

Ubuntu / Debian

curl -fsSL https://cli.freeguard.com/install.sh | bash

Tai asenna APT-pakettivarastosta:

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

Tai käytä RPM-pakettivarastoa:

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

Alpine-käyttäjien on ehkä asennettava ensin libc6-compat:

apk add libc6-compat
curl -fsSL https://cli.freeguard.com/install.sh | bash

Asennuksen vahvistaminen

freeguard --version

Headless-todennus

Palvelimilla ilman selainta et voi käyttää oletusarvoista OAuth-kirjautumista. FreeGuard CLI tarjoaa sähköpostipohjaisen todennuksen headless-ympäristöihin.

Sähköpostikirjautuminen

freeguard login --method email

CLI pyytää sinua syöttämään tilisi sähköpostiosoitteen. Vahvistuskoodi lähetetään kyseiseen osoitteeseen. Syötä koodi terminaalissa todennuksen viimeistelemiseksi.

$ freeguard login --method email
Enter your email: [email protected]
Verification code sent. Check your inbox.
Enter code: 483291
Login successful.

Token-pohjainen kirjautuminen

Automatisoiduissa käyttöönotoissa käytä palvelutokenia:

freeguard login --method token --token YOUR_SERVICE_TOKEN

Luo palvelutokeneja tilisi hallintapaneelista. Tokenit voidaan rajoittaa tiettyihin palvelimiin ja niillä on määritettävä vanhenemisaika.

Todennuksen vahvistaminen

freeguard status --json | jq '.authenticated'

Käyttö systemd-palveluna

Tuotantokäyttöönotoissa aja FreeGuard CLI systemd-palveluna, jotta se käynnistyy bootissa ja käynnistyy uudelleen virhetilanteissa.

Palvelutiedoston luominen

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

Käyttöönotto ja käynnistys

sudo systemctl daemon-reload
sudo systemctl enable freeguard
sudo systemctl start freeguard

Palvelun tilan tarkistus

sudo systemctl status freeguard

Lokien tarkastelu

sudo journalctl -u freeguard -f

Skriptaus --json- ja --no-color-parametreilla

Tuotantoskriptien tulisi jäsentää rakenteellista tulostetta ihmisluettavan tekstin sijaan.

JSON-tuloste

Jokainen komento tukee --json-parametria:

# Connection status
freeguard status --json

Tuloste:

{
  "connected": true,
  "server": "us-east-1",
  "server_name": "New York",
  "protocol": "hysteria2",
  "uptime": 86400,
  "bytes_sent": 1048576,
  "bytes_received": 5242880
}

Väritön tila

Poista ANSI-värikoodit puhtaiden lokitiedostojen saamiseksi:

freeguard status --no-color >> /var/log/freeguard-status.log

Skriptausesimerkki

Terveystarkistusskripti, joka yhdistää uudelleen virhetilanteessa:

#!/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

Lisää se croniin säännöllisiä tarkistuksia varten:

# Check VPN health every 5 minutes
*/5 * * * * /opt/scripts/freeguard-health.sh

Valvonta ja terveystarkistukset

Perus terveystarkistus

freeguard status --json | jq -r '.connected'

Palauttaa true tai false. Riittävän yksinkertainen mille tahansa valvontajärjestelmälle.

Integraatio valvontatyökaluihin

Vie tila Prometheukseen, Datadogiin tai mihin tahansa valvontajärjestelmään, joka voi suorittaa shell-komentoja:

#!/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

Hälytykset

Yhdistä terveystarkistus hälytysjärjestelmääsi. Esimerkki yksinkertaisella webhookilla:

#!/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

Tietoturvanäkökohdat

  • Ajo root-oikeuksilla: VPN-tunneli vaatii root-oikeudet verkkoreittien muokkaamiseen. Systemd-palvelu toimii oletuksena root-oikeuksilla.
  • Tokenien tallennus: Palvelutokenit tallennetaan hakemistoon ~/.config/freeguard/. Varmista asianmukaiset tiedosto-oikeudet (chmod 600).
  • Palomuurisäännöt: Jos käytät UFW:tä tai iptablesia, varmista, että VPN-tunnelin rajapinta on sallittu.
  • Kill switch: Ota kill switch käyttöön estääksesi kaiken liikenteen, jos VPN-yhteys katkeaa: freeguard config set kill-switch true.

Seuraavat vaiheet

Viimeksi päivitetty: maaliskuu 2026