Installation d'un serveur DNS

Quelques rappels DNS

  • $TTL : (Time To Live) exprime la duree (en secondes) de validité, par défaut, des informations que contiennent les RRs. Une fois ce délai expiré, il est nécessaire de vérifier à nouveau les données. Les différents types :
  • SOA : permet de définir les informations relatives à la zone. En l'occurrence le nom du serveur DNS primaire "sid.example.com." et l'adresse mail du contact technique (root.example.com. ; le @ est remplace par un point). Il est compose de plusieurs champs :
    • 1. Serial : est un entier non signé 32 bits. C'est le numéro de série à incrémenter à chaque modification du fichier. Il permet au serveur secondaire de recharger les informations qu'ils ont. L'usage général vient à le formater de cette manière YYYYMMDDXX, soit pour la première modification du 01/04/2007 -> 2007040101, pour la seconde 2007040102.
    • 2. Refresh : définit la période de rafraîchissement des données.
    • 3. Retry : si une erreur survient au cours du dernier rafraîchissement, celle-ci sera répétée au bout du délai Retry.
    • 4. Expire : le serveur sera considéré comme non disponible au bout du délai Expire.
    • 5. Negative cache TTL : définit la durée de vie d'une réponse NXDOMAIN de notre part.
  • NS : renseigne le nom des serveurs de noms pour le domaine.
  • MX: renseigne sur le serveur de messagerie. Plusieurs peuvent être définis. Ainsi, il est possible de leur donner une priorité en leur affectant un numéro. Plus bas est le numéro, plus haute est la priorité.
  • A : associe une nom d'hôte à une adresse ipv4 (32 bits)
  • AAAA : associe une nom d'hôte à une adresse ipv6 (128 bits)
  • CNAME : identifie le nom canonique d'un alias (un nom pointant sur un autre nom)
  • PTR : c'est simplement la résolution inverse (le contraire du type A).

BIND9 : serveur DNS sous Linux

Pour installer bind9 tapez la commande habituelle apt-get install bind9

Les fichiers de configuration se situent dans /etc/bind/

Le fichier /etc/bind/db.local nous servira d'exemple pour créer notre domaine.

Faites un cp /etc/bind/db.local /etc/bind/db.VOTRE_NOM.com

Avant d'éditer le fichier de configuration, récupérez l'adresse IP de votre machine virtuelle.

Editez ensuite ce fichier pour créer la première machine:

$TTL 604800
@ IN SOA mavm.VOTRE_NOM.com. root.VOTRE_NOM.com. (
    2 ; Serial
    604800 ; Refresh
    86400 ; Retry
    2419200 ; Expire
    604800 ) ; Negative Cache TTL

@ IN NS mavm.VOTRE_NOM.com.
mavm IN A VOTRE_IP

Nous devons maintenant configurer la resolution inverse pour notre domaine. Nous nous appuierons sur le fichier /etc/bind/db.127

Copiez le fichier pour votre domaine cp /etc/bind/db.127 /etc/bind/db.VOTRE_NOM.com.inv

$TTL 604800
@ IN SOA mavm.VOTRE_NOM.COM. root.VOTRE_NOM.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS mavm.

230 IN PTR mavm.VOTRE_NOM.com.

Les fichiers de congiguration de votre DNS sont prêts. Nous allons demander à BIND de les charger

Editez le fichier /etc/bind/named.conf.local et ajoutez

zone "VOTRE_NOM.com" {
type master;
file "/etc/bind/db.VOTRE_NOM.com";
forwarders{};
};

Il faut également charger le fichier de configuration de la zone inverse.

zone "2.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.VOTRE_NOM.com.inv";
forwarders{};
};

Votre serveur est maintenant prêt à devenir le DNS de votre réseau. Par contre il ne contient pas tous les noms de domaines du monde, ce qui veut dire que si vous essayez d'accéder à www.google.fr par exemple, il sera incapable de résoudre le nom.

Nous allons donc indiquer à BIND de forwarder toutes les requêtes qu'il n'arrive pas à résoudre vers un autre serveur DNS par exemple ceux de Google.

Editez le fichier /etc/bind/named.conf.options

forwarders {
212.27.40.240;
212.27.40.241;
};

Vous pouvez enfin redémarrer votre serveur DNS avec /etc/init.d/bind9 restart

Pour vérifier que vos fichier de configuration fonctionnent correctement vous avec plusieurs commandes à votre disposition :

named-checkzone webadonf.lan /etc/bind/db.VOTRE_NOM.com
named-checkzone webadonf.lan /etc/bind/db.VOTRE_NOM.com.inv
named-checkconf /etc/bind/named.conf
named-checkconf /etc/bind/named.conf.options

Vous pouvez maintenant changer le DNS de votre machine Windows pour indiquer l'adresse IP de votre serveur Linux.

Dans cmd.exe vous pouvez maintenant taper :

nslookup + mavm.VOTRE_NOM.com

ou

nslookup + @IP_MA_VM