feat(portal): accès Internet direct au portail (kaya.freeboxos.fr:9080) (#81)

* feat(wireguard): accès distant au lab via VPN (Freebox 51820/udp → s01)

- 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>

* feat(portal): accès Internet direct — kaya.freeboxos.fr:9080

Choix simplicité (2026-07-07) : exposition directe du portail plutôt que
le VPN (WireGuard reste déployé mais dormant, sans redirection Freebox).

- gateway : DNAT 9080/tcp → Traefik (192.168.10.200:80) + rate-limit
  30 connexions neuves/min sur le trafic Internet (LAN non concerné)
- IngressRoute guacamole : host kaya.freeboxos.fr accepté
- Guacamole : formulaire local en premier ("*, openid") — l'accès externe
  passe par des comptes locaux, Authentik n'est pas exposé (SSO = LAN)
- doc : section « Accès externe » dans admin/k8s/auth-portal.md

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
ALI YESILKAYA 2026-07-07 11:13:45 +02:00 committed by GitHub
parent bc0e1dd53e
commit cf09e404ef
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 42 additions and 16 deletions

View file

@ -77,6 +77,13 @@ table inet filter {
ip daddr 192.168.10.20 tcp dport { 7777, 8888 } ct state new,established,related accept
ip daddr 192.168.10.20 udp dport 7777 ct state new,established,related accept
# Portail public — trafic Internet DNATé (9080 → Traefik :80).
# Rate-limit sur les connexions neuves : anti-bruteforce/scan réseau,
# en plus de la protection intégrée de Guacamole. Le LAN domestique n'est
# pas concerné (accepté par la règle 192.168.1.0/24 plus haut).
ip daddr 192.168.10.200 tcp dport 80 ct state new limit rate 30/minute burst 15 packets accept
ip daddr 192.168.10.200 tcp dport 80 ct state established,related accept
# WireGuard → lab : filtrage par pair (host_vars wireguard_peers)
{% for peer in wireguard_peers | selectattr('access', 'equalto', 'full') | list %}
# {{ peer.name }} — accès complet
@ -103,6 +110,9 @@ table ip nat {
# (joignable via 192.168.1.200 sans route vers 192.168.10.0/24)
iif {{ wan_interface }} tcp dport { 7777, 8888 } dnat to 192.168.10.20
iif {{ wan_interface }} udp dport 7777 dnat to 192.168.10.20:7777
# Portail Guacamole public — kaya.freeboxos.fr:9080 (redirection Freebox → s01)
iif {{ wan_interface }} tcp dport 9080 dnat to 192.168.10.200:80
}
chain postrouting {