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>
This commit is contained in:
alkatrazz 2026-07-07 11:08:44 +02:00
parent 2181e3ee80
commit 080441ef41
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 {