Aller au contenu

Le VPN (Headscale / Tailscale)

Le VPN maille toutes les zones et les machines distantes : Headscale 🡕 coordonne (sur le HCS), Tailscale 🡕 est le client sur chaque nœud. Vue d’ensemble dans Réseau.

Activer la coordination et déclarer le HCS (profile: hcs) suffit :

etc/config.yaml
network:
coordination:
enable: true
hostname: "hcs"
domain: "headscale"

Les rôles se déduisent du profil de chaque hôte :

  • HCS : coordination du maillage (Headscale).
  • Passerelle : subnet router + exit node : publie le sous-réseau de sa zone.
  • Autres nœuds : clients Tailscale.
  1. Sur le HCS : créer l’utilisateur d’attache et une clé

    Fenêtre de terminal
    just enter hcs
    sudo headscale users create nix --display-name "Nix Admin" --email "nix@domain.tld"
    sudo headscale preauthkeys create --reusable --expiration "1d" --user 1
  2. Renseigner la clé dans les secrets

    Fenêtre de terminal
    just sops # édite usr/secrets/secrets.yaml → clé tailscale/authKey

    La passerelle s’enregistre ensuite automatiquement (au prochain just apply).

  3. Sur la passerelle : annoncer le sous-réseau

    Fenêtre de terminal
    sudo tailscale set --advertise-routes 10.0.0.0/16 --advertise-exit-node \
    --accept-routes --accept-dns=false --ssh --snat-subnet-routes=false
  4. Sur le HCS : approuver les routes

    Fenêtre de terminal
    sudo headscale nodes list # repérer l'ID de la passerelle
    sudo headscale nodes approve-routes --identifier <id> --routes 10.0.0.0/16

La commande headscale (alias h = sudo headscale) sur le HCS :

Fenêtre de terminal
sudo headscale users list # utilisateurs
sudo headscale nodes list # clients connectés
sudo headscale nodes routes # routes annoncées / approuvées

Un tailscaled peut décrocher silencieusement de Headscale : la connexion de contrôle est perdue alors que le service reste « actif », et le sous-réseau d’une passerelle devient injoignable jusqu’à un redémarrage manuel. Un watchdog local détecte et corrige ce cas, sur chaque client Tailscale.

AspectComportement
Sondetoutes les 60 s : tailscale status (backend, état en ligne, santé)
Anti-rebond3 sondes en échec d’affilée (~3 min) avant d’agir : encaisse les coupures WAN passagères
Correctionsystemctl restart tailscaled (ré-enregistrement automatique sur Headscale)
Anti-boucleune seule correction par fenêtre de 10 min
Observabilitémétriques dnf_tailscale_healthy et dnf_tailscale_selfheal_restarts_total (textfile node_exporter)

Deux alertes accompagnent le mécanisme :

  • TailscaleUnhealthy : toujours décroché malgré la correction (problème de fond) ;
  • TailscaleFlapping : l’auto-réparation se répète trop souvent (cause à traiter).

Pour rejoindre le réseau hors d’une zone, voir Se connecter depuis l’extérieur.