Comment configurer le serveur DNS sur Debian

Comment configurer le serveur DNS sur Debian

Qu'est-ce que DNS?

DNS ou système de noms de domaine est le système qui traduit le nom d'un domaine dans son adresse IP correspondante. Par exemple, lorsque vous tapez www.exemple.com Dans votre navigateur, il correspond à l'adresse IP d'un serveur Web particulier sur Internet. Cela permet aux gens de se souvenir facilement des serveurs, des applications ou de tout autre appareil connecté à Internet sans avoir à mémoriser leurs adresses IP.

DNS est un système de base de données distribué hiérarchique. Il a une structure en forme d'arbre avec des nœuds disposés en couches appelées domaines. Chaque domaine pointe vers le nœud d'un certain niveau inférieur à lui. Dans DNS, ces domaines sont définis comme des sous-domaines, et chacun réside sur son propre serveur DNS, soit maître DNS ou DNS primaire, qui contient les enregistrements pour toutes les adresses IP et les noms d'hôte dans sa zone de domaine.

Il peut y avoir plusieurs serveurs DNS secondaires qui contiennent une copie à jour des informations contenues dans leurs serveurs Master DNS correspondants. En plus de résoudre les requêtes à l'aide de ces données en miroir, les serveurs DNS secondaires fournissent également une tolérance aux défauts au cas où le maître principal descend en répondant eux-mêmes des requêtes en attendant les réponses du maître principal.

Les requêtes sont traitées par les serveurs DNS récursifs en fonction des informations de son cache combinées avec les détails du serveur de noms récursifs spécifiés dans / etc / résolv.fichier de confr. Le système de noms de domaine est un élément essentiel de l'architecture Internet, et il est essentiel pour réseauter les ordinateurs dans ce que nous appelons aujourd'hui «Internet».

Les paramètres de configuration DNS peuvent être modifiés à l'aide du «creuser»Outil ou modification des fichiers de zone directement. Les fichiers de zone de montage ne sont pas recommandés car une erreur pourrait entraîner une inaccessible au site Web, bien que ce soit un événement rare. Si vous n'êtes pas sûr de ce que vous faites, utilisez plutôt creuser chaque fois que possible. Certains packages de domaine Bind ou Berkeley Internet sont livrés avec «dnsutils" et "héberger», Qui sont utilisés pour interroger les serveurs DNS et imprimer les résultats. Il existe également un utilitaire NSlookup disponible dans la plupart des systèmes UNIX qui peuvent être utilisés à des fins similaires. Cependant, «creuser» est généralement plus fiable que ces deux outils.

Comment fonctionne DNS?

DNS fonctionne comme un système hiérarchique, en commençant à la racine du domaine. Par exemple, si vous tapez www.exemple.com Dans votre navigateur, il demande à votre serveur DNS local pour ces informations. Quand il ne l'a pas car il n'est pas autoritaire à ce domaine, il transmet la requête à l'un de ses serveurs DNS récursifs en amont. Ces serveurs vérifieront d'abord leur cache avant de contacter tous les serveurs de noms faisant autorité directement responsables du domaine «Exemple» jusqu'à ce qu'ils découvrent quel DNS a ces données et la renvoie à l'ordinateur client avec une adresse IP pour ce domaine.

Comme vous pouvez le voir, chaque domaine ou sous-domaine a son propre serveur de noms faisant autorité, et il est responsable de la résolution des requêtes uniquement pour ce sous-domaine. Par conséquent, un serveur DNS devrait avoir toutes les informations pour répondre à toute question sur un domaine particulier. Donc si "exemple.com"N'est pas le domaine principal de vos serveurs DNS locaux, alors il ne pourra pas résoudre les requêtes pour www.exemple.com sans le transmettre en amont en premier.

Note: Dans la mesure du possible, configurez différents serveurs de noms pour chaque sous-domaine, car chacun nécessite des procédures de maintenance et d'administration distinctes. En fait, c'est ainsi que DNS a été conçu au début lorsque les protocoles TCP / IP ont été publiés en 1983 avant l'invention du système de noms de domaine. Cela a été fabriqué plus tard après la création de services d'enregistrement internes en 1992. Des sous-domaines ont été introduits comme extension du protocole DNS, et il était destiné à des fins administratives uniquement.

