Set-OPS-Public/roles/serveur_powerdns/templates/pdns-public.conf.j2
2026-09-17 00:02:41 -04:00

52 lines
2.5 KiB
Django/Jinja

# GENERE par Set-OPS (role serveur_powerdns). Ne pas editer a la main.
#
# L'INSTANCE PUBLIQUE DU LOCATAIRE — `pdns@public`, primaire cache de ses zones publiques.
#
# Elle ne sert QUE les zones `autorite: primaire-cache`. La zone `.internal` reste a
# l'instance principale, sur la boucle locale : le serveur public du site peut interroger
# celle-ci, jamais celle-la.
#
# Une instance nommee ne lit pas `pdns.d/` : tout ce dont elle a besoin est dit ici.
launch=bind
bind-config={{ serveur_powerdns_public_bind_config }}
bind-dnssec-db={{ serveur_powerdns_public_dnssec_db }}
# LE SOCKET DE CONTROLE VIT OU L'UNITE LE MET (mesure le 2026-09-16, en production).
#
# `pdns@.service` cree `RuntimeDirectory=pdns-%i`, soit `/run/pdns-public`. Sans ce reglage,
# `pdns_control --config-name=public` cherchait `/var/run/pdns/pdns-public.controlsocket`,
# ne le trouvait pas — et la notification du site echouait. Le handler l'avalait en silence.
socket-dir=/run/pdns-public
# LA SEULE INSTANCE QUI ECOUTE L'ADRESSE DE L'HOTE. Le pare-feu de la machine ne laisse
# frapper que le serveur public du site (flux `dns_public_site`).
local-address={{ ansible_host }}
local-port={{ serveur_powerdns_public_port }}
primary=yes
secondary=no
# LE TRANSFERT S'OUVRE A LA CLE, PAS A L'ADRESSE (eprouve le 2026-09-16).
#
# `allow-axfr-ips` et TSIG sont ALTERNATIFS : une adresse listee obtient la zone sans
# signature. Seule la boucle locale y figure — le serveur public du site n'y est jamais,
# et ne recoit la zone que signee par `TSIG-ALLOW-AXFR`.
#
# MESURE EN PRODUCTION (2026-09-17) : une fois `TSIG-ALLOW-AXFR` pose sur la zone, meme la
# boucle locale est refusee (« Transfer failed »). Pour imprimer la zone depuis la machine,
# signer la demande avec la cle en place :
# K=$(sudo -u pdns pdnsutil --config-name=public list-tsig-keys | awk '/^tsig-/{sub(/\.$/,"",$1); print $1":"$3; exit}')
# dig -y "hmac-sha256:$K" @{{ ansible_host }} -p {{ serveur_powerdns_public_port }} <zone> AXFR
disable-axfr=no
allow-axfr-ips=127.0.0.1/32
# NOTIFIER LE SEUL SERVEUR PUBLIC DU SITE (decouvert le 2026-09-16, dans les journaux).
#
# Par defaut, un primaire notifie AUSSI les adresses de ses enregistrements NS. Ici, ce
# sont les adresses PUBLIQUES des serveurs de noms : le primaire enverrait des
# notifications vers Internet depuis l'interieur du locataire. `only-notify` les borne.
only-notify={{ serveur_powerdns_dns_public_site }}/32
also-notify={{ serveur_powerdns_dns_public_site }}
version-string=anonymous
security-poll-suffix=