Le système de noms de domaine (DNS) est un système de nommage distribué hiérarchique pour les ordinateurs, les services ou toute ressource connectée à Internet ou à un réseau privé. Il associe diverses informations aux noms de domaine attribués à chacune des entités participantes.
Plus important encore, il traduit les noms de domaine significatifs pour les humains en identifiants numériques associés aux équipements réseau dans le but de localiser et d'adresser ces appareils dans le monde entier.
Ce guide vous aidera à configurer le serveur DNS sur CentOS 8 / RHEL 8.
Hypothèses
Nom d'hôte : ns1.itzgeek.local
Adresse IP : 192.168.0.10
Installer le serveur DNS
BIND signifie Berkeley Internet Name Domain, un logiciel qui permet d'effectuer une conversion de nom en IP.
yum -y install bind bind-utils
Configurer le serveur DNS
Le fichier de configuration principal de BIND est /etc/named.conf. Nous allons utiliser ce fichier pour configurer le serveur DNS et définir la zone DNS.
Par défaut, BIND écoute sur l'hôte local. Nous allons donc configurer les serveurs DNS pour écouter sur toutes les interfaces réseau ou une interface particulière.
Modifiez le fichier /etc/named.conf.
vi /etc/named.conf
Commentez la ligne suivante. Cela permettra à BIND d'écouter les interfaces réseau du système autres que l'hôte local.
Écouter sur toutes les adresses IP :
//listen-on port 53 { 127.0.0.1; }; //listen-on-v6 port 53 { ::1; };
Écouter sur une adresse IP particulière :
listen-on port 53 { 127.0.0.1; 192.168.0.10; };
Ajoutez votre réseau dans la ligne suivante. J'ai ajouté 192.168.0.0/24 pour permettre aux clients du réseau 192.168.0.0/24 d'interroger le serveur DNS pour la traduction du nom en ip.
allow-query { localhost;192.168.0.0/24; };
Créer des zones
Modifiez le fichier /etc/named.conf.
vi /etc/named.conf
Zone avant
Voici l'entrée de zone de transfert dans le fichier named.conf, écrite pour le domaine itzgeek.local.
zone "itzgeek.local" IN { // Domain Name type master; // Master DNS Server file "itzgeek.local.db"; // Zone File (/var/named/) allow-update { none; }; // Since master DNS, it is none };
itzgeek.local – Nom de domaine
maître – DNS principal
itzgeek.local.db – Fichier de recherche directe
autoriser la mise à jour – Puisqu'il s'agit du DNS maître, il ne devrait en être aucun
Zone inversée
Voici l'entrée de zone inversée dans le fichier named.conf.
zone "0.168.192.in-addr.arpa" IN { // Reverse Zone Name, should match with network in reverse order type master; // Master DNS Server file "192.168.0.db"; // Zone File (/var/named/) allow-update { none; }; // Since master DNS, it is none };
0.168.192.in-addr.arpa – Nom de recherche inversée
maître – DNS principal
192.168.0.db – Fichier de recherche inversée
autoriser la mise à jour – Puisqu'il s'agit du DNS maître, il ne devrait en être aucun
Créer des fichiers de zone
Il est maintenant temps de créer un fichier de recherche pour une zone créée. Par défaut, les fichiers de recherche de zone sont placés dans le répertoire /var/named. Créez un fichier de zone appelé itzgeek.local.db pour la recherche directe sous /var/named directory.
Tous les noms de domaine doivent se terminer par un point (.).
Zone avant
Il existe des mots clés spéciaux pour les fichiers de zone
Créez un fichier.
vi /var/named/itzgeek.local.db
A – Unenregistrement
NS – Serveur de noms
MX – Courrier pour échange
CNAME– Nom canonique
$TTL 86400 @ IN SOA ns1.itzgeek.local. root.itzgeek.local. ( 3 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) ;Name Server Information @ IN NS ns1.itzgeek.local. ;IP address of Name Server ns1 IN A 192.168.0.10 ;Mail exchanger itzgeek.local. IN MX 10 mail.itzgeek.local. ;A - Record HostName To Ip Address www IN A 192.168.0.100 mail IN A 192.168.0.150 ;CNAME record ftp IN CNAME www.itgeek.local.
Chaque fois que vous mettez à jour les fichiers de zone pour la mise à jour de l'enregistrement DNS, n'oubliez pas d'incrémenter le numéro de série.
Zone inversée
Créez un fichier de zone appelé 192.168.0.db pour la zone inverse sous le répertoire /var/named, créez un pointeur inverse vers les entrées de zone avant ci-dessus.
vi /var/named/192.168.0.db
PTR – Pointeur
SOA – Début de l'autorité
$TTL 86400 @ IN SOA ns1.itzgeek.local. root.itzgeek.local. ( 3 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) ;Name Server Information @ IN NS ns1.itzgeek.local. ;Reverse lookup for Name Server 10 IN PTR ns1.itzgeek.local. ;PTR Record IP address to HostName 100 IN PTR www.itzgeek.local. 150 IN PTR mail.itzgeek.local.
Chaque fois que vous mettez à jour les fichiers de zone pour la mise à jour de l'enregistrement DNS, n'oubliez pas d'incrémenter le numéro de série.
Valider la configuration du serveur DNS
Utilisez la commande named-checkconf pour valider le fichier de configuration.
named-checkconf /etc/named.conf
Si vous ne voyez aucune erreur, alors vous êtes prêt à partir.
Validez le fichier de zone de transfert que vous avez créé avec la commande ci-dessous.
named-checkzone itzgeek.local /var/named/itzgeek.local.db
itzgeek.local – Nom de domaine
/var/named/itzgeek.local.db – Chemin vers un fichier de zone
Sortie :
zone itzgeek.local/IN: loaded serial 3 OKLe numéro de série mentionné dans la sortie doit correspondre au numéro de série dans les fichiers de zone.
Faites de même pour la zone inversée.
named-checkzone 0.168.192.in-addr.arpa /var/named/192.168.0.db
Sortie :
zone 0.168.192.in-addr.arpa/IN: loaded serial 3 OK
Démarrer le service DNS
Une fois que vous avez validé les configurations DNS, redémarrez le service de liaison.
systemctl restart named
Activez-le au démarrage du système.
systemctl enable named
Mise à jour des enregistrements DNS
Chaque fois que vous modifiez un enregistrement DNS, n'oubliez pas de modifier le numéro de série dans le fichier de zone et de recharger la zone.
Changez itzgeek.local &0.168.192.in-addr.arpa avec vos noms de zone.
### Forward Zone ### rndc reload itzgeek.local ### Reverse Zone ### rndc reload 0.168.192.in-addr.arpa
Pare-feu
Ajoutez une règle de pare-feu pour autoriser les requêtes DNS à partir des machines clientes.
firewall-cmd --permanent --add-port=53/udp firewall-cmd --reload
Vérifier le serveur DNS
Visitez n'importe quelle machine cliente et ajoutez l'adresse IP d'un serveur DNS dans /etc/resolv.conf si Network Manager ne gère pas le réseau.
nameserver 192.168.0.10
Si Network Manager gère la mise en réseau, placez l'entrée suivante dans le fichier /etc/sysconfig/network-scripts/ifcfg-eXX.
DNS1=192.168.0.10
Redémarrez le service réseau.
service network restart OR systemctl restart NetworkManager
Utilisez la commande suivante pour vérifier la recherche directe, où le serveur DNS donne 192.168.0.100 comme IP pour www.itzgeek.local .
dig www.itzgeek.local
Sortie :
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> www.itzgeek.local ;; global options: +cmd ;; Got answer: ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42679 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 99d94df91828bc8e957709ec5e13f9cd0c242970a9488a91 (good) ;; QUESTION SECTION: ;www.itzgeek.local. IN A ;; ANSWER SECTION: www.itzgeek.local. 86400 IN A 192.168.0.100 ;; AUTHORITY SECTION: itzgeek.local. 86400 IN NS ns1.itzgeek.local. ;; ADDITIONAL SECTION: ns1.itzgeek.local. 86400 IN A 192.168.0.10 ;; Query time: 0 msec ;; SERVER: 192.168.0.10#53(192.168.0.10) ;; WHEN: Tue Jan 07 08:53:56 IST 2020 ;; MSG SIZE rcvd: 124Installez le package bind-utils pour obtenir la commande nslookup ou dig.
Confirmez la recherche inversée, où le serveur DNS donne www.itzgeek.local comme nom pour 192.168.0.100 . Il est maintenant confirmé que les recherches directes et inversées fonctionnent correctement.
dig -x 192.168.0.100
Sortie :
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> -x 192.168.0.100 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43305 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: d36aa24edb88f8951b3fbf8c5e13fa2cbf0e3ed754a00eee (good) ;; QUESTION SECTION: ;100.0.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 100.0.168.192.in-addr.arpa. 86400 IN PTR www.itzgeek.local. ;; AUTHORITY SECTION: 0.168.192.in-addr.arpa. 86400 IN NS ns1.itzgeek.local. ;; ADDITIONAL SECTION: ns1.itzgeek.local. 86400 IN A 192.168.0.10 ;; Query time: 0 msec ;; SERVER: 192.168.0.10#53(192.168.0.10) ;; WHEN: Tue Jan 07 08:55:30 IST 2020 ;; MSG SIZE rcvd: 148
Conclusion
C'est tout. Vous avez installé avec succès BIND sur CentOS 8 / RHEL 8 en tant que serveur maître. Dans notre prochain article, nous verrons comment configurer un serveur DNS esclave sur CentOS 8 / RHEL 8.