Set-OPS-Public/roles/serveur_dns_public
Daniel Allaire 19bbadfb11 DNS public en production : cinq fautes que seule la production montrait
Applicateur de frontiere : ecrire n est pas charger, le chemin rien a faire charge
desormais. site-verifier compare enfin playbooks/site.yml, regenere avec le groupe.
Base TSIG dans un repertoire a pdns et pdnsutil en pdns (journal SQLite). Flux UDP 5300 :
le secondaire demande le SOA avant de transferer, garde dans P82. socket-dir de
pdns@public, et le failed_when qui taisait la notification est retire. Eprouve sur les
machines : 2 zones sur 2 tirees automatiquement, NOTIFY compte, zone interne refusee.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 18:35:36 -04:00
..
defaults DNS public en production : cinq fautes que seule la production montrait 2026-09-16 18:35:36 -04:00
handlers DNS public, phase 1 : le locataire ecrit, le site sert 2026-09-16 18:08:20 -04:00
meta DNS public en production : cinq fautes que seule la production montrait 2026-09-16 18:35:36 -04:00
tasks DNS public en production : cinq fautes que seule la production montrait 2026-09-16 18:35:36 -04:00
templates DNS public, phase 1 : le locataire ecrit, le site sert 2026-09-16 18:08:20 -04:00
README.md DNS public, phase 1 : le locataire ecrit, le site sert 2026-09-16 18:08:20 -04:00

serveur_dns_public

Pour qui : l'hébergeur qui publie les noms de ses locataires sur Internet.

Le serveur DNS public du site. Il est secondaire de toutes les zones publiques des locataires qu'il héberge. Il ne porte aucune donnée à lui : le locataire écrit sa zone, le site la sert.

Le locataire écrit, le site sert

LOCATAIRE   infra-dns-01     primaire caché de chezlepro.ca  ─┐ NOTIFY
                             (autorite: primaire-cache)        │ AXFR signé TSIG, tiré par le site
SITE        site-dnspub-01   secondaire public  ◄──────────────┘
  • Le primaire reste chez le locataire. Quand il part, il emporte sa zone, et le site n'a qu'à cesser d'être secondaire. Écrire les zones au site ferait de l'hébergeur la source des données du client.
  • La liste des zones se dérive de tous les locataires du site, dans scripts/site_inventaire.py. Jamais une liste tenue à la main.
  • Uniquement autorite: primaire-cache. Le rôle refuse une zone .internal : ce serveur répond à Internet.

Ce que l'épreuve de l'outil a appris (2026-09-16, PowerDNS 4.9.17)

Deux instances jetables, sept vérifications, avant d'écrire une ligne de ce rôle.

Constat Ce que le rôle en fait
allow-axfr-ips et TSIG sont alternatifs, pas cumulatifs : une adresse listée obtient la zone sans signature le primaire n'autorise aucune adresse ; seule la clé ouvre le transfert
allow-axfr-ips autorise la boucle locale par défaut un test négatif depuis la boucle locale n'en est pas un
le backend bind seul ne stocke aucune métadonnée bind-dnssec-db porte les clés TSIG
la syntaxe exige masters { ip:port; }; sans accolades, tout le fichier est refusé
le primaire notifie aussi les adresses de ses NS le primaire restreint ses notifications au seul serveur public du site

Durcissement

  • Secondaire seulement : secondary=yes, primary=no.
  • Aucun transfert sortant en phase 1 (disable-axfr=yes). La réplication vers le site pair passera par le tunnel WireGuard, plus tard.
  • Notifications acceptées des seuls primaires déclarés.
  • version-string=anonymous : la version est la première chose qu'un balayage demande.
  • security-poll-suffix= vide : PowerDNS interroge par défaut un domaine de l'éditeur à chaque démarrage. Un serveur souverain n'appelle pas un tiers.
  • Pas de récursion : PowerDNS Authoritative ne récurse pas — vérifié, il répond REFUSED.

Ce que la phase 1 n'expose pas

Aucun flux depuis Internet. Le port 53 public viendra en phase 2, par la redirection de la frontière — et seulement après DNSSEC signé chez le locataire, CAA, et la limitation de débit des réponses. Le déclarer aujourd'hui dans meta/flux.yml ferait émettre au devis une règle sur le WAN que personne n'aurait décidée.