Role serveur_dns_public (secondaire public, transfert signe TSIG, aucune zone interne) ; serveur_powerdns exerce enfin autorite primaire-cache dans une instance pdns@public a part, pour que le site ne puisse jamais interroger la zone .internal. Relations derivees des plans des locataires, mots de flux dns_public_site et primaires_dns_locataires. Eprouve avant d ecrire : allow-axfr-ips et TSIG sont alternatifs, le primaire notifie aussi ses NS, le serial fige aurait gele le secondaire. P82 refuse l exposition sans DNSSEC. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
32 lines
1.4 KiB
Django/Jinja
32 lines
1.4 KiB
Django/Jinja
#!/bin/bash
|
|
# GENERE par Set-OPS (role serveur_dns_public). Ne pas editer a la main.
|
|
#
|
|
# SONDE « zones-publiques » — le serveur public sert-il TOUTES les zones qu'il doit servir ?
|
|
#
|
|
# Contrat : docs/supervision-conception.md (API des greffons Nagios) — une ligne, 0/1/2.
|
|
# Mise en defaut PAR PARAMETRE : `serveur_dns_public_sonde_attendu` (seuil impossible).
|
|
set -uo pipefail
|
|
|
|
ATTENDU={{ serveur_dns_public_sonde_attendu }}
|
|
ICI={{ serveur_dns_public_ecoute }}
|
|
|
|
systemctl is-active --quiet pdns || { echo "Le serveur DNS public (pdns) n'est pas actif."; exit 2; }
|
|
|
|
# ON INTERROGE CE QUE LE MONDE INTERROGERA : le SOA de chaque zone, sur l'adresse d'ecoute.
|
|
# Un secondaire qui n'a jamais recu sa zone repond REFUSED ou SERVFAIL — ce qui, vu d'un
|
|
# registraire, se lit « serveur de noms defaillant ».
|
|
servies=0
|
|
manquantes=()
|
|
{% for zone in serveur_dns_public_relations | map(attribute='zones') | flatten %}
|
|
if [[ -n "$(dig +short +time=3 +tries=1 @"${ICI}" -p {{ serveur_dns_public_port }} SOA {{ zone }} 2>/dev/null)" ]]; then
|
|
servies=$((servies + 1))
|
|
else
|
|
manquantes+=("{{ zone }}")
|
|
fi
|
|
{% endfor %}
|
|
|
|
if (( servies < ATTENDU )); then
|
|
echo "Le serveur public ne sert que ${servies} zone(s) sur ${ATTENDU} : ${manquantes[*]:-?} — ces domaines ne resolvent plus depuis Internet.|zones=${servies};${ATTENDU};;0;"
|
|
exit 2
|
|
fi
|
|
echo "Serveur public : ${servies} zone(s) servie(s) sur ${ATTENDU}.|zones=${servies};${ATTENDU};;0;"
|