CESALI : Complement TP DNS
Rappel : étapes de travail
- I) Faire un serveur de Résolution Cache-Only (entre 30mn et 1h30)
- II) Activer le contrôle du démon named par l'outil rndc (30mn)
- III) Creer une zone DNS XXX.test. et un serveur primaire
pour cette zone (1h-2h)
- IV) Activer un serveur secondaire pour la zone ipv6.int-evry.fr. (30mn)
- V) Archiver et Rendre par mail DIR.tar.gz (30mn)
et 2 étapes optionnelles :
- I-bis) Transformer le serveur de Résolution Cache-Only en
serveur Forward-Only (30mn, de préference après l'étape II)
- VI) Rattacher votre zone DNS XXX.test. dans l'arbre DNS global
comme zone XXX.ipv6.int-evry.fr.. La réalisation de cette
étape se fera optionnellement sur site en début de présentiel 4
et demande juste un minimum de préparation en complément
de l'étape III. (30 mn)
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 :
- mode 1 : Je ne suis pas root .
Suivre alors les indications de l'ennoncé et choisir
aléatoirement 2 numeros de port non-privilegié par exemple
"MON_PORT=5555" et "MON_PORT_RNDC=6666".
On utilisera alors l'option "-p 5555" pour les commandes
named et dig et l'option "-p 6666"
pour la commande rndc-confgen
- mode 2 : Je peux etre root.
named sera alors lancé par root (sans option -p) et utilisera
le port 53 pour le service DNS et le port 953 pour le service rndc.
On peut aussi dans ce cas rajouter l'option "-u mon_login"
ce qui permettra au deamon de lire ou ecrire avec les droits
de "mon_login" plutot que ceux de root.
Les autres commandes dig, rndc, rndc-confgen
n'auront pas besoin de l'option -p et peuvent être lancées sans être root.
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)