Chaque fois qu'un serveur DNS reçoit une requête d'un client, il vérifie d'abord le cache pour voir si tous les enregistrements nécessaires y sont présents. S'il n'y a aucun enregistrement ou qu'ils ne sont pas assez frais, alors il fait les requêtes récursives suivantes:

S'il s'agit d'une requête Internet (in), il résout les noms d'hôtes en commençant par la racine du domaine et en travaillant vers le bas à travers chaque domaine parent jusqu'à atteindre les serveurs faisant autorité pour cette zone. C'est appelé "en commençant par le haut«, Et cela est généralement fait en premier depuis les serveurs de noms responsables des TLD (.com, .net, etc.) ont des vitesses de connexion plus rapides avec une bande passante plus grande que celles des domaines de deuxième niveau, E.g., "exemple". Ce faisant, votre serveur DNS local prend en compte s'il peut faire confiance à la réponse de ses serveurs DNS en amont. Si vous n'avez pas accès à / etc / hôtes ou / etc / résolv.Les serveurs de fichiers confr et DNS utilisés par votre FAI mettent en cache leurs réponses, alors les chances sont que la plupart de votre trafic réseau est enregistré. Ainsi, cela pourrait représenter une menace de sécurité, et sinon, il demandera directement aux serveurs récursifs pour ces données. C'est appelé "en commençant par le bas«Étant donné que les serveurs de noms responsables des domaines de second niveau ont des vitesses de connexion plus lentes avec une bande passante plus petite que celles des domaines de haut niveau.

Tout ce processus est répété de manière itérative jusqu'à soit:

  1. Un serveur de nom non autoritaire répond à une requête, disant qu'elle ne connaît pas les informations demandées.
  2. Un serveur de noms trouve ce qu'il pense être une réponse faisant autorité pour la requête et la renvoie à l'ordinateur client.
  3. Le nombre d'itérations préconfigurées dans le cache du nom du résolveur expire.

Ce tutoriel vous guidera sur la façon de configurer votre propre serveur DNS interne sur Debian. Nous utilisons le logiciel Bind Name Server (Bind9) pour le faire.

Qu'est-ce que Bind9?

Bind (Berkeley Internet Name Domain) est une implémentation du Protocole DNS. Dans Lier 9, Plusieurs améliorations majeures ont été apportées, notamment la prise en charge de l'IPv6, une configuration et un contrôle beaucoup plus flexibles, des performances de mise en cache améliorées, Support EDNS0 Pour les réponses UDP plus grandes et une meilleure gestion sur les adresses IP attribuées dynamiquement.

