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> |
||
|---|---|---|
| .. | ||
| defaults | ||
| handlers | ||
| meta | ||
| tasks | ||
| templates | ||
| README.md | ||
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.