Cette fiche explique comment signer et valider une zone DNS interne avec BIND9, sans dépendre d’un prestataire externe.
On va signer ta zone locale.
Dans `/etc/bind/keys/` :
```bash mkdir -p /etc/bind/keys cd /etc/bind/keys
# Générer KSK dnssec-keygen -a RSASHA256 -b 2048 -f KSK mondomaine.lan
# Générer ZSK dnssec-keygen -a RSASHA256 -b 1024 mondomaine.lan ```
Tu obtiens 4 fichiers :
Dans `/etc/bind/zones/db.mondomaine.lan` :
```dns $TTL 3600 @ IN SOA ns1.mondomaine.lan. admin.mondomaine.lan. (
2025092201 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
3600 ) ; Negative Cache TTL
IN NS ns1.mondomaine.lan.
ns1 IN A 192.168.1.10
; — Clés DNSSEC — $INCLUDE “/etc/bind/keys/Kmondomaine.lan.+008+<id_KSK>.key” $INCLUDE “/etc/bind/keys/Kmondomaine.lan.+008+<id_ZSK>.key” ```
```bash cd /etc/bind/zones dnssec-signzone -o mondomaine.lan \
db.mondomaine.lan \
/etc/bind/keys/Kmondomaine.lan.+008+<id_ZSK>.key
```
👉 Ça génère `db.mondomaine.lan.signed`
Dans `/etc/bind/named.conf.local` :
```conf zone “mondomaine.lan” {
type master; file "/etc/bind/zones/db.mondomaine.lan.signed"; auto-dnssec maintain; inline-signing yes;
}; ```
Redémarre BIND :
```bash systemctl restart bind9 ```
Ton serveur DNS peut aussi vérifier les signatures des domaines externes.
Édite `/etc/bind/named.conf.options` :
```conf options {
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no;
listen-on { any; };
listen-on-v6 { any; };
}; ```
Recharge :
```bash systemctl reload bind9 ```
* Vérifier que ta zone interne est signée :
```bash dig +dnssec @127.0.0.1 mondomaine.lan ```
Tu dois voir des enregistrements RRSIG.
* Tester la validation DNSSEC :
```bash dig @127.0.0.1 www.dnssec-failed.org ```
👉 Si la validation marche, la requête échouera volontairement (domaine cassé exprès).
Tu as maintenant une infra DNS interne signée et validée avec DNSSEC, sans dépendance externe.