Documentation Index
Fetch the complete documentation index at: https://snakysec.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Runbook 09 — Restauration zone DNS snakysec.com
1. Quand activer
| Scénario | Activer ? |
|---|
| Records DNS supprimés accidentellement (OVH UI manipulation) | OUI |
| Domaine entier injoignable (records corrompus côté OVH) | OUI |
| Migration vers un autre registrar (cas hors-DR) | OUI mode contrôlé |
| Sous-domaine client absent post-onboarding | NON (re-créer le record manuellement) |
2. Objectifs
- RPO : 30 jours (export mensuel BIND zone)
- RTO cible : 1 heure (incl. propagation TTL)
3. Source de récupération
L’export mensuel de la zone est dans artifacts/dns-zones/snakysec.com.<YYYY-MM>.bind.
Backupé dans le restic OVH+Scaleway artifacts (cf. 03-backup-strategy.md §4.4).
4. Procédure
4.1 Récupérer l’export le plus récent
make dr-shell
# Localiser le dernier export
ls -la /artifacts/dns-zones/snakysec.com.*.bind | tail -3
# Si pas dispo localement (volume HS), restorer depuis backup
/dr/restore/artifacts-restore.sh \
--include="/artifacts/dns-zones/**" \
--target-dir="/dr-runtime/dns-restore"
4.2 Inspection du fichier zone
cat /artifacts/dns-zones/snakysec.com.2026-04.bind
Format BIND standard :
$ORIGIN snakysec.com.
$TTL 3600
@ IN SOA dns.ovh.net. tech.ovh.net. (
2026042601 ; Serial
86400 ; Refresh
3600 ; Retry
3600000 ; Expire
300 ) ; Minimum
@ IN NS dns.ovh.net.
@ IN NS ns.ovh.net.
@ IN A 51.91.X.Y
* IN A 51.91.X.Y
www IN CNAME snakysec.com.
openproject IN A 51.91.X.Y
status IN A 51.91.X.Y
@ IN MX 1 mx1.mail.ovh.net.
@ IN TXT "v=spf1 include:_spf.snakysec.com -all"
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@snakysec.com"
default._domainkey IN TXT "v=DKIM1; k=rsa; p=..."
4.3 Re-import via OVH UI (rapide, manuel)
1. Login manager.ovh.com
2. Domaines → snakysec.com → DNS Zone
3. Cliquer "Modify zone in expert mode"
4. Copier-coller le contenu du fichier .bind dans le textarea
5. Vérifier les records contre la liste affichée précédemment
6. Apply
7. OVH propage en ~5 minutes
4.4 Re-import via OVH API (automatisable)
# Depuis dr-runner (a curl + creds OVH API)
make dr-shell
# Lire les credentials OVH API depuis Vault
vault_export_dr_credentials_for_dns_restore() {
OVH_APP_KEY=$(vault_read_dr ovh_api_app_key)
OVH_APP_SECRET=$(vault_read_dr ovh_api_app_secret)
OVH_CONSUMER_KEY=$(vault_read_dr ovh_api_consumer_key)
}
vault_export_dr_credentials_for_dns_restore
# Lire le fichier zone
ZONE_CONTENT=$(cat /artifacts/dns-zones/snakysec.com.2026-04.bind)
# POST le contenu via API (endpoint /domain/zone/<domain>/import)
TIMESTAMP=$(date +%s)
URL="https://eu.api.ovh.com/1.0/domain/zone/snakysec.com/import"
BODY="{\"zoneFile\":$(echo "${ZONE_CONTENT}" | jq -Rs .)}"
SIGNATURE=$(echo -n "${OVH_APP_SECRET}+${OVH_CONSUMER_KEY}+POST+${URL}+${BODY}+${TIMESTAMP}" | sha1sum | awk '{print "$1$" $1}')
curl -X POST \
-H "X-Ovh-Application: ${OVH_APP_KEY}" \
-H "X-Ovh-Consumer: ${OVH_CONSUMER_KEY}" \
-H "X-Ovh-Timestamp: ${TIMESTAMP}" \
-H "X-Ovh-Signature: ${SIGNATURE}" \
-H "Content-Type: application/json" \
-d "${BODY}" \
"${URL}"
⚠️ Attention : /domain/zone/<domain>/import REMPLACE entièrement la
zone. Les records ajoutés depuis le dernier export mensuel seront perdus.
Privilégier la version manuelle si on a besoin de précision.
4.5 Validation
# Wait propagation TTL (300s)
sleep 60
# Test depuis une résolution externe (Google DNS)
dig @8.8.8.8 snakysec.com +short
# attendu : <NEW_VPS_IP>
dig @8.8.8.8 *.snakysec.com +short
# attendu : <NEW_VPS_IP>
dig @8.8.8.8 snakysec.com TXT +short
# attendu : SPF, DMARC, DKIM records visibles
5. Communication client
Si la zone DNS a été corrompue, les emails sortants peuvent être bloqués
(SPF/DMARC fail). Ne pas envoyer d’email tant que validation §4.5 OK.
Suite à un incident de configuration DNS, certains accès à snakysec.com ont
pu être interrompus pendant N minutes. La situation est rétablie. Pour les
sous-domaines clients (votre-tenant.snakysec.com), vérifiez l'accès et
contactez-nous immédiatement si problème persistant.
6. Erreurs courantes
| Erreur | Solution |
|---|
| OVH API : “Invalid signature” | Vérifier que TIMESTAMP est en secondes Unix UTC, pas en ms |
| Records visibles dans OVH UI mais pas résolus | Wait propagation TTL (5-30 min) |
| Sous-domaine client manquant après import | Le record n’était pas dans l’export, à re-créer manuellement |
| MX records cassés (emails sortants en panne) | Re-vérifier MX + SPF + DKIM dans la zone |
| Version | Date | Auteur |
|---|
| 1.0 | 2026-04-26 | Nicolas Schiffgens |