DNS

Théorie: DNS

Pourquoi installer un serveur DNS local


Démarrer un Serveur DNS

  1. Installer bind

     sudo apt install bind bind-utils
    

    Copier l’adresse IP du serveur

     ip a
    
  2. Éditer le fichier de configuration de bind: /etc/named.conf

     sudo vim /etc/named.conf
    
  3. Démarrer bind

     systemctl start named.service
    

    L’activer au démarrage

     systemctl enable named.service
    
  4. Si on veut vérifier si bind fait son travail, on peut utiliser dig

     $ dig @127.0.0.1 google.com
     ;; Query time: 82 msec
     ns2.google.com. 172454 IN A 216.239.34.10
    
     $ dig @127.0.0.1 google.com
     ;; Query time: 0 msec
    

    Ici il a fallu à bind 82ms pour répondre la première fois, parce qu’il a dû obtenir la réponse d’autres serveurs DNS en amont. Dans sa configuration par défaut, le cache est activé (et la plupart des serveurs DNS font de même), ce qui rend les réponses ultérieures beaucoup plus rapides.

    On peut voir dans la réponse le TTL (Time To Live), qui est durée pendant la laquelle la réponse sera mise en cache, en secondes. À l’expiration de ce délai, le cache est supprimé et bind devra à nouveua obtenir ces données auprès d’autres serveurs DNS.

listen-on port

allow-query

recursion


Maintenir une zone DNS

  1. Définir une zone dans le fichier de configuration /etc/named.conf
    Ici, on définit une zone pour le nom de domaine example.com

     $ vim /etc/named.conf
    
     zone "example.com" {
       type master;
       file "example.com.zone"
     }
    

    Type master indique qu’il s’agit du serveur de nom principal contenant la zone de ce nom de domaine. On peut également avoir le type slave, qui indique que ce serveur de nom se synchronise automatiquement avec le master et conserve en quelque sorte une sauvegarde. Si le master tombe en panne, les esclaves peuvent transmettre les données DNS à sa place

  2. Créer un fichier de configuration /var/named/example.com, à partir du modèle /var/named/named.local
    Le fichier de zone doit avoir le même utilisateur et groupe propriétaire que le fichier original, sinon bind n’aura pas la permission de le lire

     $ sudo ls /var/named
     $ sudo cp --preverse=ownership /var/named/named.local /var/named/example.com.zone
    
  3. Éditer ce fichier de configuration

     $ sudo vim /var/named/example.com.zone
    
  4. Redémarrer bind

     $ sudo systemctl restart named.service
    
  5. Tester

     $ dig @localhost example.com       # retrieve NS and A records
     $ dig @localhost mail.example.com
     $ dig @localhost example.com ANY   # retrieve ALL record types
    

TTL

SOA

NS

A

CNAME

MX

AAAA

TXT