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

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