dnsbind9cisco
MDstable
NoteSnippetChecklistPlaybook
DNS — Configuration & Sécurisation
BIND9, Windows DNS Server, Cisco IOS DNS, zones, forwarders, split-horizon, DNSSEC
snippetintermediate 2026-05-14 4 min read
dnsbind9ciscowindowsdnssecsplit-horizonzone-transfernamed
BIND9 (Linux)
Installation et structure
bash
apt install bind9 bind9utils dnsutils# Fichiers clés/etc/bind/named.conf # config principale/etc/bind/named.conf.options # options globales/etc/bind/named.conf.local # zones locales/var/cache/bind/ # fichiers de zone
Options globales — /etc/bind/named.conf.options
text
options {directory "/var/cache/bind";// Résolveurs en amont (forwarders)forwarders {1.1.1.1;8.8.8.8;};forward only;// Restreindre les requêtes récursives au réseau localallow-recursion { 192.168.0.0/16; 10.0.0.0/8; localhost; };// Bloquer les transferts de zone par défautallow-transfer { none; };// Ne pas exposer la version de BINDversion "none";// DNSSEC validationdnssec-validation auto;listen-on { any; };listen-on-v6 { any; };};
Zone autoritaire — /etc/bind/named.conf.local
text
zone "example.local" {type master;file "/var/cache/bind/db.example.local";// Autoriser le transfert uniquement vers le serveur secondaireallow-transfer { 192.168.1.2; };notify yes;};zone "1.168.192.in-addr.arpa" {type master;file "/var/cache/bind/db.192.168.1";allow-transfer { 192.168.1.2; };};
Fichier de zone direct — db.example.local
text
$TTL 86400@ IN SOA ns1.example.local. admin.example.local. (2026051401 ; Serial (YYYYMMDDNN)3600 ; Refresh1800 ; Retry604800 ; Expire86400 ) ; Minimum TTL; Serveurs de noms@ IN NS ns1.example.local.@ IN NS ns2.example.local.; Enregistrements Ans1 IN A 192.168.1.1ns2 IN A 192.168.1.2gw IN A 192.168.1.254srv-web IN A 192.168.1.10srv-db IN A 192.168.1.20; Alias CNAMEwww IN CNAME srv-web.example.local.; Messagerie@ IN MX 10 mail.example.local.mail IN A 192.168.1.30; SPF@ IN TXT "v=spf1 ip4:192.168.1.30 -all"
Split-horizon (vues interne / externe)
text
// named.conf.local — vues séparéesacl internal { 192.168.0.0/16; 10.0.0.0/8; };view "internal" {match-clients { internal; };zone "example.com" {type master;file "/var/cache/bind/db.example.com.internal";};};view "external" {match-clients { any; };zone "example.com" {type master;file "/var/cache/bind/db.example.com.external";allow-transfer { none; };};};
DNSSEC — Signature de zone
bash
# Générer les clés ZSK et KSKdnssec-keygen -a RSASHA256 -b 1024 -n ZONE examplelocal # ZSKdnssec-keygen -a RSASHA256 -b 2048 -n ZONE -f KSK examplelocal # KSK# Signer la zonednssec-signzone -A -3 head -c 1000 /dev/random | sha1sum | cut -b 1-16)-N INCREMENT -o examplelocal -t dbexamplelocal# Activer dans named.conf.localzone "example.local"file "/var/cache/bind/db.example.local.signed";dnssec-policy default;;# Vérifiersystemctl reload bind9dig dnssec examplelocal SOA localhost# Chercher le flag "ad" dans les flags de réponse
Commandes de gestion
bash
# Vérifier la syntaxenamed-checkconfnamed-checkzone examplelocal /var/cache/bind/db.example.local# Recharger sans redémarrersystemctl reload bind9rndc reloadrndc reload examplelocal # zone spécifique# Vider le cacherndc flush# Statistiquesrndc stats && cat /var/cache/bind/named_stats.txt
Windows DNS Server
Configuration PowerShell
powershell
# Lister les zonesGet-DnsServerZone# Créer une zone primaireAdd-DnsServerPrimaryZone -Name "example.local" `-ZoneFile "example.local.dns" -DynamicUpdate Secure# Créer une zone de recherche inverseAdd-DnsServerPrimaryZone -NetworkId "192.168.1.0/24" `-ZoneFile "1.168.192.in-addr.arpa.dns"# Ajouter des enregistrementsAdd-DnsServerResourceRecordA -ZoneName "example.local" `-Name "srv-web" -IPv4Address "192.168.1.10"Add-DnsServerResourceRecordCName -ZoneName "example.local" `-Name "www" -HostNameAlias "srv-web.example.local."Add-DnsServerResourceRecordMX -ZoneName "example.local" `-Name "@" -MailExchange "mail.example.local" -Preference 10# Configurer les forwardersSet-DnsServerForwarder -IPAddress 1.1.1.1, 8.8.8.8# Bloquer les transferts de zoneSet-DnsServerPrimaryZone -Name "example.local" -SecureSecondaries NoTransfer# Vérifier DNSSECGet-DnsServerDnsSecZone
Cisco IOS — DNS Server
text
! Activer le service DNSip dns server! Entrées statiquesip host srv-web.example.local 192.168.1.10ip host srv-db.example.local 192.168.1.20! Forwarders (si le routeur relaie les requêtes)ip name-server 192.168.1.1 192.168.1.2! Désactiver la résolution DNS automatique sur les typos (CLI)no ip domain-lookup
Troubleshooting DNS
bash
# Résolution basiquedig examplelocal Anslookup srv-web.example.local# Vérifier le SOA et les NSdig examplelocal SOAdig examplelocal NS# Tester le transfert de zone (doit être refusé depuis l'extérieur)dig AXFR ns1examplelocal examplelocal# Vérifier SPF, DKIM, DMARCdig TXT examplelocal | grep spfdig TXT _dmarcexamplelocaldig TXT <selector>_domainkeyexamplelocal# Tracer la délégation DNSdig trace examplelocal# Vérifier la latence de résolutiondig examplelocal | grep "Query time"
Checklist0/10
💡 Tip —
Le numéro de série SOA (format YYYYMMDDNN) doit être incrémenté à chaque modification de zone — BIND rejette les mises à jour des secondaires si le serial n'augmente pas.
OPS·BRAIN v1.027 notes · Networklocal