Funk-lab/ansible/roles/wireguard
ALI YESILKAYA bc0e1dd53e
feat(wireguard): accès distant au lab via VPN (Freebox 51820/udp → s01) (#80)
- rôle wireguard : serveur wg0 (10.99.0.0/24) sur storage-01, profils
  clients générés dans /etc/wireguard/clients/ (fichier .conf / QR code)
- gateway : filtrage nftables par pair — full (tout le lab) / portal
  (uniquement Traefik :80 = portail Guacamole), masquerade VPN→cluster
- dnsmasq : bind-dynamic + écoute wg0 → *.lab.local résolu dans le tunnel
- pairs initiaux : alkatrazz (full), invite-01 (portal)
- vault : clés WireGuard + reprise de l'archive Authentik (remplace #78)
- doc : admin/infra/wireguard.md (onboarding pair, pièges, exploitation)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:11:43 +02:00
..
defaults feat(wireguard): accès distant au lab via VPN (Freebox 51820/udp → s01) (#80) 2026-07-07 11:11:43 +02:00
handlers feat(wireguard): accès distant au lab via VPN (Freebox 51820/udp → s01) (#80) 2026-07-07 11:11:43 +02:00
tasks feat(wireguard): accès distant au lab via VPN (Freebox 51820/udp → s01) (#80) 2026-07-07 11:11:43 +02:00
templates feat(wireguard): accès distant au lab via VPN (Freebox 51820/udp → s01) (#80) 2026-07-07 11:11:43 +02:00
README.md feat(wireguard): accès distant au lab via VPN (Freebox 51820/udp → s01) (#80) 2026-07-07 11:11:43 +02:00

Rôle wireguard

Serveur WireGuard sur storage-01 : accès distant au lab (portail Guacamole, voire tout le LAN cluster) via kaya.freeboxos.fr:51820/udp (redirection Freebox → funk-s01).

Variables

Variable Défaut Rôle
wireguard_port 51820 Port UDP d'écoute (= redirection Freebox)
wireguard_subnet / wireguard_server_ip 10.99.0.0/24 / 10.99.0.1 Réseau du tunnel
wireguard_endpoint kaya.freeboxos.fr:51820 Endpoint public côté clients
wireguard_client_allowed_ips 192.168.10.0/24, 10.99.0.0/24 Split tunnel (lab uniquement)
wireguard_peers [] (host_vars) Pairs : {name, ip, public_key, access}

access : full (tout le lab — admin) ou portal (uniquement Traefik :80 → portail Guacamole). Le filtrage est fait par nftables (rôle gateway), pas par WireGuard.

Secrets vault : vault_wireguard_server_private_key, vault_wireguard_peer_private_keys (dict name: clé).

Ajouter un pair

Procédure complète (clés openssl, vault, host_vars, QR code) : admin/infra/wireguard.md. Résumé : générer une paire X25519, clé privée dans le vault, entrée dans wireguard_peers (host_vars storage-01), ré-appliquer --tags wireguard,gateway, distribuer /etc/wireguard/clients/<name>.conf.

Caveats

  • Les profils clients dans /etc/wireguard/clients/ contiennent la clé privée du client — à transmettre par canal raisonnable, jamais commités.
  • Le DNS du tunnel = dnsmasq s01 (10.99.0.1) : nécessite bind-dynamic + interface=wg0 dans le rôle dnsmasq, et l'ouverture 53 depuis 10.99.0.0/24 dans gateway.
  • Retirer un pair : le supprimer de wireguard_peers + du vault → re-apply --tags wireguard,gateway (la règle nftables et le [Peer] disparaissent).