fix: drop lan-only ipAllowList (klipper-lb SNATs all LB traffic to 10.42.0.1, so Traefik never sees real client IPs)

Internal-only for argocd/auth/adguard.labzand.com is now enforced at DNS level:
cloudflare-ddns only publishes ns.labzand.com; internal names resolve solely via
AdGuard rewrites. Delete the *.labzand.com A record in Cloudflare once.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <[email protected]>
This commit is contained in:
2026-11-14 17:35:35 +01:00
parent 43fdc020f4
commit ef58a7c0ca
7 changed files with 11 additions and 46 deletions
-1
View File
@@ -88,7 +88,6 @@ metadata:
annotations: annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true" traefik.ingress.kubernetes.io/router.tls: "true"
traefik.ingress.kubernetes.io/router.middlewares: adguard-lan-only@kubernetescrd
spec: spec:
rules: rules:
- host: adguard.labzand.com - host: adguard.labzand.com
+2 -14
View File
@@ -1,6 +1,5 @@
# Middlewares voor adguard.labzand.com (alleen intern): # Middleware voor adguard.labzand.com: http (web) -> https redirect.
# - redirect-https: http (web) -> https # (lan-only verwijderd: klipper-lb SNAT't al verkeer naar 10.42.0.1, zie argocd/middleware.yaml)
# - lan-only: blokkeert verkeer van buiten het LAN op de websecure-router
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: Middleware kind: Middleware
metadata: metadata:
@@ -10,14 +9,3 @@ spec:
redirectScheme: redirectScheme:
scheme: https scheme: https
permanent: true permanent: true
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: lan-only
namespace: adguard
spec:
ipAllowList:
sourceRange:
- 192.168.0.0/16
- 127.0.0.1/32
-1
View File
@@ -6,7 +6,6 @@ metadata:
annotations: annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true" traefik.ingress.kubernetes.io/router.tls: "true"
traefik.ingress.kubernetes.io/router.middlewares: argocd-lan-only@kubernetescrd
spec: spec:
ingressClassName: traefik ingressClassName: traefik
rules: rules:
+4 -14
View File
@@ -1,6 +1,7 @@
# Middlewares voor argocd.labzand.com (alleen intern): # Middleware voor argocd.labzand.com: http (web) -> https redirect.
# - redirect-https: http (web) -> https # (lan-only ipAllowList verwijderd: k3s klipper-lb SNAT't al LB-verkeer naar
# - lan-only: blokkeert verkeer van buiten het LAN op de websecure-router # 10.42.0.1, waardoor Traefik nooit het echte client-IP ziet. Internal-only
# wordt afgedwongen via DNS: geen publiek A-record voor interne namen.)
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: Middleware kind: Middleware
metadata: metadata:
@@ -10,14 +11,3 @@ spec:
redirectScheme: redirectScheme:
scheme: https scheme: https
permanent: true permanent: true
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: lan-only
namespace: argocd
spec:
ipAllowList:
sourceRange:
- 192.168.0.0/16
- 127.0.0.1/32
-1
View File
@@ -6,7 +6,6 @@ metadata:
annotations: annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true" traefik.ingress.kubernetes.io/router.tls: "true"
traefik.ingress.kubernetes.io/router.middlewares: authentik-lan-only@kubernetescrd
spec: spec:
ingressClassName: traefik ingressClassName: traefik
rules: rules:
-13
View File
@@ -1,13 +0,0 @@
# Middleware voor auth.labzand.com (alleen intern): blokkeert verkeer
# van buiten het LAN op de websecure-router.
# (redirect-https staat in redirect.yaml)
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: lan-only
namespace: authentik
spec:
ipAllowList:
sourceRange:
- 192.168.0.0/16
- 127.0.0.1/32
+4 -1
View File
@@ -6,5 +6,8 @@ metadata:
data: data:
# Comma-separated list of domains to update # Comma-separated list of domains to update
# Format: subdomain.domain.tld,subdomain2.domain.tld # Format: subdomain.domain.tld,subdomain2.domain.tld
DOMAINS: "*.labzand.com" # Alleen namen die écht publiek bereikbaar moeten zijn (via router -> cluster).
# Interne-only namen (argocd/auth/adguard.labzand.com) bewust NIET hier:
# die krijgen geen publiek A-record en resolven alleen intern via AdGuard.
DOMAINS: "ns.labzand.com"
ZONE_ID: "6093605ad5a8db13e9c9d9faad240ca6" ZONE_ID: "6093605ad5a8db13e9c9d9faad240ca6"