Objectif
L’objectif de ce rapport est d’étudier le fonctionnement et la mise en place d’un DNS dynamique (relation entre un serveur DHCP et DNS).
Quelques rappels
DNS: Domain Name System
DNS (Domain Name System) est un système informatique permettant d’établir une correspondance entre une adresse IP (exemple 66.249.93.99) et un nom de domaine (exemple: www.google.com). Il est en effet plus simple pour un humain de retenir un nom plutôt que cette suite de numéro. le DNS a été inventé en 1983 par Paul Mockapetris.
Il existe 13 serveurs DNS root, dis serveurs racine en français. Ils contrôlent les noms de domaine racines de type .fr,.com,etc. Pour plus d’informations sur l’architecture des serveurs DNS veuillez consulter les liens fournis en bibliographie.
DHCP: Dynamic Host Configuration Protocol
DHCP (Dynamic Host Configuration Protocol) est un système permettant d’adresser automatiquement une adresse IP dans le réseau sur lequel est branché un client (et qui ne possède pas l’information de l’adressage du réseau). Cette technique est largement utilisée dans les réseaux informatiques actuels, notamment pour les clients dit nomades, le plus souvent les postes portables. Ceci allège considérablement les configurations réseaux, puisqu’il suffit au client nomade de se connecter au réseau, et c’est le poste qui va négocier avec le serveur DHCP du réseau, l’adresse IP qu’il va acquérir et la durée pendant laquelle il aura cette adresse IP (appelé bail).
Principe et avantages du DNS dynamique
Avec l’avènement du DHCP dans les réseaux d’entreprise, il est devenu indispensable de continuer à effectuer cette correspondance entre noms de machines et adresses IP correspondantes. C’est pour cela qu’à été conçu une « passerelle » entre le serveur DHCP qui distribue les adresses et le serveur DNS pour qu’il puisse continuer à lui adresser le bon nom de machine.
Ce système est même devenu indispensable dans un réseau « Active Directory » car les machines sont autentifiées au domaine par leur nom de machine (mise en place des politiques de sécurité,de déploiement d’applications,…)
Configuration des serveurs DNS et DHCP
La configuration va de paire entre le serveur DNS (bind9) et DHCP (dhcp3).
Pré-requis
Version des Serveurs
Pour mettre en place une mise à jour dynamique du serveur DNS par le serveur DHCP, il faut installer les versions suivantes des deux serveurs:
- DHCP 3.0
- BIND 9.2
L’installation de ces deux logiciels est très bien expliquée sur internet, c’est pour cela que je ne détaillerais pas les phases d’installation dans cette documentation.
Avertissement
Les versions précédentes ne prennent pas en charge la mise à jour dynamique des enregistrements DNS!
Spécifications du Réseau
Voici les spécifications du réseau qui seront utilisées dans cette documentation:
- Adresse du Réseau : 192.168.0.0/24
- Nom DNS du réseau : mondomaine.com
- Serveur DNS/DHCP : serveur.mondomaine.com
- Adresse du Serveur : 192.168.0.1
- Adresse de la Passerelle : 192.168.0.254
- Plage d’addresses DHCP : 192.168.0.100 -> 192.168.0.200
Mise en place d’une clef rndc
Qu’est-ce que RNDC ?
RNDC est un utilitaire de configuration de named. On utilise principalement la clef (rndc.key) pour permettre une communication et agir sur la configuration de Named. C’est cette même clef qui sera utilisée par le serveur DHCP pour mettre à jour les enregistrements DNS dans Bind9.
Configuration de rndc
Afin de pouvoir utiliser rndc pour autentifier le serveur DHCP avec le serveur DNS, il faut d’abord générer une clef rndc. Il faut alors utiliser la commande rndc-confgen qui retournera les valeurs à inclure dans les fichiers de configuration suivants:
- /etc/rndc.conf
- /etc/bind/named.conf
sudo /usr/sbin/rndc-confgen
# Start of rndc.conf key "rndc-key" { algorithm hmac-md5; secret "Lnm2QHGE8u2RocW1szCe2Q=="; }; options { default-key "rndc-key"; default-server 127.0.0.1; default-port 953; }; # End of rndc.conf # Use with the following in named.conf, adjusting the allow # list as needed: # key "rndc-key" { # algorithm hmac-md5; # secret "Lnm2QHGE8u2RocW1szCe2Q=="; # }; # # controls { # inet 127.0.0.1 port 953 # allow { 127.0.0.1; } keys { "rndc-key"; }; # }; # End of named.conf
Mais plutôt que d’inclure en dur la directive key, on fera un lien vers le fichier /etc/bind/rndc.key dans les fichiers de configuration du serveur Bind (cf. Section 4.4, « Paramétrage du serveur DNS »).
Avertissement
Ne pas oublier de mettre à jour le fichier /etc/bind/rndc.key avec les données suivantes (en fonction de ce que retourne la commande /usr/sbin/rndc-confgen).
key "rndc-key" { algorithm hmac-md5; secret "Lnm2QHGE8u2RocW1szCe2Q=="; };
La clef rndc est à présent correctement configurée.
Paramétrage du serveur DHCP
Paramètres standards
Voici un exemple de configuration par défaut du serveur DHCP
## Configuration globale pour tous les réseaux. # Nom de domaine, Serveur DNS, Netmask, Release Time (1jour) Release Time Max (2jours) option domain-name "mondomaine.com"; option domain-name-servers 192.168.0.1; option subnet-mask 255.255.255.0; default-lease-time 86400; max-lease-time 172800; allow unknown-clients; authoritative; log-facility local7; ## Configuration pour le Réseau 192.168.0.0/24 # Définition de la plage d'adresses, et autres parametres du réseau subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.100 192.168.0.200; option broadcast-address 192.168.0.255; option routers 192.168.0.254; server-name "serveur"; }
Dans cette configuration par défaut, on définit d’abord les options globales, identiques à tous les sous-réseaux qui seront gérés par ce serveur DHCP, tel que le nom de domaine, l’adresse du serveur DNS, le masque de sous-réseau, le temps de bail (configuré à 24 heures), le temps maximum d’attribution de la même adresse IP (2 jours), ainsi que la configuration des remontées de logs du serveur.
Ensuite, on spécifie des paramètres pour le réseau 192.168.0.0/24, tel que la plage d’adresses IP, l’adresse de broadcast, l’adresse de la passerelle et le nom du serveur.
Paramètres spécifiques à la mise à jour dynamique
Il faut cependant ajouter certains paramètres au fichier de configuration afin de permettre la mise à jour automatique des enregistrements DNS par le serveur DHCP, à commencer par la clef rndc. Il faut également déclarer les zones qui seront mises à jour.
## Configuration du DNS dynamique # Inclusion de la clef rndc include "/etc/bind/rndc.key"; # Déclaration des Zones à mettre à jour zone mondomaine.com. { primary 127.0.0.1; key rndc-key; } zone 0.168.192.in-addr.arpa. { primary 127.0.0.1; key rndc-key; } ddns-update-style interim; ignore client-updates;
On déclare donc par les options zone les zones DNS qui seront mises à jour par DHCP en spécifiant le serveur DNS par le mot clef primary. Dans notre cas, comme le serveur DNS et DHCP est le même, l’adresse sera 127.0.0.1
La méthode choisie pour la mise à jour des enregistrements DNS par DHCP est interim. Même si elle ne respecte pas encore totalement les standards, c’est celle préconisée par les documentations officielles de DHCP3. (La seconde solution étant le ad-hoc, mais dépréciée à l’heure actuelle). Ces solutions seront expliquées plus en détail dans la seconde partie.
Afin d’être sûr de déclarer la même clef dans la configuration du serveur DNS et dans celle-ci, on inclue le fichier /etc/bind/rndc.key dans notre configuration, plutôt que de le recopier en dur.
Paramétrage du serveur DNS
Il faut également configurer le serveur DNS pour qu’il accepte les mises à jour provenant du serveur DHCP.
Paramétrage standard
La configuration standard est la suivante pour la configuration de notre réseau et la zone « mondomaine.com »
Il faut donc définir la zone de résolution directe appelée mondomaine.com, ainsi que la zone de résolution inverse appelée 0.168.192.in-addr.arpa. Afin de faire fonctionner correctement le serveur DNS, il faut également déclarer les zones . (zone root), localhost, et sa zone de résolution inverse 127.in-addr.arpa. Voici ce que cela va donner:
zone "." { type hint; file "/etc/bind/db.root"; }; zone "localhost" { type master; file "/etc/bind/db.local"; allow-transfer { localhost; }; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; allow-transfer { localhost; }; }; zone "0.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192.168.0"; allow-transfer { localhost; }; }; zone "mondomaine.com" { type master; file "/etc/bind/db.mondomaine.com"; allow-update { localhost; }; allow-transfer { localhost; }; };
Le serveur est donc master de la zone mondomaine.com.
Paramétrage spécifique pour la mise à jour dynamique
Afin de permettre au serveur DHCP de pouvoir mettre à jour les enregistrements dans les zones mondomaine.com et 0.168.192, il faut faire quelques modifications à cette configuration de base:
include "/etc/bind/rndc.key"; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };
De la même façon que pour la configuration DHCP, on déclare notre clef rndc en utilisant le mot clef include. Ce qui évitera en cas de mise à jour de cette clef (dans le fichier /etc/bind/rndc.key) de ne pas avoir à modifier les deux configurations.
Par le mot clef controls, on définit qui aura le droit de modifier les enregistrements. Dans cette configuration, seule l’adresse 127.0.0.1 (donc notre serveur DHCP/DNS) aura le droit de modification avec la clef rndc-key. 953 correspond au port de communication de rndc.
Il ne reste plus qu’à relancer ces deux serveurs, et faire le test avec un client DHCP.