CESALI : Complement TP DNS

Rappel : étapes de travail

Etape 0 : Preambule

Faire un tour rapide des documents de la page "Document et Liens". Il y a en particulier pas mal d'exemples operationnels ou commentés de fichier de zone ou de fichier de config de named. NB : notre fichier "conf0" s'appelle en général "named.conf" dans la nature.

Suivre les logs du deamon named, ils contiennent des infos utiles (et beaucoup qui le sont moins mais faut faire avec !) NB : le warning concernant rndc.key au demarrage n'est pas genant.

Complement sur les indications Operationnels
Suivant votre environnement, 2 modes possibles pour la mise en oeuvre : Pour les 2 modes et afin d'eviter les problemes de droit d'acces rencontrés dans le mode 2 durant le présentiel, je propose de modifier l'organisation de base de TP de la facon suivante :

Etape I : Cache-Only

  Faire un serveur DNS de resolution Cache only
       
 ind.: activer dans conf0 la ligne
       zone "." {type hint, file "Ma_Root_Zone"}
       et remplir le fichier Ma_Root_Zone par exemple avec par exemple:
        dig > Ma_Root_Zone 
       ou la source texte officielle : ftp://ftp.internic.net/domain/named.root

 test : 
    > named -g -c conf0 -p 5555
    > dig @localhost -p 5555 yahoo.com (reponse => resolution OK)
    > dig @localhost -p 5555 yahoo.com (temps reponse faible => cache OK)

Etape II : rndc

   Activer le controle du deamon named par l'outil rndc
   Utile pour les tests des autres etapes.

   L'outil rndc fonctionne avec une connexion client-serveur entre
   l'outil rndc et le deamon named (port 953 par defaut). Il sert en 
   envoyer des fonctions de contrôle au processus serveur (stop, restart,..) 
   de facon plus convivial que l'utilisation de kill et des signaux.
   Il y a de plus un controle d'acces au niveau du serveur qui limitera
   les machines qui peuvent se connecter et utilisera un clé
   cryptograpique pour authentifier le client rndc.

   Pour configurer, il faut générer cette clé et inserer les infos
   dans 2 fichiers de config : celui de named et celui de rndc
   
   La commande rndc-confgen génere la clé et produit le fichier
   de config pour rndc, il produit de plus avec des commentaires 
   (#) les lignes a integrer dans conf0 pour named.
   
 ind :
    > rndc-confgen -p MON_PORT_RNDC > MA_CONF_RNDC 
       (ou sans -p si named lancé par root)
    > recopier les lignes commencant par # de MA_CONF_RNDC,
      enlever les # (pas tous !!), et inserer les lignes dans "conf0"

-----------------------------------------------------------
exemple MA_CONF_RNDC
------------------------
# created by rndc-confgen 
# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "3s4UZn0oWbsiXxcA3wqUZg==";
};

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 "3s4UZn0oWbsiXxcA3wqUZg==";
# };
# 
# controls {
#       inet 127.0.0.1 port 953
#               allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

-----------------------
Ce qui faut alors mettre dans "conf0"
----------------------
# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {
      algorithm hmac-md5;
      secret "3s4UZn0oWbsiXxcA3wqUZg==";
};

