Dans ce tutoriel, vous allez apprendre à installer Bind avec Fedora 36 et à configurer l'environnement de travail en fonction de vos besoins.
sudo dnf install bind bind-utils
Connectez-vous sur l'interface cockpit du serveur et allez dans l'onglet "Réseau" (ou "Network") en anglais, seléctionnez ensuite votre interface réseau.
Modifier la configuration ipv4
Décocher le dns automatique si vous le souhaitez & ajouter votre propre DNS (votre ip ou 127.0.0.1 peu importe)
Afficher la liste de vos interfaces réseau
nmcli connection show
Récupérez le nom de votre interface
NAME UUID TYPE DEVICE
ens160 3dda343a-bc47-350c-9705-1aa965bb5cd5 ethernet ens160
Modifiez la configuration en adaptant "ens160" à votre nom d'interface
nmcli con mod ens160 ipv4.dns 127.0.0.1
Premièrement nous allons modifier le fichier de configuration principal pour permettre au serveur d'écouter les requêtes depuis le réseau local
sudo vim /etc/named.conf
Modifiez la ligne suivante permettant de spécifier les ip d'écoute de votre serveur
listen-on port 53 { 127.0.0.1; };
En ajoutant l'ip de votre serveur
listen-on port 53 { 127.0.0.1; 172.16.244.144; };
Modifiez cette ligne permettant de spécifier d'où les requêtes sont autorisés
allow-query { localhost; };
En ajoutant votre réseau local
allow-query { localhost; 172.16.244.0/24; };
Pour configurer la zone principale, premièrement rendez vous dans le fichier /etc/named.conf & ajoutez les éléments suivants en fin de configuration.
#Zone normale
zone "tuto.lan" IN {
type master;
file "forward.tuto.lan";
allow-update { none; };
};
#Zone inversée
zone "244.16.172.in-addr.arpa" IN {
type master;
file "reverse.tuto.lan";
allow-update { none; };
};
Créez le fichier /var/named/forward.tuto.lan pour la zone principale & ajoutez ce contenu :
$TTL 86400
@ IN SOA tuto.lan. root.tuto.lan. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
@ IN NS tuto.lan.
@ IN A 172.16.244.144
dns IN A 172.16.244.144
client IN A 172.16.244.1
Créez ensuite le fichier /var/named/reverse.tuto.lan & ajoutez ce contenu :
$TTL 86400
@ IN SOA tuto.lan. root.tuto.lan. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
@ IN NS tuto.lan.
@ IN PTR tuto.lan.
144 IN PTR dns.tuto.lan.
1 IN PTR client.tuto.lan.
Attention, pour chaque modification de zone, n'oubliez pas d'incrémenter le numéro de série ("Serial")
Vérifiez la configuration de votre serveur, si vous n'avez pas de retour, la configuration est bonne !
sudo named-checkconf /etc/named.conf
Vérifiez ensuite la configuration de vos zone
sudo named-checkzone tuto.lan /var/named/forward.tuto.lan
zone forward.tuto.lan/IN: loaded serial 2011071001
OK
sudo named-checkzone reverse.tuto.lan /var/named/reverse.tuto.lan
zone reverse.tuto.lan/IN: loaded serial 2011071001
OK
Autorisez le service "named"
sudo systemctl enable --now named
Ajoutez la règle de pare-feu
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
Testez sur un client avec nslookup
nslookup dns.tuto.lan
Server: 172.16.244.144
Address: 172.16.244.144#53
Name: dns.tuto.lan
Address: 172.16.244.144
Vous pouvez préciser l'ip du serveur si le client n'a pas votre serveur de renseigné dans sa configuration
nslookup dns.tuto.lan 172.16.244.144
Server: 172.16.244.144
Address: 172.16.244.144#53
Name: dns.tuto.lan
Address: 172.16.244.144
Super ! Vous savez maintenant comment configurer bind sur Fedora !
Pour configurer la redirection sur bind il vous suffit d'ajouter l'option recursion
dans le fichier /etc/named.conf dans "l'onglet" options
, votre serveur jouera un rôle de "cache".
options {
[...]
recursion yes;
[...]
}
Vérifiez depuis votre client
nslookup google.com
Server: 172.16.244.144
Address: 172.16.244.144#53
Non-authoritative answer:
Name: google.com
Address: 216.58.213.78
Name: google.com
Address: 2a00:1450:4007:806::200e
Si vous souhaitez rediriger le traffic sur des serveurs particulier utilisez l'option forwarders
options {
[...]
forwarders {
8.8.8.8;
1.1.1.1;
};
[...]
}
Super ! Vous savez maintenant comment configurer des redirecteurs !
Pour configurer DNSsec, dans un premier temps déplacez vous dans le dossier /var/named
cd /var/named
Une fois dans le dossier, nous allons d'abord créer la clé pour signer la zone
dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE tuto.lan
Generating key pair....+.........+...+..+.....................+.......+..++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++*...+.........+....+.....+.+...+.....+......+....++++++++
[...]
Ktuto.lan.+007+11297
Configurez ensuite la clé de signature de clé
dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE tuto.lan
Generating key pair..................+...+...............+..+..........+.....+.+.....+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+.+.....+.......+........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+.................+....+........+.......+......+........+.......+...+......+.....+...+..
[...]
Ktuto.lan.+007+10900
Ajoutez la clé de signature de zone & la clé de signature de clé dans vos fichiers de configuration
sudo echo "\$include Ktuto.lan.+007+10900.key" >> /var/named/forward.tuto.lan
sudo echo "\$include Ktuto.lan.+007+11297.key" >> /var/named/forward.tuto.lan
Nous allons ensuite signer la zone en utilisant la commande suivante
dnssec-signzone -3 <salt> -A -N INCREMENT -o <zonename> -t <zonefilename>
Une chaine de 16 caractères générés aléatoirement doit composer le "salt" pour cela utilisez la commande
head -c 1000 /dev/random | sha1sum | cut -b 1-16
Ma commande complètement donnera alors pour la zone "forward"
dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) -N INCREMENT -o tuto.lan -t forward.tuto.lan
Vous aurez ce retour là signalant si la zone a bien été signé ou non
Verifying the zone using the following algorithms:
- NSEC3RSASHA1
Zone fully signed:
Algorithm: NSEC3RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked
ZSKs: 1 active, 0 stand-by, 0 revoked
forward.tuto.lan.signed
Signatures generated: 11
Signatures retained: 0
Signatures dropped: 0
Signatures successfully verified: 0
Signatures unsuccessfully verified: 0
Signing time in seconds: 0.022
Signatures per second: 500.000
Runtime in seconds: 0.024
Je retourne modifier la configuration dans /etc/named.conf en modifiant dans le fichier forward.tuto.lan
en forward.tuto.lan.signed
zone "tuto.lan" IN {
type master;
file "forward.tuto.lan.signed";
allow-update { none; };
};
Je vérifie mes configurations
sudo named-checkconf /etc/named.conf
sudo named-checkzone tuto.lan /var/named/forward.tuto.lan.signed
zone tuto.lan/IN: loaded serial 2022110302 (DNSSEC signed)
OK
Je redémarre bind
sudo systemctl restart named
Je vérifie auprès de mon client
dig dns.tuto.lan @172.16.244.144 +multiline +dnssec
En vérifiant le résultat j'ai bien l'enregistrement type A & type RRSIG prouvant que mon enregistrement est bien signé
; <<>> DiG 9.16.33-RH <<>> dns.tuto.lan @172.16.244.144 +multiline +dnssec
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29465
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 1232
; COOKIE: 75cd584bf364e269010000006363e97cc167503e6ae527c8 (good)
;; QUESTION SECTION:
;dns.tuto.lan. IN A
;; ANSWER SECTION:
dns.tuto.lan. 86400 IN A 172.16.244.144
dns.tuto.lan. 86400 IN RRSIG A 7 3 86400 (
20221203151337 20221103151337 11297 tuto.lan.
BIiyVvJFZWBxwNi5o3sonHyOURG1l2TPACEjYtHvyzQV
Ysa+jYPRKfsqN/2jED2QE3aBq1+/R1UnltGQOzInxodX
30tGV6g787abEhlHU1zSZcMINtrmKmJMPWOSijn1W2Dl
uJTPrk+uDZDD7/rxuPJtQUA4skekoruzwjlmKIEeMJE1
C+MNj3lv2zx0JeXWBKxcnaVVDnE+5SAR7vcwfUY5oqBg
fJxkaQ9QaSf8LU8ablb+EJcHM52PXiuAw/b51lIt+KGM
Ks74R2MG03HoEcE6j/hvfbzlFJQ7L0GDflC9pYdEpPF7
EIXTKzezwUiiZbQ/NV+JaMPu3cob7hBVrA== )
;; Query time: 1 msec
;; SERVER: 172.16.244.144#53(172.16.244.144)
;; WHEN: Thu Nov 03 17:17:00 CET 2022
;; MSG SIZE rcvd: 389
Super ! Vous savez maintenant comment configurer DNSsec sur Fedora !
(en cours de rédaction)
Vous savez maintenant comment installer et configurer un serveur DNS avec Fedora !
Vous pouvez aller plus loin dans la configuration si vous le souhaitez, n’hésitez pas à me contacter dans ce cas ou à vous renseigner directement auprès des documentations Debian disponibles sur leur site officiel.
Si vous souhaitez avoir plus d’informations ou si vous avez découvert une coquille sur ce tutoriel, merci de me contacter à l’adresse i.martel@imweb.ovh
v1 - Version initiale