mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-14 00:24:42 +02:00
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>
This commit is contained in:
parent
fbec998c21
commit
bc0e1dd53e
13 changed files with 388 additions and 123 deletions
36
ansible/roles/wireguard/README.md
Normal file
36
ansible/roles/wireguard/README.md
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
# 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).
|
||||
Loading…
Add table
Add a link
Reference in a new issue