[CoursDNS/TP-ServeurDNS/TP.ntml] avril 2006
pascal Hennequin
TP DNS
Cherchez d'abord dans Documents pour Cours et TP,
avant d'interroger le "guru DNS local".
Partie 1 : Familiarisation avec le DNS et utilisation de DIG
Objectifs:
- Se familiariser avec le système DNS en explorant les informations de
zones, la délégation de zones, les résolutions itératives et récursives,
le cache des données...
- Tester les options de la commande DIG, afin de maîtriser
son utilisation comme outil de gestion et de test lors de la mise en
oeuvre de services DNS.
- Rechercher "Tout ce que vous avez toujours voulu savoir sur le" DNS ...
Hints :
- Regardez le fichier local /etc/resolv.conf (configuration
des serveurs DNS recursifs)
- N'oubliez pas de terminer les noms de domaine par un point (FQDN)
- Quelques options importantes de dig :
- @server, -x, +norecurse, +trace, +nssearch, +multiline (for SOA) , +dnssec, ...
- et des Query Types : AXFR, ANY, NS, SOA ...
- cf. Page de Manuel dig(1)
- Des éléments à surveiller dans le resultat de dig :
flags aa ra, status, Query time, SERVER ...
- Quelques serveurs DNS utiles:
- diamant.int-evry.fr. maître pour int-evry.fr. et 159.157.in-addr.arpa.
- zeratul.ipv6.int-evry.fr. maître pour ipv6.int-evry.fr. et 3.0.2.3.0.6.6.0.1.0.0.2.ip6.arpa.
- alambix.int-evry.fr. maître pour la zone DNSSEC
int-evry.caddisc.enst.idsa.prd.fr.
- bonemine.int-evry.fr. cache-only, DNSSEC-aware (trust
se. et int-evry.caddisc.enst.idsa.prd.fr.)
- hugo.int-evry.fr. esclave pour les zones précédentes
- NB : alambix, bonemine et zeratul répondent en IPv4 et IPv6 et gérent
l'option dig +dnssec.
Quelques propositions pour ceux qui manquent d'imagination :
- Qui sont le DNS Racine ?
- Combien y-a-t'il de parcours possibles pour la résolution itérative
de l'adresse (IPv4 ou IPv6) de alambix.ipv6.int-evry.fr.?
Est-ce différent si la résolution est faite par une machine quelconque ou par une machine de l'INT ?
- La délégation des zones suivantes est elle correcte ? Pourquoi ?
xorg.org.,
fleximage.fr.,
u-bordeaux2.fr.,
enst.fr.,
transilien.com.,
every1.net.,
ibank.co.uk.,
115.108.192.in-addr.arpa.,
231.80.in-addr.arpa.
- Essayer de construire l'Arbre DNS sous int-evry.fr. (Domaines? , Zones?). Idem pour enst-bretagne.fr.
Idem si un oracle vous parle de dedale.ipv6.rennes.enst-bretagne.fr..
- Combien y-a-t'il d'entrées (RR, Noms) dans la base de la zone int-evry.fr. ? Quels types d'entrées ? ...
- Trouver l'adresse d'une machine lointaine de votre choix en
n'utilisant que des requêtes dig +norecurse. Quel rapport
avec dig +trace ?
- Où va un mail pour xxx@int-evry.fr ?
Idem pour
xxx@ducon.int-evry.fr,
xxx@mailfax.int-evry.fr,
xxx@hugo.int-evry.fr ?
Dans le dernier cas, une ligne nameserver 157.159.100.81
dans /etc/resolv.conf a t'elle une influence ?
- Quelle est l'utilité de dig +nssearch ?
- http://www.squish.net/dnscheck?
- ...
"Bonus" IPv6
- IPv6 est-il actif sur votre machine ?
- Quelle est la différence entre les requêtes suivantes :
dig @ipv6-1.int-evry.fr. ...,
dig @ipv6-1.ipv6.int-evry.fr. ... et
dig @zeratul.ipv6.int-evry.fr. .... Quel lien avec la question précédente ?
"Super Bonus" Démo
Zone de test des différents types de RR et du wildcard (sources commentées dans les docs) : dig @ipv6-1.int-evry.fr zone.test. AXFR
"Extra Bonus" DNSSEC
Comment explorer l'ensemble d'une zone DNSSEC (et les sous-zones) si
la requête AXFR n'est pas disponible ? Tester sur
ipv6.rennes.enst-bretagne.fr.,
ripe.net.,
se., ou
dnssec-deployement.org.
Partie 2 : Installer un Serveur DNS
Objectifs :
Il s'agit de mettre en oeuvre un serveur DNS en utilisant ISC BIND.
Il faudra de plus definir et réaliser des tests qui permettent
de vérifier le bon fonctionnement des différents services mis en oeuvre.
On pourra suivre les étapes suivantes :
- Un serveur Forward-Only : cache, pas de zone authoritative,
pas de résolution itérative, résolution des requêtes récursives par relai
récursif vers un autre serveur DNS récursif.
- Un serveur Cache-Only : cache, pas de zone authoritative,
résolution des requêtes récursives en utilisant la résolution itérative.
- Un serveur Authoritative Primaire : cache,
maître pour une zone XXX.test., résolution itérative.
Faire une base de zone avec 10 à 20 RRs,
donner le nom que vous voulez aux machines mais utiliser des
informations opérationnelles valides (adresses IP,..).
- Variations :
- Modifiez en un serveur Authoritative-Only : pas de résolution itérative, pas de forwarding, uniquement des réponses itératives. (cache ?)
- Créez des sous-domaines AAA.XXX.test. et une sous-zone BBB.XXX.test. sur le même serveur.
- Cherchez l'administrateur d'une zone YYY.test. et proposez lui
d'être Authoritative Secondaire pour sa zone.
Comme il a le même enoncé, il vous proposera en échange de faire
secondaire pour votre zone XXX.test.. Testez ici la
mise à jour d'une zone DNS (Notify, TTLs du SOA, Numéro de Série..)
- Devenez Authoritative Secondaire Furtif (stealth server) pour la zone int-evry.fr. (et/ou ipv6.int-evry.fr., 159.157.in-addr.arpa., ...)
- Trouvez l'administrateur de la zone ipv6.int-evry.fr. et
allez obtenir une délégation DNS opérationnelle XXX.ipv6.int-evry.fr.
pour votre zone.
Indications Opérationnelles :
- N'oubliez pas les Documents pour Cours et TP
- Le fichier ./conf0 donne une base de départ pour la
configuration du démon named. Recopier ce ficher sous un nom de
votre choix (MA_CONFIG) et adaptez le pour chaque étape.
- Lancement du serveur :
./named -g -p MON_PORT_DNS -c MA_CONFIG
Choisir un numéro de port non privilégié pour MON_PORT_DNS.
Lire les messages de log.
Tuer le démon avec Ctrl-C.
- Test du serveur avec dig (dans une autre fenêtre) :
./dig @localhost -p MON_PORT_DNS ....
ou bien @::1 plus court que @localhost !
- Avant d'utiliser une config, ou un fichier de zone, vous pouvez vérifier
la syntaxe avec :
./named-checkconf MA_CONFIG
./named-checkzone NOM_ZONE FICHIER_ZONE
- Mettre rapidement en oeuvre le contrôle "distant" du serveur named
par la commande rndc. Pour cela, génerer les informations de
configuration (clé d'authentification,..) avec :
./rndc-confgen -p MON_PORT_RNDC > MA_CONFIG_RNDC
Regarder le fichier généré MA_CONFIG_RNDC, et mettre à jour MA_CONFIG en conséquence.
Après avoir relancé le serveur ./named, contrôler maintenant le démon avec :
./rndc -c MA_CONFIG_RNDC command
Sans command, vous obtenez la liste des commandes : reload, status, querylog, ...
- Pour les tests des différentes étapes, vous pouvez regarder
le contenu de la zone avec dig AXFR et
le contenu du cache DNS avec rndc dumpdb.
Vous pouvez aussi vider le cache avec rndc flush
- Pour tester les dernières étapes, l'utilisation du port 53 devient
requise. Trouvez alors un administrateur root sur votre machine pour
lancer le démon named sur le port réservé 53. En plus de rndc,
le logging des messages dans des fichiers doit être activé. NB : pour
regarder en continu les logs dans un fichier, on peut utiliser la commande
"tail -f LOG_FILE" , et ctrl-C pour tuer.
Partie 3 : DNSSEC
Objectifs :
Signer une zone DNS conformément à DNSSEC (RFC4033, 4034, 4035) et activer
un serveur Authoritative pour cette zone.
Hints :
- L'outil dnssec-signzone génere à partir d'un ficher
de zone DNS la version signée de cette zone. En particulier, l'outil
calcule et rajoute les Records RRSIG et NSEC
pour l'authentification de données dans DNSSEC. Le fichier
de zone résultant s'utilisera alors comme un fichier de zone normal
pour être exporté dans le système DNS. On remplace la zone non signée par la
zone signée, plus grosse!
- La signature nécessite au préalable la génération de
clés cryptographiques et l'insertion de la partie publique des clés
dans la zone avec des Records DNSKEY. L'outil
dnssec-keygen est utilisé pour cette génération de clés.
- ... cf. pages de manuel des commandes dnssec-* et l'exemple
commenté dans le directory ./CONFIG/DNSSEC ...
Partie 3 bis: Sécurisation de serveurs DNS
Configuration du transfer de zone et/ou du dynamic update
avec sécurisation des transactions avec TSIG.
(NB: SIG(0) est encore incomplet dans BIND 9.3.1).
Non rédigé; autoformation!