Ce guide montrera comment installer et configurer un serveur DNS dans RHEL 8 / CentOS 8 en mode cache uniquement ou en tant que serveur DNS unique, sans configuration maître-esclave. Un exemple de zone inverse et avant est fourni.
Dans ce didacticiel, vous apprendrez :
- Comment installer un serveur DNS dans RHEL 8/CentOS 8
- Comment configurer un serveur comme serveur DNS de mise en cache uniquement
- Comment configurer un serveur en tant que serveur DNS unique
Client résolvant une requête via le serveur DNS.
Configuration logicielle requise et conventions utilisées
Catégorie | Mise en réseau |
---|---|
Système | RHEL 8/CentOS 8 |
Logiciel | lier |
Autre | Accès privilégié à votre système Linux en tant que root ou via le sudo commande. |
Conventions | # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo commande$ – nécessite que les commandes linux données soient exécutées en tant qu'utilisateur normal non privilégié |
Prérequis
Avant de commencer, on suppose que :
- Vous ou votre organisation avez déjà créé un compte dans Red Hat
- RHEL 8 / CentOS 8 a déjà été téléchargé et installé
- Le système a déjà été enregistré via le
gestionnaire d'abonnement - Vous avez déjà configuré un référentiel local ou distant
Installation du serveur DNS
- Installation de Bind
Nous allons installer le package BIND, le serveur DNS Open Source le plus célèbre, via lednf
outil auquel maintenantyum
est basé.
La commande à exécuter est :# dnf -y install bind*
Qui devrait installer tous ces packages :
Liste des packages de liaison
Configuration commune du serveur DNS
- Configuration du pare-feu
Nous devons activer le service DNS :# firewall-cmd --permanent --zone=public --add-service=dns
et rechargez la configuration :
# firewall-cmd --reload
- Sauvegarde des principaux fichiers de configuration
C'est toujours une bonne habitude de faire une copie de sauvegarde initiale des principaux fichiers de configuration de liaison ; également avant tout changement.# cp /etc/named.conf /etc/named.conf.org # cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.org
- Vérification de la configuration réseau
Un serveur DNS doit avoir une adresse IP statique, vérifions que c'est le cas :$ cat /etc/sysconfig/network-scripts/ifcfg-enp0s3|egrep -i "boot|ipaddr|mask|gateway"
Ce qui, par exemple, donne les résultats ci-dessous :
BOOTPROTO=static ONBOOT=yes IPADDR=10.0.0.63 NETMASK=255.255.255.0 GATEWAY=10.0.0.1
Bien sûr, votre configuration réseau peut être différente, mais encore une fois, l'adresse IP doit être statique.
- Choisir le nom de domaine
Pour définir un nom de domaine complet ou FQDN# hostnamectl set-host name dns-srv.vulcansys-local.com
Vous pouvez bien sûr choisir un autre nom, ici j'ai inventé un nom de domaine qui ne semble avoir été enregistré auprès d'aucune organisation.
- Configuration du résolveur
Nous allons configurer leresolv.conf
dossier. Les premières lignes doivent être :search vulcansys-local.com nameserver 10.0.0.63
C'est à la fois dans le serveur et dans tout client interrogeant notre DNS ; bien sûr, vous devez ajouter un deuxième serveur de noms pour résoudre les sites Internet ou tout autre domaine.
- Désactivation de la configuration automatique DNS de Network Manager
Nous ne voulons pas que Network Manager modifie leresolv.conf
dossier. Pour ce faire, nous ajoutons simplement la
ligne :dns=none
dans le fichier/etc/NetworkManager/NetworkManager.conf
, et on recharge le service :# systemctl reload NetworkManager
- Activation du service de liaison au démarrage
Nous devons nous assurer que le service DNS est démarré avec le système afin :# systemctl enable named
Types de serveurs DNS
Il est possible de configurer un serveur DNS pour qu'il fonctionne dans l'un des modes ci-dessous, un seul à la fois :
- Serveur racine
- Serveur unique
- Serveur secondaire
- Serveur de mise en cache uniquement
- Serveur de transfert
Dans cet article, nous décrirons uniquement comment configurer un serveur de mise en cache uniquement et un serveur unique.
Un serveur DNS de mise en cache uniquement n'héberge aucune zone et ne fait pas autorité pour un domaine particulier; lorsque le serveur est initialement démarré, il n'a pas d'informations en cache et les informations sont obtenues au fil du temps au fur et à mesure que les demandes des clients sont satisfaites.
Un serveur DNS principal ou unique fait autorité pour un domaine, mais nous n'avons pas de haute disponibilité et donc s'il est en panne ou inaccessible, aucune requête DNS pour le domaine ne fonctionnera, à moins qu'elle ne soit mise en cache ou dupliquée dans le fichier statique /etc/hosts
.
Ce que nous avons configuré jusqu'à présent est commun, quel que soit le "mode de configuration" que nous choisirons.
- Mettre en cache uniquement le serveur DNS
Nous nous assurons que les lignes suivantes sont modifiées/configurées dans lenamed.conf
fichier :listen-on port 53 { 127.0.0.1; 10.0.0.63; }; #listen-on-v6 port 53 { ::1; }; allow-query { 127.0.0.1; 10.0.0.0/24; }; recursion yes; allow-recursion { 127.0.0.1; 10.0.0.0/24; };
Pour simplifier ici le serveur n'écoutera pas sur une adresse IPv6 (la ligne relative est donc commentée). Pour vérifier si la configuration est OK, nous pouvons exécuter la commande :
# named-checkconf
si tout va bien, aucune sortie n'est renvoyée. Enfin, nous devons demander au service de recharger sa configuration :
# systemctl reload named
- Serveur DNS unique
Si nous choisissons ce type, ce sera notre serveur DNS faisant autorité en charge de toute résolution de nom dans le domaine que nous avons choisi. Ici aussi nous allons éditer/etc/named.conf
:listen-on port 53 { localhost; 10.0.0.63; }; #listen-on-v6 port 53 { ::1; }; allow-query { 127.0.0.1; 10.0.0.0/24; }; recursion no;
Dans ce guide, pour des raisons de simplicité, nous ne configurons pas le service de liaison pour écouter sur une adresse IPv6.
L'option
recursion no
s'assure que le DNS ne fera pas tout le travail pour fournir une réponse à une requête particulière, mais déléguera aux serveurs racine si nécessaire et à d'autres serveurs faisant autorité la tâche pour ces noms ou IP inconnus. En d'autres termes :un serveur faisant autorité ne doit pas être récursif .Ensuite, nous devons spécifier nos fichiers de zone ; ici nous allons configurer une zone de transfert (pour résoudre une IP à partir d'un nom) et une zone inverse (pour résoudre en un nom donné une adresse IP) chacun dans son fichier spécifique, en ajoutant les lignes suivantes au fichier
named.rfc1912.zones
fichier :zone "vulcansys-local.com" IN { type master; file "forward.zone"; allow-update { none; }; }; zone "63.0.0.10.in-addr.arpa" IN { type master; file "reverse.zone"; allow-update { none; }; };
L'option
allow-update
fait référence aux mises à jour dynamiques DNS, ce qui signifie qu'une application dans un hôte peut ajouter un enregistrement DNS ; pour des raisons de sécurité, ceci est désactivé par défaut et donc seul l'administrateur système peut ajouter des enregistrements et manuellement.Maintenant, nous devons créer les fichiers
forward.zone
etreverse.zone
. Généralement, les fichiers de zone se trouvent dans le
répertoire/var/named
comme nous pouvons en déduire dudirectory
option dans lenamed.conf
fichier de configuration.Notre
forward.zone
le fichier contiendra :$TTL 1D @ IN SOA dns-srv.vulcansys-local.com. root.vulcansys-local.com. ( 2019022400 ; serial 3h ; refresh 15 ; retry 1w ; expire 3h ; minimum ) IN NS dns-srv.vulcansys-local.com. dns-srv IN A 10.0.0.63
Et le
reverse.zone
fichier :$TTL 1D @ IN SOA dns-srv.vulcansys-local.com. root.vulcansys-local.com. ( 2019022400 ; serial 3h ; refresh 15 ; retry 1w ; expire 3h ; minimum ) IN NS dns-srv.vulcansys-local.com. 63 IN PTR dns-srv.vulcansys-local.com
Dans les fichiers de configuration mentionnés
SOA
(Start Of Authority) définit les paramètres globaux de la zone (domaine) ; un seul enregistrement de ressource peut être spécifié (la ligne avec le mot-clé SOA avec notre nom de domaine complet). Le temps de départ ($TTL) est par défaut de 1 jour (ou 86400 secondes) et doit être temporairement raccourci si vous modifiez une entrée dans ce fichier de configuration car il indique au serveur DNS pendant combien de temps mettre en cache les informations récupérées. Le plus important est de se rappeler de terminer tout nom de domaine complet dans ces fichiers de configuration par un point .Ici
root.vulcansys-local.com
est l'adresse e-mail et2019022400
un champ série qui en pratique est là pour suivre tout changement dans le fichier de zone et est classiquement sous la formeYYYYmmddss
, oùss
est un nombre à deux chiffres.Dans le fichier inverse, vous avez peut-être remarqué que tout se ressemble sauf la dernière ligne. Là, nous spécifions avec
PTR
une recherche inversée qui résoudra en10.0.0.63
; il suffit de taper le dernier chiffre63
qui identifie l'hôte (car le masque de réseau est255.255.255.0
).Maintenant, nous nous assurons d'avoir les bonnes autorisations :
# chgrp named /var/named/reverse.zone # chgrp named /var/named/forward.zone
Pour vérifier que les fichiers de zone sont correctement configurés, vous pouvez émettre les commandes :
# named-checkzone vulcansys-local.com /var/named/forward.zone # named-checkzone 10.0.0.63 /var/named/reverse.zone
Et pour vérifier la configuration globale :
# named-checkconf -v
Si tout va bien, nous pouvons recharger le service :
# systemctl reload named
Paramétrage client
- Configuration du pare-feu
Nous devons configurer le pare-feu comme expliqué ci-dessus avec le serveur. Pour plus de simplicité, je suppose que le client est également un RHEL 7 ou 8. - Configuration du résolveur
Le premier serveur de noms doit être notre serveur DNS, ici aussi assurez-vous que le gestionnaire de réseau ne modifie pas le fichier resolv.conf. - Définition du nom d'hôte
Par souci de cohérence, tout client du domaine se verra attribuer un nom d'hôte FQDN.
Enfin, nous vérifions que notre configuration DNS fonctionne, à partir d'un client, en essayant de pinger le serveur DNS par son nom.
Client résolvant une requête via le serveur DNS.Conclusion
La configuration d'un serveur DNS est une tâche que tout administrateur sérieux devrait avoir effectuée au moins une fois et dans RHEL 8, la manière de le faire n'est pas difficile.