365 lines
6.7 KiB
Markdown
365 lines
6.7 KiB
Markdown
|
|
# **TP04 – Dynamic DNS — Organisation par GRANDES PARTIES**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# **PARTIE 1 — Préparation de la topologie (ddns.imn)**
|
|||
|
|
|
|||
|
|
### **Objectif :**
|
|||
|
|
|
|||
|
|
Créer une topologie avec :
|
|||
|
|
|
|||
|
|
* un **serveur DNS** : *osiris*
|
|||
|
|
|
|||
|
|
* un **serveur DHCP** : *isis*
|
|||
|
|
|
|||
|
|
* des clients (eno, owt, pc1, pc2…)
|
|||
|
|
|
|||
|
|
### **Ce que tu dois faire :**
|
|||
|
|
|
|||
|
|
1. Copier la topologie du TP22 (`dns1.imn`)
|
|||
|
|
|
|||
|
|
2. Enregistrer sous `ddns.imn` dans :
|
|||
|
|
`~/SCR.3.2/TP04/`
|
|||
|
|
|
|||
|
|
3. Assigner :
|
|||
|
|
|
|||
|
|
* **osiris** : serveur DNS
|
|||
|
|
|
|||
|
|
* **isis** : serveur DHCP
|
|||
|
|
|
|||
|
|
* Les autres machines : sans IP statique (elles utiliseront DHCP)
|
|||
|
|
|
|||
|
|
### **Pourquoi ?**
|
|||
|
|
|
|||
|
|
Parce que :
|
|||
|
|
|
|||
|
|
* DHCP doit distribuer IP \+ DNS \+ nom de domaine,
|
|||
|
|
|
|||
|
|
* DHCP doit envoyer des mises à jour dynamiques au DNS.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# **PARTIE 2 — Préparation des fichiers DNS (osiris)**
|
|||
|
|
|
|||
|
|
### **Objectif :**
|
|||
|
|
|
|||
|
|
Créer les fichiers de zone que BIND pourra *modifier dynamiquement*.
|
|||
|
|
|
|||
|
|
### **Étapes :**
|
|||
|
|
|
|||
|
|
### **(1) Copier les fichiers du TP22 dans TP04**
|
|||
|
|
|
|||
|
|
Tu copies depuis ton dossier TP22 tout ce qui concerne DNS :
|
|||
|
|
|
|||
|
|
`named.conf.local`
|
|||
|
|
`db.tp.scr`
|
|||
|
|
`db.1.168.192`
|
|||
|
|
|
|||
|
|
Tu renommes :
|
|||
|
|
|
|||
|
|
`osiris.named.conf.local`
|
|||
|
|
`osiris.db.tp.scr`
|
|||
|
|
`osiris.db.1.168.192`
|
|||
|
|
|
|||
|
|
### **(2) Éditer les fichiers de zone**
|
|||
|
|
|
|||
|
|
Le TP dit : garder seulement :
|
|||
|
|
|
|||
|
|
* les enregistrements pour **osiris**,
|
|||
|
|
|
|||
|
|
* ajouter ceux pour **isis**,
|
|||
|
|
|
|||
|
|
* supprimer toutes les autres machines (eno, owt, pc1, pc2…).
|
|||
|
|
|
|||
|
|
tp04.SCR.3.2
|
|||
|
|
|
|||
|
|
Parce que ces autres machines recevront leurs enregistrements **dynamiquement via DHCP**, donc pas dans les fichiers statiques.
|
|||
|
|
|
|||
|
|
### **(3) Déplacer les fichiers dans `/var/lib/bind/`**
|
|||
|
|
|
|||
|
|
Très important : BIND **n’a pas le droit d’écrire** dans `/etc/bind/`.
|
|||
|
|
|
|||
|
|
Les fichiers de zones finalisés doivent être placés dans :
|
|||
|
|
|
|||
|
|
`/var/lib/bind/db.tp.scr`
|
|||
|
|
`/var/lib/bind/db.1.168.192`
|
|||
|
|
|
|||
|
|
Pourquoi ?
|
|||
|
|
|
|||
|
|
* Parce que `named` tourne sous l’utilisateur **bind**,
|
|||
|
|
|
|||
|
|
* Il doit créer un fichier journal `.jnl` pour les mises à jour dynamiques,
|
|||
|
|
|
|||
|
|
* `/etc/bind` n’est pas modifiable par bind.
|
|||
|
|
|
|||
|
|
tp04.SCR.3.2
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# **PARTIE 3 — Génération et configuration de la clé TSIG (sécurité)**
|
|||
|
|
|
|||
|
|
### **Objectif :**
|
|||
|
|
|
|||
|
|
Permettre à DHCP (isis) de mettre à jour DNS (osiris) en toute sécurité.
|
|||
|
|
|
|||
|
|
### **Générer la clé sur *osiris* :**
|
|||
|
|
|
|||
|
|
`tsig-keygen -a md5 tp.scr-key > ddns.key`
|
|||
|
|
|
|||
|
|
### **Installer la clé :**
|
|||
|
|
|
|||
|
|
#### **Sur osiris :**
|
|||
|
|
|
|||
|
|
`/etc/bind/ddns.key`
|
|||
|
|
`chmod 640 ddns.key`
|
|||
|
|
`chown root:bind ddns.key`
|
|||
|
|
|
|||
|
|
#### **Sur isis :**
|
|||
|
|
|
|||
|
|
`/etc/dhcp/ddns.key`
|
|||
|
|
`chmod 640 ddns.key`
|
|||
|
|
`chown root:bind ddns.key`
|
|||
|
|
|
|||
|
|
### **Pourquoi ?**
|
|||
|
|
|
|||
|
|
TSIG \= Transaction Signature
|
|||
|
|
→ sécurité \= le DNS n’accepte des updates **que du DHCP**, pas d’un intrus.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# **PARTIE 4 — Configuration DNS dynamique (osiris)**
|
|||
|
|
|
|||
|
|
### **Objectif :**
|
|||
|
|
|
|||
|
|
Dire au serveur DNS de permettre les mises à jour dynamiques venant de isis.
|
|||
|
|
|
|||
|
|
### **Modifier `/etc/bind/named.conf.local` (renommé ici en osiris.named.conf.local)**
|
|||
|
|
|
|||
|
|
Exemple :
|
|||
|
|
|
|||
|
|
`include "/etc/bind/ddns.key";`
|
|||
|
|
|
|||
|
|
`zone "tp.scr" IN {`
|
|||
|
|
`type master;`
|
|||
|
|
`file "/var/lib/bind/db.tp.scr";`
|
|||
|
|
`allow-update { key tp.scr-key; };`
|
|||
|
|
`};`
|
|||
|
|
|
|||
|
|
`zone "1.168.192.in-addr.arpa" IN {`
|
|||
|
|
`type master;`
|
|||
|
|
`file "/var/lib/bind/db.1.168.192";`
|
|||
|
|
`allow-update { key tp.scr-key; };`
|
|||
|
|
`};`
|
|||
|
|
|
|||
|
|
### **Pourquoi ?**
|
|||
|
|
|
|||
|
|
* `allow-update { key ... }` \= autoriser DHCP uniquement.
|
|||
|
|
|
|||
|
|
* Le fichier de zone est dans `/var/lib/bind/` pour que BIND puisse écrire le `.jnl`.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# **PARTIE 5 — Configuration DHCP avec DDNS (isis)**
|
|||
|
|
|
|||
|
|
### **Objectif :**
|
|||
|
|
|
|||
|
|
Faire en sorte que DHCP :
|
|||
|
|
|
|||
|
|
* attribue des IP aux clients,
|
|||
|
|
|
|||
|
|
* génère automatiquement :
|
|||
|
|
|
|||
|
|
* un enregistrement A (nom → IP)
|
|||
|
|
|
|||
|
|
* un enregistrement PTR (IP → nom)
|
|||
|
|
|
|||
|
|
* envoie les mises à jour signées au DNS.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### **Modifier `/etc/dhcp/dhcpd.conf` (fichier isis.dhcpd.conf)**
|
|||
|
|
|
|||
|
|
Exemple minimal :
|
|||
|
|
|
|||
|
|
`include "/etc/dhcp/ddns.key";`
|
|||
|
|
|
|||
|
|
`ddns-update-style standard;`
|
|||
|
|
`update-static-leases on;`
|
|||
|
|
|
|||
|
|
`option domain-name "tp.scr";`
|
|||
|
|
`option domain-name-servers 192.168.1.158; # osiris`
|
|||
|
|
|
|||
|
|
`zone tp.scr. {`
|
|||
|
|
`primary 192.168.1.158;`
|
|||
|
|
`key tp.scr-key;`
|
|||
|
|
`}`
|
|||
|
|
|
|||
|
|
`zone 1.168.192.in-addr.arpa. {`
|
|||
|
|
`primary 192.168.1.158;`
|
|||
|
|
`key tp.scr-key;`
|
|||
|
|
`}`
|
|||
|
|
|
|||
|
|
`subnet 192.168.1.0 netmask 255.255.255.0 {`
|
|||
|
|
`range 192.168.1.11 192.168.1.200;`
|
|||
|
|
`option routers 192.168.1.254;`
|
|||
|
|
`}`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### **Pourquoi ?**
|
|||
|
|
|
|||
|
|
Parce que DHCP doit :
|
|||
|
|
|
|||
|
|
* **savoir où envoyer** les mises à jour DNS → directives `zone {...}`;
|
|||
|
|
|
|||
|
|
* **les signer** → directive `key`;
|
|||
|
|
|
|||
|
|
* fournir l’IP du DNS aux clients → option `domain-name-servers`.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# **PARTIE 6 — Lancement manuel des services en mode debug**
|
|||
|
|
|
|||
|
|
### **Objectif :**
|
|||
|
|
|
|||
|
|
Observer les transactions DDNS en temps réel.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### **Sur osiris (DNS) :**
|
|||
|
|
|
|||
|
|
`named -u bind -g`
|
|||
|
|
|
|||
|
|
Cela garde `named` en avant-plan et affiche les mises à jour.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### **Sur isis (DHCP) :**
|
|||
|
|
|
|||
|
|
`dhcpd -d`
|
|||
|
|
|
|||
|
|
Cela permet de voir :
|
|||
|
|
|
|||
|
|
* DHCPDISCOVER
|
|||
|
|
|
|||
|
|
* DHCPOFFER
|
|||
|
|
|
|||
|
|
* DHCPREQUEST
|
|||
|
|
|
|||
|
|
* DHCPACK
|
|||
|
|
|
|||
|
|
* et surtout → la génération des messages DDNS
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### **Pourquoi ne pas lancer via `service bind9 start` ?**
|
|||
|
|
|
|||
|
|
Parce que tu ne verrais **aucun log**, et tu ne pourrais pas analyser les mises à jour dynamiques.
|
|||
|
|
Le TP impose explicitement l’exécution en mode debug.
|
|||
|
|
|
|||
|
|
tp04.SCR.3.2
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# **PARTIE 7 — Tests fonctionnels**
|
|||
|
|
|
|||
|
|
### **1\. Avant la requête DHCP**
|
|||
|
|
|
|||
|
|
Sur un client (eno par exemple) :
|
|||
|
|
|
|||
|
|
`ip a`
|
|||
|
|
`cat /etc/resolv.conf`
|
|||
|
|
|
|||
|
|
→ pas d’IPv4, pas de DNS.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### **2\. Demande d’adresse :**
|
|||
|
|
|
|||
|
|
`dhclient -v eth0`
|
|||
|
|
|
|||
|
|
### **Observations :**
|
|||
|
|
|
|||
|
|
#### **Côté DHCP (isis) :**
|
|||
|
|
|
|||
|
|
* DHCPACK
|
|||
|
|
|
|||
|
|
* "Added new forward map ..."
|
|||
|
|
|
|||
|
|
* "Added reverse map ..."
|
|||
|
|
|
|||
|
|
#### **Côté DNS (osiris) :**
|
|||
|
|
|
|||
|
|
* Validation TSIG
|
|||
|
|
|
|||
|
|
* Écriture dans `.jnl`
|
|||
|
|
|
|||
|
|
* Mise à jour A \+ PTR
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### **3\. Test DNS :**
|
|||
|
|
|
|||
|
|
`dig eno.tp.scr`
|
|||
|
|
`dig -x 192.168.1.X`
|
|||
|
|
|
|||
|
|
Résultat attendu :
|
|||
|
|
|
|||
|
|
* le nom résout vers l’IP DHCP,
|
|||
|
|
|
|||
|
|
* l’IP résout vers le nom.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# **PARTIE 8 — Cas d’erreur : mauvaise clé TSIG**
|
|||
|
|
|
|||
|
|
Le TP demande de modifier légèrement la clé du DHCP pour provoquer une erreur.
|
|||
|
|
|
|||
|
|
tp04.SCR.3.2
|
|||
|
|
|
|||
|
|
### **Symptômes :**
|
|||
|
|
|
|||
|
|
#### **DHCP (isis) :**
|
|||
|
|
|
|||
|
|
→ *Continue à fonctionner normalement*.
|
|||
|
|
|
|||
|
|
#### **DNS (osiris) :**
|
|||
|
|
|
|||
|
|
→ Rejette les mises à jour :
|
|||
|
|
|
|||
|
|
`tsig verify failure (BADSIG)`
|
|||
|
|
|
|||
|
|
### **Test DNS :**
|
|||
|
|
|
|||
|
|
`dig eno.tp.scr`
|
|||
|
|
|
|||
|
|
→ Réponse : **NXDOMAIN**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### **Pourquoi ?**
|
|||
|
|
|
|||
|
|
Parce que la requête DDNS est :
|
|||
|
|
|
|||
|
|
* signée par DHCP,
|
|||
|
|
|
|||
|
|
* vérifiée par DNS.
|
|||
|
|
|
|||
|
|
Si la signature ne correspond pas, DNS rejette la mise à jour → donc pas d’enregistrement.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# **RÉSUMÉ PARFAIT DU TP04**
|
|||
|
|
|
|||
|
|
| Partie | Ce que tu fais | Pourquoi |
|
|||
|
|
| ----- | ----- | ----- |
|
|||
|
|
| 1 | Créer ddns.imn | Topo du TP |
|
|||
|
|
| 2 | Préparer les zones | Utilisation dynamique |
|
|||
|
|
| 3 | Créer clé TSIG | Sécurisation |
|
|||
|
|
| 4 | Configurer DNS | Autoriser mises à jour |
|
|||
|
|
| 5 | Configurer DHCP | Envoyer mises à jour |
|
|||
|
|
| 6 | Lancer named & dhcpd en debug | Voir les transactions |
|
|||
|
|
| 7 | Tester DHCP \+ DNS | Vérification du DDNS |
|
|||
|
|
| 8 | Tester erreur de clé | Comprendre TSIG |
|
|||
|
|
|