controls {
      inet 127.0.0.1 port 953
              allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf
-----------------------------------------------------------------


 test:
    > named -g -c conf0 -p 5555
    > rndc -c MA_CONF_RNDC reload     (verifier reload dans logs de named)

    NB : maintenant plus la peine de relancer named pour chaque test de
    config. rndc reload suffit
    NB2: rndc sans argument donne la liste des commandes rndc.
 test du cache :
    > named -g -c conf0 -p 5555 
    > rndc ... dumpdb
    > more named.dump     -> le cache est vide, normal..
    > dig @localhost -p 5555  yahoo.com
    > rndc ... dumpdb
    > more named.dump     -> le cache se remplit vite !!!

   NB: pour vider le cache
      > rndc flush

Etape I-bis : forward-only (optionel)

     Remplacer le serveur "cache-only" de l'etape 1) par un serveur
     "forward-only" : la resolution ne se fait plus 
      par le processus iteratif mais en renvoyant vers un autre serveur
      de resolution.

 ind : dans conf0 (ou plutot dans conf1 copie de conf0)
   - commenter eventuellement la ligne zone "." qui n'est plus utile
   - ajouter dans la partie "options {" en debut de fichier :
    forwarders { xxx.xxx.xxx.xxx; }; L'adresse ip du (ou des)
               serveur de resolution vers lequel vous forwarder
               (/etc/resolv.conf contient des candidats tout designé, 
                sinon au pire un serveur de l'INT  157.159.10.12)
    forward only; // uniquement du forward, donc pas de resolution iterative
      // Autre possibilite "forward first;" => resolution recursive puis
      // si echec resolution iterative

 (NB vous avez la version papier du manuel BIND pour la syntaxe
 de ces directives, et on-line les version pdf et html.)

    pour verifier que c'est bien un serveur de resolution forward-only 
    refaire le test du cache de l'etape II . 
    le cache sera beaucoup moins rempli : Pourquoi ?
     

Etape III : serveur Primaire

 Créer un fichier de zone DNS pour une zone XXX.test
          activer et tester la fonction de serveur primaire de cette zone.
       
 Ind : 
  Lire la page du poly "Syntaxe d'un fichier de zone"
  Regarder l'exemple simple commentée dans "document et liens" (aussi dans poly)
  S'inspirer des exemples operationnels e.g. base ipv6.int-evry.fr.
  regarder aussi les exemples dans DNS how-to
  dans conf0 activer une line
 zone "XXX.test."  {type master; file "Mon_beau_fichier_de_zone_que_j'ai_ecris"}
NB : si vous ne savez pas quoi mettre dans votre zone, donnez deja
      des noms sympatiques aux machines "f027-Pxx.int-evry.fr"

     ? record désiré : 1 SOA, 1 NS , quelques A, un CNAME
              eventuellement 1 MX, 1 TXT 

    test : > rndc reload   
           > dig @localhost -p 5555 un_nom.XXX.test. ANY
           > dig @localhost -p 5555 XXX.test. AXFR    

Addendum : on peut aussi faire serveur primaire pour les zones
conventionnelles "localhost." "reverse broadcast"...
Les fichiers Z.xx d'origine sont directement utilisables
sauf pour Z.127 qui reclame un retour charriot supplementaire en
fin de fichier !

Etape IV : serveur Secondaire

      Secondaire furtif pour "int-evry.fr" ou pour "ipv6.int-evry.fr"
      activer une ligne zone dans conf0 :
 zone "int-evry.fr." {type slave; file "XXX"; masters { x.x.x.x ; };   };
ou
 zone "ipv6.int-evry.fr." {type slave; ...  }

  vous n'avez rien à mettre dans les fichiers "XXX" 
  le serveur s'en servira pour sauvegarder la replication de la zone
  qu'il obtient automatiquement par un AXFR.
  "x.x.x.x" est l'adresse IP d'un serveur de la zone que j'obtiens
  avec dig (SOA, NS) "int-evry.fr." ce serveur peut etre un primaire ou
  un secondaire mais doit accepter le AXFR. (tester avec dig @x.x.x.x AXFR)

  test : rndc reload
         attendre quelques secondes !!
         more XXX    -> j'ai bien automatiquement une copie de la zone
         dig @localhost alambix.int-evry.fr 
         verifier que j'ai bien le flag aa qui indique que
                        la reponse est locale
           regarder eventuellement le cache qui ne devrait 
                   rien avoir pour alambix.int-evry.fr 
           ou refaite plusieur fois la meme commande et
                verifier que le TTL n'est pas decrementé

 NB rajouter eventuellement la directive " request-ixfr no; " 
    dans la partie options de conf0 . (si vous testez
    avec la zone "int-evry.fr") [rappel IXFR est une optimisation de AXFR]

 NB si vous etes tres patient, au bout de 6 heures (=21600 secondes) 
    pour "int-evry.fr", vous pouvez aussi verifier que vous aurez une
    remise a jour automatique de votre zone "int-evry.fr."

Etape V : Archiver

CF étape 0

Etape VI : Rattachement dans l'arbre DNS (optionel)

         Cerise sur le gateau,   Uniquement pendant le presentiel

         Demander et tester le rattachement de votre zone XXX.test.
            de l'etape 3 dans le vrai arbre DNS en temps que zone
            XXX.ipv6.int-evry.fr.

      Prerequis : (a preparer avant en grande partie)
        - savoir reactiver rapidement votre serveur DNS (avec vos config)
          sur les machines f027-pxx

        - readapter les configs 
           a) zone "XXX.test." devient zone "XXX.ipv6.int-evry.fr"
              dans conf0
           b) remplacer les "XXX.test." par "XXX.ipv6.int-evry.fr." dans
              le fichier de zone (NB: Si on utilise bien la notion
              de Zone Courante et de nom FDQN ou relatif, la chaine
              "XXX.test." peut ne pas apparraitre dans le fichier
              de zone)
           c) remplacer le record NS de votre zone pour
              utiliser le nom f027-pxx.int-evry.fr (on n'aura
               alors pas de pb de glue)