Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
bind9 [Le 24/11/2017, 16:16] – [Serveur Vicotor] 95.141.116.6 | bind9 [Le 01/10/2020, 10:24] (Version actuelle) – [Serveurs hybrides] 82.64.229.7 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | ====== BIND9 ====== | ||
+ | Le service [[: | ||
+ | |||
+ | Un serveur qui héberge le service DNS est appelé " | ||
+ | Ubuntu est livré par défaut avec BIND (Berkley Internet Naming Daemon), le serveur DNS le plus utilisé sur Internet. | ||
+ | |||
+ | Ce guide est destiné aux personnes désireuses d' | ||
+ | ===== Pré-requis ===== | ||
+ | |||
+ | * Disposer des [[: | ||
+ | * Disposer d'un réseau local. | ||
+ | * Connaître les bases de TCP/IP. | ||
+ | * Éventuellement disposer d'une connexion à Internet configurée et activée, pour faire les tests. | ||
+ | |||
+ | ===== Installation ===== | ||
+ | BIND9 est disponible dans le dépôt principal. Aucun dépôt supplémentaire n'est nécessaire ; | ||
+ | |||
+ | Pour installer le serveur BIND9, il suffit d' | ||
+ | |||
+ | Le paquet **[[apt> | ||
+ | La documentation BIND9 peut également être trouvée dans le paquet **[[apt> | ||
+ | |||
+ | ===== Scénarios de configuration ===== | ||
+ | |||
+ | BIND9 peut être utilisé de différente façons , les plus fréquentes sont : | ||
+ | ==== Serveur cache ==== | ||
+ | |||
+ | Dans cette configuration, | ||
+ | |||
+ | ==== Serveur primaire ==== | ||
+ | |||
+ | Utilisé pour contenir les enregistrements DNS d'un nom de domaine enregistré. Un ensemble d' | ||
+ | pour un nom de domaine est appelé une " | ||
+ | réseau local fermé) | ||
+ | ==== Serveur secondaire ==== | ||
+ | |||
+ | Un serveur secondaire est utilisé en complément à un serveur primaire, en servant de copie à la ou les zones configurées sur le serveur primaire. Les serveurs secondaires sont recommandés sur des gros réseaux. Ceux-ci assurent la disponibilité de la zone DNS, même si le serveur primaire est hors ligne. | ||
+ | |||
+ | ==== Serveurs | ||
+ | |||
+ | Un serveur BIND9 peut être configuré à la fois comme serveur cache et comme serveur primaire, comme serveur cache et serveur secondaire, ou même serveur cache, serveur primaire et secondaire. Il suffit de combiner les différentes configurations présentées dans les exemples. | ||
+ | |||
+ | ==== Serveurs furtifs ==== | ||
+ | |||
+ | Il existe deux autres configurations fréquentes pour un serveur DNS. | ||
+ | Serveur furtif maître et serveur furtif esclave. Ils sont identiques aux serveurs maître et esclave, mais avec une organisation légèrement différente : ils ne sont visibles qu'à l' | ||
+ | |||
+ | Par exemple, vous disposez de 3 serveurs DNS : A, B et C. | ||
+ | |||
+ | A est un serveur maître, B et C sont des esclaves. | ||
+ | |||
+ | Si votre domaine est configuré pour utiliser A et B comme serveurs de noms, alors C est un serveur furtif esclave. Il fait toujours office de serveur esclave, mais il ne sera pas interrogé depuis Internet. | ||
+ | |||
+ | Si votre domaine est configuré pour utiliser B et C comme serveurs de noms, alors A est un serveur furtif maître. Tout édition de la zone ou ajout est fait sur A, mais les ordinateurs depuis internet interrogeront seulement B et C. | ||
+ | |||
+ | Dans les deux cas, le serveur passif n'est pas interrogé depuis internet. Il peut ainsi être réservé pour une utilisation locale. | ||
+ | |||
+ | ==== Serveurs Récursifs / Non récursifs ==== | ||
+ | |||
+ | Les serveurs BIND9 peuvent être récursifs, c’est-à-dire interroger tour à tour les serveurs DNS nécessaires jusqu' | ||
+ | |||
+ | Dans le cas contraire (par défaut), le serveur DNS délègue la résolution du nom de domaine à un autre serveur DNS. | ||
+ | |||
+ | Pour activer la récursivité, | ||
+ | |||
+ | < | ||
+ | allow-recursion { any; }; | ||
+ | </ | ||
+ | |||
+ | ===== Les types d' | ||
+ | |||
+ | Il existe de nombreux type d' | ||
+ | |||
+ | ==== Enregistrement de type A (Address) ==== | ||
+ | |||
+ | C'est le type le plus courant. Cet enregistrement fait correspondre une adresse IP à un nom de machine. | ||
+ | |||
+ | < | ||
+ | www IN A 1.2.3.4 | ||
+ | </ | ||
+ | |||
+ | ==== Enregistrement de type CNAME (Alias) ==== | ||
+ | |||
+ | Utilisé pour créer un alias depuis un enregistrement de type A. Il est possible de créer un enregistrement de type CNAME qui pointe vers un autre enregistrement CNAME, mais ceci double le nombre de requêtes qui seront faîtes au serveur de noms. Cette méthode est donc déconseillée. | ||
+ | |||
+ | < | ||
+ | mail | ||
+ | www IN A 1.2.3.4 | ||
+ | </ | ||
+ | |||
+ | ==== Enregistrement MX (Mail Exchange) ==== | ||
+ | |||
+ | Utilisé pour définir vers quel serveur de la zone un email à destination du domaine doit être envoyé, et avec quelle priorité. Cet enregistrement doit pointer vers un enregistrement de type A, et non un alias CNAME. Il peut y avoir plusieurs enregistrements MX s'il existe plusieurs serveurs de messagerie sur le domaine. Le plus petit nombre a la plus grande priorité. | ||
+ | |||
+ | < | ||
+ | ;** ENREGISTREMENTS " | ||
+ | |||
+ | @ | ||
+ | @ | ||
+ | </ | ||
+ | |||
+ | ==== Enregistrement NS (Name Server) ==== | ||
+ | |||
+ | Utilisé pour définir quels serveurs répondent pour cette zone. Cet enregistrement doit pointer vers un enregistrement de type A, non pas vers un enregistrement de type CNAME. | ||
+ | |||
+ | C'est ici que le serveur maître et les esclaves sont définis. Les serveurs furtifs sont intentionnellement omis. | ||
+ | |||
+ | < | ||
+ | IN NS | ||
+ | [...] | ||
+ | ns IN A 1.2.3.4 | ||
+ | </ | ||
+ | |||
+ | ===== Configuration ===== | ||
+ | |||
+ | Les fichiers de configuration de BIND9 sont stockés sous : | ||
+ | |||
+ | < | ||
+ | /etc/bind/ | ||
+ | </ | ||
+ | |||
+ | La configuration principale de BIND9 est effectuée dans les fichiers suivant : | ||
+ | |||
+ | < | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | ==== Configuration pour un seul ordinateur (PC Domestique) ===== | ||
+ | |||
+ | Dans ce cas, BIND est configuré pour ne répondre qu'aux requêtes du PC sur lequel il est installé. Il se charge lui même de la résolution de noms, sans passer par les serveurs DNS de votre FAI. | ||
+ | |||
+ | <note warning> | ||
+ | Cette configuration implique que vous vous chargiez directement de la résolution des noms de domaine. Vous ne profitez plus du cache DNS de votre fournisseur d' | ||
+ | </ | ||
+ | |||
+ | * Editer le fichier " | ||
+ | |||
+ | * [[: | ||
+ | |||
+ | < | ||
+ | listen-on-v6 { any; }; | ||
+ | </ | ||
+ | |||
+ | Afin qu' | ||
+ | |||
+ | < | ||
+ | listen-on-v6 { ::1; }; | ||
+ | </ | ||
+ | |||
+ | * Puis toujours dans ce même fichier, **commenter** l' | ||
+ | |||
+ | < | ||
+ | #// forwarders { | ||
+ | #// 0.0.0.0; | ||
+ | #// }; | ||
+ | </ | ||
+ | |||
+ | * Pour que toutes les requêtes passent par BIND : | ||
+ | |||
+ | Si votre carte réseau est configurée pour utiliser DHCP, décommenter la ligne 20 du fichier " | ||
+ | |||
+ | < | ||
+ | prepend domain-name-servers 127.0.0.1; | ||
+ | </ | ||
+ | |||
+ | Si, au contraire, elle est configurée avec une adresse IP statique, modifier le fichier " | ||
+ | |||
+ | < | ||
+ | nameserver 127.0.0.1 | ||
+ | </ | ||
+ | |||
+ | Redémarrer bind : | ||
+ | |||
+ | < | ||
+ | sudo service bind9 restart | ||
+ | </ | ||
+ | |||
+ | ==== Configuration pour un serveur cache ==== | ||
+ | |||
+ | Le serveur BIND9 est configuré par défaut en tant que serveur cache. | ||
+ | |||
+ | Il suffit simplement d' | ||
+ | |||
+ | Décommentez et éditez les lignes suivantes dans / | ||
+ | |||
+ | < | ||
+ | [...] | ||
+ | |||
+ | forwarders { | ||
+ | | ||
+ | | ||
+ | }; | ||
+ | |||
+ | [...] | ||
+ | </ | ||
+ | |||
+ | (ou 1.2.3.4 et 5.6.7.8 sont les adresses IP des serveurs DNS de votre prestataire Internet. | ||
+ | |||
+ | Redémarrez le démon BIND9 : | ||
+ | |||
+ | < | ||
+ | sudo service bind9 restart | ||
+ | </ | ||
+ | |||
+ | === Tests === | ||
+ | |||
+ | Si le package dnsutils a été installé, il est possible de tester la nouvelle configuration en utilisant dig : | ||
+ | |||
+ | < | ||
+ | dig -x 127.0.0.1 | ||
+ | </ | ||
+ | |||
+ | Si tout fonctionne bien, vous devriez voir apparaître une sortie similaire à : | ||
+ | |||
+ | < | ||
+ | ; <<>> | ||
+ | ;; global options: | ||
+ | ;; Got answer: | ||
+ | ;; ->> | ||
+ | ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 | ||
+ | |||
+ | [...] | ||
+ | |||
+ | ;; Query time: 1 msec | ||
+ | ;; SERVER: 127.0.0.1# | ||
+ | ;; WHEN: Mon Nov 26 23:22:53 2007 | ||
+ | ;; MSG SIZE rcvd: 93 | ||
+ | |||
+ | </ | ||
+ | |||
+ | La commande dig peut aussi être utilisée pour interroger d' | ||
+ | |||
+ | < | ||
+ | dig ubuntu-fr.org | ||
+ | </ | ||
+ | |||
+ | Si vous " | ||
+ | |||
+ | ==== Configuration Serveur Maître ==== | ||
+ | |||
+ | BIND9 va être configuré comme serveur maître pour le domaine ubuntu-fr.lan. Remplacez simplement ubuntu-fr.lan par votre propre nom de domaine. | ||
+ | |||
+ | === Fichier de zone === | ||
+ | |||
+ | Pour ajouter une zone, et faire de BIND9 un serveur maître : | ||
+ | |||
+ | * Editer le fichier named.conf.local : | ||
+ | |||
+ | < | ||
+ | [...] | ||
+ | |||
+ | zone " | ||
+ | type master; | ||
+ | file "/ | ||
+ | }; | ||
+ | |||
+ | [...] | ||
+ | </ | ||
+ | |||
+ | * Utiliser le fichier d'une zone existante comme modèle : | ||
+ | |||
+ | < | ||
+ | sudo cp / | ||
+ | </ | ||
+ | |||
+ | * Editer le nouveau fichier pour la zone (/ | ||
+ | * Changer localhost par le FQDN de votre serveur, en laissant le point " | ||
+ | * Changer 127.0.0.1 par l' | ||
+ | * Créer un enregistrement de type hôte A pour le serveur de nom ns.ubuntu-fr.lan : | ||
+ | |||
+ | < | ||
+ | ; | ||
+ | ; BIND data file for local loopback interface | ||
+ | ; | ||
+ | $TTL 604800 | ||
+ | @ | ||
+ | 1 ; Serial | ||
+ | | ||
+ | 86400 ; Retry | ||
+ | 2419200 | ||
+ | | ||
+ | ; | ||
+ | @ | ||
+ | NS IN A | ||
+ | box | ||
+ | </ | ||
+ | |||
+ | Le numéro de série doit être incrémenté à chaque changement dans le fichier de zone. En cas de multiples changements, | ||
+ | |||
+ | < | ||
+ | Il est fréquent d' | ||
+ | Exemple : 2010122710 = incrémentation 10 du 27 décembre 2010). | ||
+ | </ | ||
+ | |||
+ | Il est maintenant possible d' | ||
+ | |||
+ | Une fois les changements dans le fichier de zone effectués, il faut redémarrer BIND9 pour qu'ils prennent effet : | ||
+ | |||
+ | < | ||
+ | sudo service bind9 restart | ||
+ | </ | ||
+ | |||
+ | === Zone de recherche inversée === | ||
+ | |||
+ | Maintenant que notre fichier de zone est configuré et que les adresses IP sont résolues, une zone de recherche inversée est requise. Une zone de recherche inversée permet au DNS de convertir une adresse en nom. | ||
+ | |||
+ | * Editer / | ||
+ | |||
+ | < | ||
+ | zone " | ||
+ | type master; | ||
+ | notify no; | ||
+ | file "/ | ||
+ | }; | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Remplacer 1.168.192 par les trois premiers octets (si vous êtes en classe C) de votre réseau dans l' | ||
+ | </ | ||
+ | |||
+ | * Créer maintenant le fichier db.192 depuis un fichier existant : | ||
+ | |||
+ | < | ||
+ | sudo cp / | ||
+ | </ | ||
+ | |||
+ | * Editer le fichier / | ||
+ | |||
+ | < | ||
+ | ; | ||
+ | ; BIND reverse data file for local loopback interface | ||
+ | ; | ||
+ | $TTL 604800 | ||
+ | @ | ||
+ | 2 ; Serial | ||
+ | | ||
+ | 86400 ; Retry | ||
+ | 2419200 | ||
+ | | ||
+ | ; | ||
+ | @ | ||
+ | 10 IN PTR | ||
+ | </ | ||
+ | |||
+ | Le numéro de série de la zone de recherche inversée nécessite d' | ||
+ | |||
+ | Après avoir créé le fichier de la zone de recherche inversée, redémarrez BIND9 : | ||
+ | |||
+ | < | ||
+ | sudo service bind9 restart | ||
+ | </ | ||
+ | |||
+ | === Tests === | ||
+ | |||
+ | Il doit maintenant être possible de faire un ping sur ubuntu-fr.lan et la requête doit être résolue : | ||
+ | |||
+ | < | ||
+ | ping ns.ubuntu-fr.lan | ||
+ | </ | ||
+ | |||
+ | L' | ||
+ | |||
+ | < | ||
+ | named-checkzone ubuntu-fr.lan / | ||
+ | </ | ||
+ | |||
+ | et | ||
+ | |||
+ | < | ||
+ | named-checkzone 1.168.192.in-addr.arpa / | ||
+ | </ | ||
+ | |||
+ | Utiliser cet utilitaire est un bon moyen de s' | ||
+ | |||
+ | Pour tester la recherche inversée, l' | ||
+ | |||
+ | < | ||
+ | dig -x 192.168.1.10 | ||
+ | </ | ||
+ | |||
+ | Vous devriez voir en sortie | ||
+ | |||
+ | ==== Configuration en serveur esclave ==== | ||
+ | |||
+ | Maintenant qu'un serveur maître a été configuré, un serveur esclave peut être configuré pour assurer une disponibilité du domaine en cas de panne du serveur maître. | ||
+ | |||
+ | Dans un premier temps, le serveur maître doit être configuré pour permettre le transfert de zone. Ajoutez l' | ||
+ | |||
+ | < | ||
+ | [...] | ||
+ | |||
+ | zone " | ||
+ | type master; | ||
+ | file "/ | ||
+ | | ||
+ | }; | ||
+ | |||
+ | [...] | ||
+ | |||
+ | zone " | ||
+ | type master; | ||
+ | | ||
+ | file "/ | ||
+ | | ||
+ | }; | ||
+ | |||
+ | [...] | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Remplacez @ip_esclave par l' | ||
+ | </ | ||
+ | |||
+ | Ensuite, sur le serveur esclave, installez le package BIND9, de la même manière que pour le serveur maître. Editez le fichier / | ||
+ | |||
+ | < | ||
+ | [...] | ||
+ | |||
+ | zone " | ||
+ | type slave; | ||
+ | file "/ | ||
+ | | ||
+ | }; | ||
+ | |||
+ | [...] | ||
+ | |||
+ | zone " | ||
+ | type slave; | ||
+ | file "/ | ||
+ | | ||
+ | }; | ||
+ | |||
+ | [...] | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Remplacez @ip_maitre par l' | ||
+ | </ | ||
+ | |||
+ | Redémarrez le serveur, et dans / | ||
+ | |||
+ | < | ||
+ | syslog.5.gz: | ||
+ | syslog.5.gz: | ||
+ | syslog.5.gz: | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Une zone n'est transférée que si son numéro de série sur le serveur maître est supérieur à celui du serveur esclave | ||
+ | </ | ||
+ | |||
+ | === Tests === | ||
+ | |||
+ | Vous pouvez tester le serveur esclave de la même façon que pour le serveur maître. Il est possible d' | ||
+ | |||
+ | ===== Chrooter BIND9 ===== | ||
+ | |||
+ | Configurer BIND9 pour être chrooté est une sécurité recommandée si AppArmor n'est pas installé. Dans un environnement chrooté, BIND9 n'a accès qu'aux fichiers et matériels dont il a besoin, et est incapable d' | ||
+ | |||
+ | ===== Logging ===== | ||
+ | |||
+ | BIND9 dispose d'une large variété de configurations possibles pour le logging. Il existe deux options principales, | ||
+ | |||
+ | Les options par défauts de logging sont : | ||
+ | |||
+ | < | ||
+ | logging { | ||
+ | | ||
+ | | ||
+ | }; | ||
+ | </ | ||
+ | |||
+ | Nous allons configurer BIND9 pour envoyer les messages de débuggage relatifs aux requêtes DNS dans un fichier séparé. | ||
+ | |||
+ | [[: | ||
+ | |||
+ | ==== Option Channel ===== | ||
+ | |||
+ | Dans un premier temps, nous devons configurer un channel pour spécifier dans quel fichier les messages seront enregistrés. Editez le fichier / | ||
+ | |||
+ | < | ||
+ | logging { | ||
+ | channel query.log { | ||
+ | file "/ | ||
+ | // Set the severity to dynamic to see all the debug messages. | ||
+ | severity dynamic; | ||
+ | }; | ||
+ | }; | ||
+ | </ | ||
+ | |||
+ | ==== Option Category ==== | ||
+ | |||
+ | Nous configurons ensuite une catégorie pour envoyer toutes les requêtes DNS dans le fichier de requêtes | ||
+ | |||
+ | < | ||
+ | logging { | ||
+ | channel query.log { | ||
+ | file "/ | ||
+ | // Set the severity to dynamic to see all the debug messages. | ||
+ | severity debug 3; | ||
+ | }; | ||
+ | category queries { query.log; }; | ||
+ | }; | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | L' | ||
+ | </ | ||
+ | |||
+ | Depuis que le daemon tourne en tant qu' | ||
+ | |||
+ | < | ||
+ | sudo mkdir / | ||
+ | sudo touch / | ||
+ | sudo chown -R bind / | ||
+ | </ | ||
+ | |||
+ | Redémarrez BIND9 pour que les changements prennent effet : | ||
+ | |||
+ | < | ||
+ | sudo service bind9 restart | ||
+ | </ | ||
+ | |||
+ | Vous devriez voir le fichier / | ||
+ | |||
+ | ===== Enregistrement dynamique des clients ===== | ||
+ | |||
+ | Voir la page [[: | ||
+ | |||
+ | ===== Autres possibilités ===== | ||
+ | |||
+ | Il est possible de monitorer l' | ||
+ | [[http:// | ||
+ | |||
+ | ===== Désinstallation ===== | ||
+ | |||
+ | Pour supprimer cette application, | ||
+ | |||
+ | ===== Voir aussi ===== | ||
+ | |||
+ | * **(fr)** [[http:// | ||
+ | * **(fr)** [[http:// | ||
+ | * **(fr)** [[http:// | ||
+ | * **(fr)** [[http:// | ||
+ | * **(fr)** [[http:// | ||
+ | * **(fr)** [[http:// | ||
+ | |||
+ | ---- | ||
+ | // | ||
+ | |||
+ | //Basé sur [[https:// |