docs/dns-interne.md couvre desormais le DNS public sur deux sites : vue d'ensemble, chemin d'une requete interne, publication d'une zone, requete de l'Internet, NS d'une zone (cinq schemas Mermaid), et les tableaux des flux, des declarations, des gardes et de la bascule. README de serveur_powerdns et de serveur_dns_public a jour ; le wiki y renvoie. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.3 KiB
Rôle serveur_powerdns
Pour qui : le mainteneur du DNS d'un écosystème. La vue d'ensemble, avec ses schémas, est dans
docs/dns-interne.md.
PowerDNS Authoritative, backend BIND, zones générées par Ansible depuis l'inventaire et le plan. Pas de dépendance à PostgreSQL. Le rôle porte deux instances, qui ne se voient pas.
| Instance | Ce qu'elle sert | Écoute | Qui l'interroge |
|---|---|---|---|
pdns (principale) |
la zone interne (.internal) et ses zones inverses |
5300 sur la boucle locale quand le résolveur partage l'hôte, 53 sinon (port derive) |
le résolveur de l'écosystème, seul |
pdns@public |
les zones autorite: primaire-cache du plan — primaire caché |
<hôte>:5300 |
le serveur DNS public de chaque site, en TSIG |
Une instance à part pour le public : faire écouter la principale sur l'adresse de l'hôte
aurait permis au serveur public du site d'interroger la zone .internal.
La zone interne
- Chaque hôte actif qui porte
ansible_hostreçoit son A, sans déclaration. - Les noms exposés (
serveur_powerdns_expositions) mènent au service ou à l'edge selonresolution_internedu domaine. - Les enregistrements en plus :
serveur_powerdns_records.
Les zones publiques (tasks/zones-publiques.yml)
Joué seulement là où le site a un serveur public à servir (dns_public_site non vide).
- SOA et NS : le serveur du site (
serveur_powerdns_dns_public_nom) et celui de chaque pair (serveur_powerdns_dns_public_noms_pairs). Seule la zone qui contient un de ces noms en porte le A, à l'adresse publique de son site. Sans pair, le rendu est identique octet pour octet. - Enregistrements : ceux du plan (
plan/domaines.yml), déjà passés au crible parvalider_domaines. - Le serial suit le contenu, et l'état DNSSEC fait partie du contenu.
- DNSSEC : une clé CSK par zone, tenue dans la voûte du locataire
(
vault_dnssec_<zone>), jamais créée sur la machine. Servie à l'heure (SOA-EDIT EPOCH). - Transfert : TSIG seul l'ouvre (
allow-axfr-ipsne garde que la boucle locale, parce qu'une adresse listée obtiendrait la zone sans signature). - Notifications :
only-notifyetalso-notifylimités àdns_public_siteetdns_public_pairs— les adresses que le contrat du site dépose dans la fiche. - Gardes : nom de pair bien formé, adresse publique, distinct du nôtre, jamais redéclaré.
Variables
Celles qu'on règle, les autres se dérivent :
| Variable | Défaut | Source |
|---|---|---|
serveur_powerdns_zone |
domaine_interne |
plan |
serveur_powerdns_records |
[] |
inventaire |
serveur_powerdns_dns_public_site |
dns_public_site |
contrat du site |
serveur_powerdns_dns_public_pairs |
dns_public_pairs |
contrat du site |
serveur_powerdns_dns_public_nom |
dns_public_nom |
contrat du site |
serveur_powerdns_dns_public_noms_pairs |
dns_public_noms_pairs |
contrat du site |
serveur_powerdns_public_port |
5300 |
— |
Flux
meta/flux.yml : l'entrée de la zone interne (port derive), la résolution sortante de
l'autoritatif pour ses propres besoins (il est exempté de client_resolveur), et l'entrée
5300 UDP/TCP depuis le serveur public du site, seulement là où pdns@public existe.