Rapport troubleshooting - bpatureau/admin-2-TP GitHub Wiki
Auteurs : Maxime, Bastien, Guillaume
1. Bug report
Description du bug :
Lors de la configuration de notre DNS nous avons eu un bug qui nous empêchais de résoudre le nom l1-2.ephec-ti.be
.
Résultat attendu :
La commande ping l1-2.ephec-ti.be
doit fonctionner et la commande dig l1-2.ephec-ti.be
doit renvoyer le record A du serveur dns.
Résultat obtenu :
dig l1-2.ephec-ti.be
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> l1-2.ephec-ti.be
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 63978
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;l1-2.ephec-ti.be. IN A
;; Query time: 35 msec
;; SERVER: 213.186.33.99#53(213.186.33.99) (UDP)
;; WHEN: Sat May 10 15:27:13 UTC 2025
;; MSG SIZE rcvd: 45
Système concerné :
-
Infrastructure :
- Serveur DNS dans un container docker sur un VPS
-
Schéma :
-
Logiciel :
- Image du serveur dns : internetsystemsconsortium/bind9:9.18
-
Configuration :
-
Dockerfile
:
FROM internetsystemsconsortium/bind9:9.18
ADD named.conf /etc/bind/named.conf
ADD l1-2.zone /etc/bind/l1-2.zone
RUN chown -R bind:bind /etc/bind/
ENTRYPOINT []
CMD ["/usr/sbin/named", "-g", "-c", "/etc/bind/named.conf", "-u", "bind"]
- Fichier zone
/etc/bind/l1-2.zone
:
$TTL 86400
@ IN SOA ns.l1-2.ephec-ti.be. admin.l1-2.ephec-ti.be. (
2025041420 ; Serial (YYYYMMDDXX)
21600 ; Refresh
3600 ; Retry (1h)
1209600 ; Exp
86400 ; Valeur par défaut du TTL négatif
)
; Les NS
@ IN NS ns.l1-2.ephec-ti.be.
; Les A
ns IN A 54.36.180.26
www IN A 54.36.181.70
mail IN A 54.36.180.122
@ IN A 54.36.180.26
- Fichier de configuration bind
/etc/bind/named.conf
:
options {
directory "/var/cache/bind";
// version statement for security to avoid hacking known weaknesses
// if the real version number is revealed
version "not currently available";
allow-query { any; };
allow-query-cache { none; };
recursion no;
};
zone "l1-2.ephec.ti.be." {
type master;
file "/etc/bind/l1-2.zone";
allow-transfer {
none;
};
inline-signing yes;
dnssec-policy default;
};
Reproduction du bug :
- Créer cette strucutre de fichier et remplir le contenu de ces fichiers avec les fichiers correspondant ci-dessus:
DNS/
├── named.conf
├── l1-2.zone
└── Dockerfile
- Démmarer le serveur DNS :
- Se déplacer dans le dossier DNS où se trouvent le Dockerfile et les deux fichiers de configs
- Construire l'image :
docker build -t dns .
- Lancer le conteneur avec :
docker run -d --name dns -p 53:53/udp -p 53:53/tcp dns
- Exécuter :
dig l1-2.ephec-ti.be
- Observer l'erreur de résolution / l'absence de réponse
Analyse préliminaire :
- Commande :
dig l1-2.ephec-ti.be
- Résultat : aucun enregistrement retourné
- Conclusion : une erreur de config dns
2. Analyse du problème
Symptôme 1
-
Commande : depuis un poste client sur Internet, effectuer un
ping l1-2.ephec-ti.be
. -
Résultat obtenu : impossible de ping
-
Conclusions :
- Le ping n'a pas pu partir vers une adresse IP => La résolution DNS n'a pas renvoyé d'adresse
Symptôme 2
-
Commande : trace wireshark d'un
ping l1-2.ephec-ti.be
depuis un poste client sur Internet. -
Résultat :
-
Conclusion :
Server failure A l1-2.ephec-ti.be
la résolution qui est censée être apportée par le serveur dns ne fonctionne pas. On a un problème au niveau du serveur dns.
Symptôme 3
-
Commande : depuis un poste client sur Internet, effectuer un
dig l1-2.ephec-ti.be
. -
Résultat obtenu :
-
Conclusions :
- Le dig ne nous a pas renvoyé d'enregistrement A => le serveur dns ne renvois pas de record A pour cette addresse
Symptôme 4
-
Commande : depuis un poste client sur Internet, effectuer un
dig @<ip-serveur-dns> l1-2.ephec-ti.be
. -
Résultat obtenu :
-
Conclusions :
- Le dig ne nous a pas renvoyé d'enregistrement A => le serveur dns de notre zone ne renvois pas de record A pour cette addresse. Nous somme maintenant sur que le problème vient de notre zone, au niveau de notre serveur dns.
Symptôme 5
-
Commande : analyse des logs du container
docker logs dns
. -
Résultat obtenu :
-
Conclusions :
- Nous pouvons voir que la zone n'a pas été chargée à cause d'erreurs, ce qui prouve qu'il y a une erreur de config.
Symptôme 6
-
Commande : analyse du fichier de config de la zone :
cat l1-2.zone
. -
Résultat obtenu :
-
Conclusions :
- A priori aucun soucis car les enregistrements A sont bien présents
Symptôme 7
-
Commande : analyse du fichier de config du serveur :
cat named.conf
. -
Résultat obtenu :
-
Conclusions :
- Nous regardons si le fichier pointe bien vers la bonne zone, c'est ici qu'on trouve le bug, plus d'explications au point 3.
3. Explication du problème
- Bug : cette ligne :
zone "l1-2.ephec.ti.be." {
. Est erronée, le nom de la zone est mal écrit, on a un "." au lieu d'un "-" entreephec
etti
- Conséquence : Le fichier de config du dns dirige vers une autre zone qui n'existe pas (
l1-2.ephec.ti.be.
) et donc notre zonel1-2.ephec-ti.be
n'est pas valide. Notre ficher zone est configuré pour donner des records A aux requêtes concernant la zonel1-2.ephec.ti-be.
et nonl1-2.ephec.ti.be.
donc quand on demande la zonel1-2.ephec-ti.be.
par exemple avec unping l1-2.ephec-ti.be.
aucun enregistrement A n'est renvoyé.
4. Correction du bug
- Modifier le fichier
nano named.conf
et remplacer la ligne
zone "l1-2.ephec.ti.be." {
Par la ligne (remplacer le "." par un "-") :
zone "l1-2.ephec-ti.be." {
- Sauvegarder et fermer le fichier
- Redémarrer le docker :
docker stop dns
docker start dns
5. Validation
Procédure
- Exécuter
ping l1-2.ephec-ti.be
- Résultat attendu : Le ping passe
- Exécuter
dig l1-2.ephec-ti.be
- Résultat attendu : Réception d'une IP correspondante à un record A
Vérification
- Commande :
ping l1-2.ephec-ti.be
- Résultat : Le ping passe bien.
- Commande :
dig l1-2.ephec-ti.be
- Résultat : Le dig nous donne l'enregistrement A correspondant.