Funk-lab/ansible/roles/dnsmasq/templates/dnsmasq.conf.j2
ALI YESILKAYA cd0dacbc9a
feat(infra): domaine public funklab.online + HTTPS Let's Encrypt (fondation) (#88)
- traefik : values.yaml versionné (réplique existant + certResolver ACME
  HTTP-01 + acme.json persistant) — appliqué par helm upgrade (hors ArgoCD).
  Redirect HTTP→HTTPS scopée funklab.online (ne casse pas *.lab.local).
- gateway : DNAT 80/443 → Traefik + rate-limit
- dnsmasq : split-horizon *.funklab.online → Traefik (var public_domain)
- doc : admin/k8s/public-domain.md (archi, OVH/Freebox, helm, ajout d'app)

Appliqué et vérifié : helm upgrade OK (services *.lab.local intacts),
resolver ACME chargé, DNAT/dnsmasq en place. En attente DNS OVH + Freebox
pour l'émission des certificats.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 15:59:26 +02:00

51 lines
1.6 KiB
Django/Jinja

# Géré par Ansible — ne pas modifier manuellement
# Écoute sur le LAN cluster + tunnel WireGuard (DNS des clients VPN).
# bind-dynamic (et non bind-interfaces) : wg0 peut apparaître après le démarrage
interface={{ lan_interface }}
interface=wg0
bind-dynamic
# Domaine local
domain={{ dns_domain }}
local=/{{ dns_domain }}/
expand-hosts
# Ne pas lire /etc/resolv.conf pour les upstream
no-resolv
# Upstream DNS pour tout ce qui n'est pas lab.local
{% for server in dns_upstream %}
server={{ server }}
{% endfor %}
# Enregistrements statiques des machines du cluster
{% for host in dns_cluster_hosts %}
address=/{{ host.name }}.{{ dns_domain }}/{{ host.ip }}
address=/{{ host.name }}/{{ host.ip }}
{% endfor %}
# Wildcard *.lab.local → IP MetalLB Traefik (ingress)
address=/.{{ dns_domain }}/{{ traefik_ip }}
# Split-horizon : *.funklab.online résolu en interne vers Traefik (le LAN utilise
# les mêmes URLs publiques sans sortir sur Internet ; l'extérieur passe par le DNS
# OVH → IP publique → Freebox → s01). Ajouter ici chaque nouveau domaine public.
address=/{{ public_domain }}/{{ traefik_ip }}
# DHCP — plage dynamique pour le LAN cluster
dhcp-range={{ dhcp_range_start }},{{ dhcp_range_end }},{{ dhcp_lease_time }}
dhcp-option=option:dns-server,{{ lan_ip }}
dhcp-option=option:router,{{ lan_ip }}
# Baux statiques (MAC → IP fixe, ajoutés après récupération des MACs)
{% for host in dhcp_static_hosts %}
dhcp-host={{ host.mac }},{{ host.name }},{{ host.ip }}
{% endfor %}
# Cache
cache-size=1000
# Logs (désactiver en prod si trop verbeux)
log-queries
log-facility=/var/log/dnsmasq.log