LIER est le logiciel de serveur de noms le plus utilisé sur Internet. Il prend en charge un certain nombre de protocoles de services de noms de domaine différents, notamment Bind4 (le domaine d'origine Berkeley Internet, version 4), Bind8 (le successeur historique de Bind4) et DNS Services pour IPv6 à travers deux implémentations distinctes: une basée sur le démon, et une autre appelée LWRES (Résolver léger).

Lier 9.5 est la version stable actuelle de Bind, et elle est disponible en téléchargement sous forme source et binaire à partir du Consortium de logiciels Internet.

Conditions préalables

Avant de commencer avec le processus d'installation du serveur DNS sur Debian, vous devez vous demander: "Ai-je vraiment besoin d'un serveur DNS?"

Cet article se concentre uniquement sur IPv4, donc si vous êtes intéressé à utiliser DNS pour IPv6, Plus de travail doit être fait. Ce guide ne vous aidera plus dans des sujets, comme l'ajout de disques AAAA manuellement, etc.

Une nouvelle installation de Debian Server est nécessaire pour tester les étapes de ce guide. Certaines des commandes utilisées ici peuvent être différentes pour votre cas, et ces différences seront signalées le cas échéant.

Ce guide suppose que vous avez un travail Réseau IPv4 et connaissance pour configurer correctement les adresses IP statiques sur les ordinateurs clients.

UN utilisateur sudo et un pare-feu doit déjà être configuré sur votre système.

Commencer

Mise à jour de votre système

Le processus d'installation est assez simple, mais voyons-le en détail. Tout d'abord, vous devez vous assurer que votre système a tous les packages nécessaires installés et à jour, en utilisant la commande suivante:

Sudo apt-get update && sudo apt-get upgrade -y

Le drapeau -y répondra automatiquement oui à toutes les confirmations qui pourraient être demandées.

La commande APT-Get Update mettra à jour les listes de packages du serveur. En utilisant la commande APT-get de mise à niveau, tous les packages installés sont mis à niveau.

Cela prendra un certain temps en fonction de la vitesse de connexion réseau et de la quantité de mises à jour à installer.

Exemple de sortie:

Installation de Bind9

Maintenant que votre système est à jour, vous pouvez procéder à l'installation d'un DNS Server - Bind. Cela se fera en installant plusieurs nouveaux packages:

sudo apt install bind9 bind9utils bind9-doc

La commande ci-dessus va installer Bind9 et les deux packages auxiliaires qui contiennent les fichiers requis pour le bon fonctionnement du serveur DNS.

Le Bind9 est le logiciel DNS Server.

Les Bind9utils sont des services publics pour gérer Lier la configuration et sont nommés la commande utilisée pour contrôler LIER de la ligne de commande.

Note: bind9-doc est un package de documentation pour Lier un logiciel.

Exemple de sortie:

Installation du serveur DNS

Une fois l'installation terminée, vous pouvez vérifier pour vous assurer que tous les packages ont été installés avec succès en exécutant la commande suivante:

Nommé -v

La commande ci-dessus affichera la version installée de Bind et ses dépendances.

Exemple de sortie:

Bind démarre automatiquement lorsque vous l'installez. Vous vérifiez son statut avec la commande SystemCTL, comme suit:

Sudo Systemctl Status Bind9

La commande ci-dessus vous donnera une vue plus détaillée des fonctions de liaison sur votre serveur, telles que le temps actif, le nombre de zones, etc.

Vous obtiendrez quelque chose de similaire à la sortie suivante:

Exemple de sortie:


Si vous souhaitez commencer, arrêter ou redémarrer Bind, exécutez simplement les commandes ci-dessous:

service sudo bind9 start
service sudo bind9 stop
service sudo bind9 redémarrer

Le serveur Bind s'exécutera en tant qu'utilisateur et groupe Bind par défaut. Cela le rend raisonnablement sécurisé car les modifications des fichiers de zone ne sont autorisées que pour cet utilisateur. Le serveur Bind écoute par défaut sur le port 53 pour les requêtes DNS. Vous pouvez modifier ce port dans le nommé.fichier de confr si tu veux. Exécutez la commande suivante pour voir sur quel port votre serveur Bind est sur:

sudo netstat -lnptu | grep nommé

Exemple de sortie:

La commande ci-dessus montre que le démon nommé est actuellement démarré et écoute sur le port 53 UDP. Utilisez ces informations pour vérifier si vous utilisez le numéro de port correct.

Si votre serveur n'utilise pas le port 53, vous pouvez résoudre ce problème en modifiant / etc / lier / nommé.confli.local et changer le numéro de port en ce que vous voulez. Vous pouvez également modifier le nom du fichier journal du serveur en modifiant / etc / lier / nommé.confli.zones par défaut et l'ajout de déclarations de journalisation dans la directive d'options.

Configuration de Bind9

Maintenant que tu as Bind9 installé Sur votre serveur, il est temps de commencer à le configurer.

Le répertoire de configuration pour LIER est situé sous / etc / lier. Il y a des fichiers importants dans ce répertoire:

Le fichier nommé 'nommé.confli'est le fichier de configuration principal, qui a beaucoup de commentaires pour clarifier chaque section.

Le prochain fichier de configuration que nous modifierons se trouve / etc / lier / nommé.confli.local. Ce fichier contient toutes les informations réseau concernant le serveur et les zones que vous souhaitez résoudre localement (à partir de serveurs de noms).

Le nommé.confli.zones par défaut est situé à / etc / lier / nommé.confli.zones par défaut. Ce fichier contient des informations de serveur pour les zones utilisées par Bind lorsqu'il n'est pas explicitement dit d'utiliser une zone différente. En d'autres termes, les zones activées.

Alors, allons-y et commençons par une configuration de base.

Exemple de sortie:

Par défaut, Bind est configuré pour servir le localhost uniquement. Cela signifie que toute demande qui vient de l'extérieur de votre serveur sera rejetée par se lier à moins que vous ne l'ayez correctement configurée.

Si vous essayiez d'accéder à un site Web hébergé, par exemple, le «154.54.55.Adresse IP 56 ”, ce qui se passerait? La réponse est simple: toutes les demandes ne seraient sans réponse car aucune configuration n'a été spécifiée pour le «154.54.55.Adresse IP de 56 ”dans Bind9, et le démon« nommé »a refusé de répondre à toutes les demandes DNS de l'extérieur de son interface réseau.

Tout d'abord, nous définirons le serveur DNS pour écouter toutes les adresses IP pour envoyer des demandes au serveur DNS à partir de divers endroits: à partir du serveur, à partir d'un autre réseau ou lorsque vous utilisez Internet.

Laissez-le en modifiant le nommé.confli.Fichier de configuration des options:

CD / etc / lier
sudo nano nommé.confli.options
Remplacement d'écoute 127.0.0.1;;
par
écouter any;;
écouter sur v6 any;

Enregistrer et fermer le fichier lorsque vous avez terminé. Redémarrez ensuite le démon Bind9 avec la commande ci-dessous:

service sudo bind9 redémarrer

Maintenant, nous avons permis à Bind9 d'écouter sur toutes les interfaces.

Exemple de sortie:

Création des zones de recherche vers l'avant (domaine -> IP)

Les zones de recherche vers l'avant sont le type de fichiers de zone le plus courant. Ils mappent un nom de domaine à une adresse IP et sont utilisés pour résoudre les noms de domaine aux adresses IP pour les e-mails, les pages Web, etc. L'étape suivante consiste à créer un fichier de zone de recherche vers l'avant.

Nous allons modifier le «/ etc / lier / nommé.confli.local»Fichier pour déclarer une zone avant. Dans le seul but de ce tutoriel, nous déclarerons un domaine appelé «linuxhint.com»Et indiquez-le vers l'adresse IP publique du serveur qui est utilisée explicitement pour héberger des sites Web externes sur le Linuxhint.domaine com.

Note: Une adresse IP accessible à Internet valide doit être définie sur votre serveur si vous prévoyez de résoudre les domaines externes à partir de votre réseau.

Maintenant, nous allons modifier le «/ etc / lier / nommé.confli.local”Fichier pour déclarer une zone de recherche vers l'avant:

sudo nano nommé.confli.local

Ajoutez ce qui suit à la fin du fichier:

Zone "Linuxhint.com "
type maître;
fichier "/ etc / bind / db.linuxhint.com ";
// Autoriser le transfert xxx.xxx.xxx.xxx;; // Serveur DNS secondaire de l'Hoster
;

Dans ce contexte:

Taper "maître". Ceci est un fichier de zone de domaine maître. Le paramètre de type peut être défini sur «esclave"Si vous hébergez une zone avant ou inverse autoritaire uniquement et ne souhaitez pas autoriser les mises à jour dynamiques.

Le "/ etc / lier / db.domaine.com"Est un fichier qui contient les enregistrements pour le domaine"linuxhint.com"Avec un chemin complet.

Autoriser le transfert xxx.xxx.xxx.xxx;. Il est nécessaire de permettre le transfert de zone vers le serveur DNS secondaire de l'Hoster, car si votre fournisseur d'hébergement ne vous permet pas de le faire, vous ne pouvez pas le mettre à jour en ligne avec la commande "Recharger RNDC"Sur localhost. xxx.xxx.xxx.xxx; Adresse IP du serveur DNS secondaire (serveurs de noms) qui est hébergé par votre fournisseur d'hébergement.

Enregistrer et fermer le fichier lorsque vous avez terminé.

Exemple de sortie:


Maintenant, nous allons créer un fichier pour chaque zone déclarée ci-dessus:

sudo nano db.linuxhint.com

Remplir le fichier avec les suivants:

;
; Bind Data Fichier pour l'interface de bouclage local
;
$ TTL 604800
@ Dans SOA NS1.linuxhint.local. racine.linuxhint.local. (
2; En série
604800; Rafraîchir
86400; Recommencez
2419200; Expirer
604800); Cache négatif ttl
;
; Commentaire en dessous de trois lignes
; @ Dans ns localhost.
; @ Dans un 127.0.0.1
; @ Dans aaaa :: 1
; Informations sur le serveur de noms
@ Dans NS NS1.linuxhint.local.
; Adresse IP du serveur de noms
NS1 dans un 192.168.0.dix
; Échangeur de courrier
linuxhint.local. Dans MX 10 Mail.linuxhint.local.
; A - Enregistrer le nom d'hôte à l'adresse IP
www dans un 192.168.0.100
Mail dans un 192.168.0.150
; CNAME Record
FTP dans CNAME www.linuxhint.local.

Dans ce fichier, remplacez les valeurs Linuxhint par votre nom de domaine, suivi d'un point (.) Ceci est nécessaire, et ce n'est pas une erreur.

Remplacer «192.168.0 ”avec votre adresse IP publique, suivie d'un point (.) Ceci est nécessaire pour rendre le serveur accessible depuis Internet.

N'oubliez pas d'enregistrer et de fermer le fichier lorsque vous avez terminé.

Création de zones de recherche inverse (IP -> Domaine)

Les zones de recherche inverse sont utilisées pour cartographier une adresse IP dans un nom de domaine et sont généralement nécessaires pour envoyer un e-mail. L'étape suivante consiste à créer un fichier de zone inverse.

Le nom de la zone inverse se compose de l'ID du réseau (inversé) suivi de «.indem.arpa".

Par exemple:

Si le serveur a une adresse IP "20.30.40.50", Son identifiant de réseau sera"20.30.40", Et le nom de la zone inverse sera"40.30.20.indem.arpa".

Si le serveur a une adresse IP "191.169.dix.50", Son identifiant de réseau sera"191.169.dix", Et le nom de la zone inverse sera"dix.169.191.indem.arpa".

Maintenant, nous allons modifier le «/ etc / lier / nommé.confli.local”Fichier pour déclarer une zone inversée:

sudo nano / etc / bind / nommé.confli.local

Ensuite, ajoutez ce qui suit au fichier:

Zone "40.30.20.indem.arpa "
type maître;
notifier non;
fichier "/ etc / bind / db.dix";
;

Ensuite, nous créerons un fichier pour la zone déclarée ci-dessus:

sudo nano db.dix

Ensuite, remplissez le fichier avec les suivants:

;
; Bind Reverse Data File pour l'interface de bouclage local
;
$ TTL 604800
@ Dans SOA Linuxhint.local. racine.linuxhint.local. (
2; En série
604800; Rafraîchir
86400; Recommencez
2419200; Expirer
604800); Cache négatif ttl
;
; @ Dans ns localhost.
;1.0.0 dans PTR localhost.
; Informations sur le serveur de noms
@ Dans NS NS1.linuxhint.local.
; Recherche inversée pour le serveur de noms
10 dans PTR NS1.linuxhint.local.
; PTR Enregistrer l'adresse IP au nom d'hôte
100 en PTR www.linuxhint.local.
150 dans PTR Mail.linuxhint.local.
# Fin de fichier

Vérification de la syntaxe de configuration de liaison

Maintenant, nous vérifierons la syntaxe de configuration dans chaque fichier pour les erreurs. Pour ce faire, nous aurons une requête nommée avec la commande suivante:

sudo nommé Checkconf

S'il n'y a pas d'erreurs, cette commande reviendra au shell vierge:

Exemple de sortie:

Conclusion

DNS est l'un des services les plus importants d'un serveur. Tout le monde l'utilise. Tout le monde en a besoin et, en fin de compte, vous ne voulez pas que vos machines se perdent dans le réseau parce qu'ils ne peuvent pas se trouver. Cet article fournit un guide sur la configuration de votre serveur DNS interne sur Debian à l'aide du logiciel Bind Name Server (BIND9). Pour plus d'informations, veuillez consulter les autres articles trouvés sur Linuxhint.com.