Le service de nom de domaine (DNS) est un service Internet qui mappe les adresses IP aux noms de domaine pleinement qualifiés (FQDN) et vice versa.
BIND signifie Berkley Internet Naming Daemon.
BIND est le programme le plus couramment utilisé pour maintenir un serveur de noms sous Linux.
Dans ce tutoriel, nous allons vous expliquer comment installer et configurer un serveur DNS.
Si vous débutez avec le DNS, vous devez d'abord comprendre les principes fondamentaux du DNS et son fonctionnement.
1. Informations sur le réseau
Dans ce didacticiel, nous allons configurer un serveur DNS local pour le réseau illustré dans le schéma ci-dessous.
Nous utiliserons le domaine "thegeekstuff.net" comme exemple pour cette installation DNS. "mail", "web", "ns" sont les hôtes qui résident dans ce domaine.
Il est possible de configurer un système unique pour qu'il agisse comme un serveur de noms de cache, primaire/maître et secondaire/esclave. Nous allons configurer ce DNS en tant que serveur DNS principal/maître ainsi qu'en tant que serveur DNS de mise en cache.
Nous allons installer le serveur DNS sur "10.42.0.83".
2. Installer Bind
Installez le package bind9 à l'aide des utilitaires de gestion de packages appropriés pour vos distributions Linux.
Sur les versions Debian/Ubuntu, procédez comme suit :
$ sudo apt-get install bind9
Sur les versions Redhat/CentOS/Fedora, procédez comme suit :
# yum install bind9
Toutes les configurations DNS sont stockées dans le répertoire /etc/bind. La configuration principale est /etc/bind/named.conf qui inclura les autres fichiers nécessaires. Le fichier nommé /etc/bind/db.root décrit les serveurs de noms racine dans le monde.
3. Configurer le serveur de noms de cache
Le travail d'un serveur de mise en cache DNS consiste à interroger d'autres serveurs DNS et à mettre en cache la réponse. La prochaine fois que la même requête est donnée, il fournira la réponse du cache. Le cache sera mis à jour périodiquement.
Veuillez noter que même si vous pouvez configurer bind pour qu'il fonctionne en tant que serveur principal et en tant que serveur de mise en cache, il n'est pas conseillé de le faire pour des raisons de sécurité. Il est conseillé d'avoir un serveur de mise en cache séparé.
Tout ce que nous avons à faire pour configurer un Cache NameServer est d'ajouter le serveur DNS de votre FAI (fournisseur d'accès Internet) ou tout serveur OpenDNS au fichier /etc/bind/named.conf.options. Par exemple, nous utiliserons les serveurs DNS publics de Google, 8.8.8.8 et 8.8.4.4.
Décommentez et modifiez la ligne suivante comme indiqué ci-dessous dans le fichier /etc/bind/named.conf.options.
forwarders { 8.8.8.8; 8.8.4.4; };
Après la modification ci-dessus, redémarrez le serveur DNS.
$ sudo service bind9 restart
4. Testez le serveur de noms de cache
Vous pouvez utiliser la commande dig pour tester les services DNS. Les exemples de commande DIG expliquent plus en détail comment effectuer des recherches DNS.
$ dig ubuntu.com ;; Query time: 1323 msec
Maintenant, lorsque vous exécutez la fouille pour la deuxième fois, il devrait y avoir une amélioration du temps de requête. Comme vous le voyez ci-dessous, cela n'a pris que 3 msec la deuxième fois, car il obtient les informations de notre serveur DNS de mise en cache.
$ dig ubuntu.com ;; Query time: 3 msec
5. Configurer le serveur de noms principal/maître
Ensuite, nous allons configurer bind9 pour qu'il soit le principal/maître du domaine/zone "thegeekstuff.net".
Comme première étape dans la configuration de notre serveur de noms principal/maître, nous devrions ajouter la résolution directe et inverse à bind9.
Pour ajouter une résolution DNS Forward et Reverse à bind9, modifiez /etc/bind9/named.conf.local.
zone "thegeekstuff.net" { type master; file "/etc/bind/db.thegeekstuff.net"; }; zone "0.42.10.in-addr.arpa" { type master; notify no; file "/etc/bind/db.10"; };
Maintenant, le fichier /etc/bind/db.thegeekstuff.net aura les détails pour résoudre le nom d'hôte en adresse IP pour ce domaine/zone, et le fichier /etc/bind/db.10 aura les détails pour résoudre l'adresse IP en nom d'hôte .
6. Construire la résolution de transfert pour le serveur de noms principal/maître
Nous allons maintenant ajouter les détails nécessaires à la résolution directe dans /etc/bind/db.thegeekstuff.net.
Tout d'abord, copiez /etc/bind/db.local vers /etc/bind/db.thegeekstuff.net
$ sudo cp /etc/bind/db.local /etc/bind/db.thegeekstuff.net
Ensuite, modifiez le /etc/bind/db.thegeekstuff.net et remplacez ce qui suit.
- Dans la ligne qui a SOA :localhost. – Il s'agit du FQDN du serveur en charge de ce domaine. J'ai installé bind9 dans 10.42.0.83, dont le nom d'hôte est "ns". Remplacez donc le "localhost". avec "ns.thegeekstuff.net.". Assurez-vous qu'il se termine par un point (.).
- Dans la ligne qui contient SOA :root.localhost. – Il s'agit de l'adresse e-mail de la personne responsable de ce serveur. Utilisez le point (.) au lieu de @. J'ai remplacé par lak.localhost.
- Dans la ligne qui a NS :localhost. – Il s'agit de définir le serveur de noms pour le domaine (NS). Nous devons le remplacer par le nom de domaine complet du serveur de noms. Changez-le en "ns.thegeekstuff.net". Assurez-vous d'avoir un "." à la fin.
Ensuite, définissez l'enregistrement A et l'enregistrement MX pour le domaine. Un enregistrement est celui qui mappe le nom d'hôte à l'adresse IP, et l'enregistrement MX indiquera au serveur de messagerie à utiliser pour ce domaine.
Une fois les modifications effectuées, le fichier /etc/bind/db.thegeekstuff.net ressemblera à ceci :
$TTL 604800 @ IN SOA ns.thegeekstuff.net. lak.localhost. ( 1024 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.thegeekstuff.net. thegeekstuff.net. IN MX 10 mail.thegeekstuff.net. ns IN A 10.42.0.83 web IN A 10.42.0.80 mail IN A 10.42.0.70
6. Créer la résolution inverse pour le serveur de noms principal/maître
Nous ajouterons les détails nécessaires à la résolution inverse dans le fichier /etc/bind/db.10. Copiez le fichier /etc/bind/db.127 vers /etc/bind/db.10
$ sudo cp /etc/bind/db.127 /etc/bind/db.10
Ensuite, modifiez le fichier /etc/bind/db.10 et modifiez essentiellement les mêmes options que /etc/bind/db.thegeekstuff.net
$TTL 604800 @ IN SOA ns.thegeekstuff.net. root.localhost. ( 20 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.
Ensuite, pour chaque enregistrement A dans /etc/bind/db.thegeekstuff.net, ajoutez un enregistrement PTR.
$TTL 604800 @ IN SOA ns.thegeekstuff.net. root.thegeekstuff.net. ( 20 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns. 83 IN PTR ns.thegeekstuff.net. 70 IN PTR mail.thegeekstuff.net. 80 IN PTR web.thegeekstuff.net.
Chaque fois que vous modifiez le fichier db.thegeekstuff.net et db.10, vous devez également incrémenter le numéro de "série". Généralement, l'administrateur utilise DDMMYYSS pour les numéros de série et lorsqu'il le modifie, il modifie le numéro de série de manière appropriée.
Enfin, redémarrez le service bind9 :
$ sudo service bind9 restart
7. Testez le serveur DNS
Nous avons maintenant configuré le serveur DNS pour notre domaine. Nous allons tester notre serveur DNS en envoyant un ping à mail.thegeekstuff.net depuis web.thegeekstuff.net.
Si le ping réussit, nous avons configuré le DNS avec succès.
Vous pouvez également utiliser nslookup et creuser pour tester les serveurs DNS.
Sur le serveur web.thegeekstuff.net, ajoutez ce qui suit à /etc/resolv.conf
nameserver 10.42.0.83
Maintenant, envoyez un ping à mail.thegeekstuff.net, qui devrait résoudre correctement l'adresse à partir du serveur DNS que nous venons de configurer.
$ ping mail.thegeekstuff.net PING mail.thegeekstuff.net (10.42.0.70) 56(84) bytes of data. 64 bytes from mail.thegeekstuff.net (10.42.0.70): icmp_req=1 ttl=64 time=0.482 ms 64 bytes from mail.thegeekstuff.net (10.42.0.70): icmp_req=2 ttl=64 time=0.532 ms