« Atelier SysRes SE4 2024/2025 E5 » : différence entre les versions

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
Ligne 3 : Ligne 3 :
===Introduction===
===Introduction===


Dans ce projet de virtualisation, nous avons mis en place une infrastructure comprenant '''deux machines de services''' et '''une''' '''machine mandataire''', le tout orchestré avec '''Xen'''. La machine '''Apollo''' joue un rôle clé dans l'hébergement des services, tandis que '''Solstice''' assure la gestion du réseau et l'interconnexion avec l'extérieur.   
Dans ce projet de virtualisation, j'ai mis en place une infrastructure comprenant '''deux machines de services''' et '''une''' '''machine mandataire''', le tout orchestré avec '''Xen'''. La machine '''Apollo''' joue un rôle clé dans l'hébergement des services, tandis que '''Solstice''' assure la gestion du réseau et l'interconnexion avec l'extérieur.   


Si vous souhaitez plonger plus en détail dans la configuration de '''Moon''', la seconde machine de services, il vous suffit de cliquant sur le lien suivant : 📎 [[Atelier SysRes SE4 2024/2025 E1|Moon]].   
Si vous souhaitez plonger plus en détail dans la configuration de '''Moon''', la seconde machine de services, il vous suffit de cliquant sur le lien suivant : 📎 [[Atelier SysRes SE4 2024/2025 E1|Moon]].   
Ligne 11 : Ligne 11 :
=== Création et Connexion aux Machines Virtuelles ===
=== Création et Connexion aux Machines Virtuelles ===


Dans ce projet, nous avons créé deux machines de services et une machine mandataire à l'aide de l'outil Xen. Les commandes utilisées sont les suivantes :
Dans ce projet, j'ai créé deux machines de services et une machine mandataire à l'aide de l'outil Xen. Les commandes utilisées sont les suivantes :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 18 : Ligne 18 :
</syntaxhighlight>
</syntaxhighlight>


Pour démarrer les machines, nous avons utilisé :
Pour démarrer les machines, j'ai utilisé :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 78 : Ligne 78 :
=== Montage des Partitions /var et /home sur Apollo ===
=== Montage des Partitions /var et /home sur Apollo ===


Pour améliorer la gestion des données, nous avons monté les répertoires <code>/var</code> et <code>/home</code> sur des partitions LVM dédiées.
Pour améliorer la gestion des données, j'ai monté les répertoires <code>/var</code> et <code>/home</code> sur des partitions LVM dédiées.


==== Création des Fichiers de Partition ====
==== Création des Fichiers de Partition ====


Depuis le serveur Capbreton, nous avons créé les fichiers de partitions dans <code>/dev/virtual</code> :
Depuis le serveur Capbreton, j'ai créé les fichiers de partitions dans <code>/dev/virtual</code> :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 91 : Ligne 91 :
==== Modification des Fichiers de Configuration ====
==== Modification des Fichiers de Configuration ====


Nous avons modifié les fichiers <code>.cfg</code> pour attacher les partitions LVM aux machines :
J'ai modifié les fichiers <code>.cfg</code> pour attacher les partitions LVM aux machines :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 123 : Ligne 123 :
</syntaxhighlight>
</syntaxhighlight>


Enfin, nous avons modifié le fichier <code>/etc/fstab</code> pour un montage automatique au démarrage.
Enfin, jai modifié le fichier <code>/etc/fstab</code> pour un montage automatique au démarrage.


---
---
Ligne 248 : Ligne 248 :
=== Mise en Place d’un Serveur DNS ===
=== Mise en Place d’un Serveur DNS ===


Nous avons configuré un serveur DNS pour gérer les noms de domaine associés à nos machines virtuelles : '''apollo-exploration.online''' et '''moonrises.online'''.
J'ai configuré un serveur DNS pour gérer les noms de domaine associés à nos machines virtuelles : '''apollo-exploration.online''' et '''moonrises.online'''.


La première chose à faire est de se reconnecter au registrar de domaine [https://www.gandi.net/fr '''Gandi''']. Nous y avions déjà au préalable commandé nos noms de domaine pour Apollo et [[Atelier SysRes SE4 2024/2025 E1|Moon]]. Après connexion, nous nous rendons dans l'onglet **Domaine** et nous suivons les instructions pour nous procurer le certificat pour nos deux machines. Après avoir suivi le tutoriel, nous obtenons deux fichiers :
La première chose à faire est de se reconnecter au registrar de domaine [https://www.gandi.net/fr '''Gandi''']. Je y avions déjà au préalable commandé nos noms de domaine pour Apollo et [[Atelier SysRes SE4 2024/2025 E1|Moon]]. Après connexion, je je rendons dans l'onglet '''Domaine''' et je suivons les instructions pour je procurer le certificat pour nos deux machines. Après avoir suivi le tutoriel, je obtenons deux fichiers :  
- **myserver.key** : la clé privée du domaine 
- **server.csr** : la demande de signature du certificat 


Nous utiliserons ces fichiers pour configurer **DNSSEC** et sécuriser notre zone DNS.
- '''myserver.key''' : la clé privée du domaine   


---
- '''server.csr''' : la demande de signature du certificat 
 
Je utiliserons ces fichiers pour configurer '''DNSSEC''' et sécuriser notre zone DNS.


==== Configuration de bind9 ====
==== Configuration de bind9 ====


Nous avons installé **bind9** et configuré l’interface réseau :
J'ai installé '''bind9''' et configuré l’interface réseau :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 266 : Ligne 266 :
</syntaxhighlight>
</syntaxhighlight>


Ajout de l'interface **eth1** pour gérer l'IPv6 dans `/etc/network/interfaces` :
j'ai vérifier les version de bind9 afin d'éviter certains problèmes par la suite, et celle ci doit être supérieure a la version 9.16, et c'est bien le cas.
 
<syntaxhighlight lang="bash">
root@Apollo:~# named -v
BIND 9.18.33-1~deb12u2-Debian (Extended Support Version) <id:>
 
</syntaxhighlight>
 
Ajout de l'interface '''eth1''' pour gérer l'IPv6 dans `/etc/network/interfaces` :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 273 : Ligne 281 :
</syntaxhighlight>
</syntaxhighlight>


Redémarrage du service pour appliquer les modifications :
Redémarrage du service pour appliquer les modifications en utilisant une des deux commandes suivantes :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
systemctl restart networking
systemctl restart networking
service networking restart
</syntaxhighlight>
</syntaxhighlight>
---


==== Configuration du Serveur DNS Maître et Secondaire ====
==== Configuration du Serveur DNS Maître et Secondaire ====


Sur Apollo, nous avons configuré les zones DNS dans **/etc/bind/named.conf.local** :
Sur Apollo, j'ai configuré les zones DNS dans `/etc/bind/named.conf.local` :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
zone "apollo-exploration.online" {
zone "apollo-exploration.online" {
    type master;
type master;
    file "/etc/bind/zones/db.apollo-exploration.online";
file "/etc/bind/db.apollo-exploration.online";
key-directory "/etc/bind/keys";
        dnssec-policy "dnspol"; # Active DNSSEC avec la politique "dnspol"
        inline-signing yes;
allow-transfer{secondaries;}; # filtrer les secondaires
also-notify{hiddensecondaries;}; # secondaires caches
notify yes;
};
 
acl "secondaries" {
2001:660:4401:60a0:216:3eff:fe6f:f548; # Adresse IPv6 de Moon (serveur secondaire)
2001:660:4401:60a0:216:3eff:fe29:880f; # Adresse IPv6 de Solstice
};
 
masters "hiddensecondaries" {
2001:660:4401:60a0:216:3eff:fe29:880f;  
};
};


zone "moonrises.online" {
zone "moonrises.online" {
    type slave;
type slave;
    file "/etc/bind/backup/db.moonrises.online";
file "/etc/bind/backup/db.moonrises.online";  
    masters { 172.16.0.2; };
masters{2001:660:4401:60a0:216:3eff:fe6f:f548;};  
};
};
</syntaxhighlight>
</syntaxhighlight>


La machine Apollo est **le serveur DNS principal**, tandis que Moon sert de **DNS secondaire** et récupère la zone depuis Apollo.
La machine Apollo est le serveur DNS principal, tandis que Moon sert de DNS secondaire et récupère la zone depuis Apollo.
 
==== Fichier de Zone pour Apollo ====


---
J'ai créé `/etc/bind/zones/db.apollo-exploration.online` :


==== Fichier de Zone pour Apollo ====
<syntaxhighlight>
$TTL 200
@ IN SOA ns2.apollo-exploration.online. admin.apollo-exploration.online. (
        3298267245      ;Version
        7200            ;Refresh
        3600            ;Retry
        1209600        ;Expire
        259200 )        ;Minimum TTL


Nous avons créé **/etc/bind/zones/db.apollo-exploration.online** :
;
        IN      NS      ns1.moonrises.online.
        IN      NS      ns2.apollo-exploration.online.
ns2    IN      AAAA    2001:660:4401:60a0:216:3eff:fe3c:33a5
ns2    IN      A      193.48.57.166
@      IN      A      193.48.57.166
@      IN      AAAA    2001:660:4401:60a0:216:3eff:fe3c:33a5


<syntaxhighlight lang="dns">
$include /etc/bind/keys/Kapollo-exploration.online.+008+22511.key
$TTL 86400
$include /etc/bind/keys/Kapollo-exploration.online.+008+45411.key
@  IN  SOA ns.apollo-exploration.online. admin.apollo-exploration.online. (
        1  ; Serial
        3600; Refresh
        1800; Retry
        1209600; Expire
        86400 ) ; Minimum TTL
@  IN  NS  ns.apollo-exploration.online.
@  IN  A  172.16.0.2
ns  IN  A  172.16.0.2
www IN  CNAME apollo-exploration.online.
</syntaxhighlight>
</syntaxhighlight>


Nous avons ensuite vérifié la syntaxe :
Remarque : il est utile d'incrémenter de 1 le numero de Version a chaque restart de named.
 
J'ai donc ensuite vérifié la syntaxe :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
named-checkzone apollo-exploration.online /etc/bind/zones/db.apollo-exploration.online
named-checkzone apollo-exploration.online /etc/bind/zones/db.apollo-exploration.online
</syntaxhighlight>
</syntaxhighlight>
---


==== Activation et Tests du Serveur DNS ====
==== Activation et Tests du Serveur DNS ====


Nous avons redémarré **bind9** :
J'ai redémarré '''bind9''' (on peut toujours faire cela soit en utilisant systemctl ou service)  :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
systemctl restart bind9
systemctl restart named
systemctl enable bind9
systemctl enable named
</syntaxhighlight>
</syntaxhighlight>


Nous avons effectué un premier test DNS avec **dig** :
J'ai effectué un premier test DNS avec '''dig''' :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 343 : Ligne 371 :
</syntaxhighlight>
</syntaxhighlight>


Le serveur répond correctement aux requêtes.
Le serveur répond correctement aux requêtes sur les deux machines.
[[Fichier:Image dig.png|centré|vignette|723x723px]]


---
==== Configuration et Activation de DNSSEC ====


==== Configuration et Activation de DNSSEC ====
J'ai mis en place **DNSSEC** pour signer notre zone DNS


Nous avons mis en place **DNSSEC** pour signer notre zone DNS.


##### 1️⃣ Génération des Clés DNSSEC :
1️⃣ Génération des Clés DNSSEC :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 362 : Ligne 390 :
Deux paires de clés sont générées :   
Deux paires de clés sont générées :   
- **ZSK (Zone Signing Key)**   
- **ZSK (Zone Signing Key)**   
- **KSK (Key Signing Key)**
- **KSK (Key Signing Key)**  


##### 2️⃣ Ajout des Clés DNSSEC à la Zone :
2️⃣ Ajout des Clés DNSSEC à la Zone :


Nous avons modifié `/etc/bind/zones/db.apollo-exploration.online` pour inclure les clés :
J'ai modifié `/etc/bind/zones/db.apollo-exploration.online` pour inclure les clé


<syntaxhighlight lang="dns">
<syntaxhighlight lang="dns">
$INCLUDE /etc/bind/keys/Kapollo-exploration.online.+013+12345.key
$INCLUDE /etc/bind/keys/Kapollo-exploration.online.+013+12345.key
$INCLUDE /etc/bind/keys/Kapollo-exploration.online.+013+67890.key
$INCLUDE /etc/bind/keys/Kapollo-exploration.online.+013+67890.key
</syntaxhighlight>
</syntaxhighlight>Signature de la zone :<syntaxhighlight lang="bash">
 
##### 3️⃣ Signature de la Zone :
 
<syntaxhighlight lang="bash">
dnssec-signzone -o apollo-exploration.online -k /etc/bind/keys/Kapollo-exploration.online /etc/bind/zones/db.apollo-exploration.online
dnssec-signzone -o apollo-exploration.online -k /etc/bind/keys/Kapollo-exploration.online /etc/bind/zones/db.apollo-exploration.online
</syntaxhighlight>
</syntaxhighlight>


Nous avons vérifié le bon fonctionnement avec :
J'ai vérifié le bon fonctionnement avec :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 389 : Ligne 413 :
==== Test et Publication de DNSSEC ====
==== Test et Publication de DNSSEC ====


Après la signature de la zone, nous avons redémarré **bind9** :
Après la signature de la zone, j'ai redémarré **bind9** :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 395 : Ligne 419 :
</syntaxhighlight>
</syntaxhighlight>


Nous avons testé la propagation DNS et la signature avec **DNSViz** et **DNS Checker** :   
J'ai testé la propagation DNS et la signature avec **DNSViz** et **DNS Checker** :   
- **[DNSViz](https://dnsviz.net/)** permet d’analyser les signatures DNSSEC et de vérifier si la chaîne de validation est correcte.   
- **[DNSViz](https://dnsviz.net/)** permet d’analyser les signatures DNSSEC et de vérifier si la chaîne de validation est correcte.   
- **[DNS Checker](https://dnschecker.org/)** nous a permis de vérifier la disponibilité des enregistrements A et AAAA à travers le monde.   
- **[DNS Checker](https://dnschecker.org/)** je a permis de vérifier la disponibilité des enregistrements A et AAAA à travers le monde.   


Les tests ont confirmé que la configuration était fonctionnelle.
Les tests ont confirmé que la configuration était fonctionnelle.


✅ **Le serveur DNS répond correctement aux requêtes**
✅ **Le serveur DNS répond correctement aux requêtes**  
✅ **Les enregistrements A et AAAA sont bien configurés**
 
✅ **DNSSEC est actif et validé sur DNSViz**
✅ **Les enregistrements A et AAAA sont bien configurés**  
 
✅ **DNSSEC est actif et validé sur DNSViz**  
 
✅ **La réplication de la zone fonctionne avec Moon**   
✅ **La réplication de la zone fonctionne avec Moon**   



Version du 6 mars 2025 à 23:32

Projet Virtualisation KAOUTAR EL BACHIRI - Machine Apollo 🚀

Introduction

Dans ce projet de virtualisation, j'ai mis en place une infrastructure comprenant deux machines de services et une machine mandataire, le tout orchestré avec Xen. La machine Apollo joue un rôle clé dans l'hébergement des services, tandis que Solstice assure la gestion du réseau et l'interconnexion avec l'extérieur.

Si vous souhaitez plonger plus en détail dans la configuration de Moon, la seconde machine de services, il vous suffit de cliquant sur le lien suivant : 📎 Moon.

Les prochaines sections vous guideront à travers chaque étape de cette mission. 🛰️

Création et Connexion aux Machines Virtuelles

Dans ce projet, j'ai créé deux machines de services et une machine mandataire à l'aide de l'outil Xen. Les commandes utilisées sont les suivantes :

root@capbreton:~# xen-create-image --hostname=SE4.Apollo --dhcp --bridge=pontKS --dir=/usr/local/xen --size=10GB --dist=daedalus --memory=2048M --force
root@capbreton:~# xen-create-image --hostname=SE4.Solstice --dhcp --bridge=pontKS --dir=/usr/local/xen --size=10GB --dist=daedalus --memory=2048M --force

Pour démarrer les machines, j'ai utilisé :

xen create /etc/xen/SE4.Apollo.cfg
xen create /etc/xen/SE4.Solstice.cfg

Et pour accéder aux consoles des VMs :

xen console SE4.Apollo
xen console SE4.Solstice

RESULTAT XEN LIST

root@capbreton:~# xen list
Name                                        ID   Mem VCPUs	State	Time(s)
Domain-0                                     0  3970     4     r-----   83423.2
SE4.Zeus                                    15  2048     1     -b----    3778.8
SE4.Pattes                                  16  2048     1     -b----    2954.3
SE4.Vander                                  18  2048     1     -b----    2659.5
SE4.Solstice                                39  2048     1     -b----    2560.1
SE4.Jinx                                    48  2048     1     -b----    1043.3
SE4.jeanluc                                 62  2048     1     -b----     728.4
SE4.ElMordjene                              68  2048     1     -b----     868.4
SE4.Poseidon                                82  2048     1     -b----    1334.2
SE4.Gaby                                    89  2048     1     -b----     704.1
SE4.Bree                                    90  2048     1     -b----     547.6
SE4.Desperate                               99  2048     1     -b----    3969.9
SE4.Orion                                  100  2048     1     -b----     906.5
SE4.Vi                                     109  2048     1     -b----     903.6
SE4.Rod                                    110  2048     1     -b----    1339.9
SE4.Rodrigo                                112  2048     1     -b----    2388.2
SE4.Rigo                                   113  2048     1     -b----    1390.1
SE4.Apollo                                 118  2048     1     -b----     462.7
SE4.Moon                                   119  2048     1     -b----     452.3

Liste des commandes utiles :

Fonction Commande
listes des VMs allumées xen list
Allumer la VM xen create /etc/xen/SE4.Moon.cfg
Connexion à la VM xen console SE4.Moon
Eteindre la VM xen shutdown SE4.Moon
Configuration du réseau Modification du fichier /etc/network/interfaces

Montage des Partitions /var et /home sur Apollo

Pour améliorer la gestion des données, j'ai monté les répertoires /var et /home sur des partitions LVM dédiées.

Création des Fichiers de Partition

Depuis le serveur Capbreton, j'ai créé les fichiers de partitions dans /dev/virtual :

root@capbreton:/dev/virtual# ls
SE4.Apollo.var  SE4.Apollo.home  SE4.Moon.var  SE4.Moon.home

Modification des Fichiers de Configuration

J'ai modifié les fichiers .cfg pour attacher les partitions LVM aux machines :

disk = [
    'file:/usr/local/xen/domains/SE4.Apollo/disk.img,xvda2,w',
    'file:/usr/local/xen/domains/SE4.Apollo/swap.img,xvda1,w',
    'phy:/dev/virtual/SE4.Apollo.home,xvdb,w',
    'phy:/dev/virtual/SE4.Apollo.var,xvdc,w',
]

Une configuration similaire a été appliquée à Moon.

Formatage et Montage

Les partitions ont été formatées et montées avec les commandes suivantes :

mkfs -t ext4 /dev/xvdb1
mount /dev/xvdb1 /mnt
mv /var/* /mnt
umount /mnt
mount -a

Pour /home :

mkfs -t ext4 /dev/xvda3
mount -a

Enfin, jai modifié le fichier /etc/fstab pour un montage automatique au démarrage.

---

Configuration Réseau

Chaque machine a été configurée avec des adresses IPv4 fixes sur un réseau privé et une configuration automatique pour IPv6.

Machines de Services (Apollo et Moon)

Exemple de configuration dans /etc/network/interfaces pour Apollo :

auto eth0
iface eth0 inet static
    address 172.16.0.2/24
    gateway 172.16.0.1

iface eth0 inet6 auto

Moon utilise une configuration similaire avec l’adresse 172.16.0.3.

Machine Mandataire (Solstice)

La machine mandataire agit comme passerelle IPv4 pour les machines de services. Voici sa configuration réseau :

auto eth0
iface eth0 inet static
    address 172.16.0.1/24

iface eth0 inet6 auto

auto eth1
iface eth1 inet static
    address 193.48.57.166/27
    gateway 193.48.57.161

---

Séance Improvisée du 4 Février

Avec les personnes présentes lors de cette séance, nous avons configuré le routeur pour y ajouter une option pour le mode OSPF. J'ai donc pu suivre les étapes.

Configuration des VLANs

Pendant cette séance, nous avons configuré plusieurs VLANs nécessaires à l'interconnexion des machines et au respect des contraintes du TP :

- VLAN 1 : Service.

- VLAN 50 : Machines Xen.

- VLAN X : Réseaux privés (1 par étudiant).

- VLAN 530 : Connexion au SR52 pour l'accès à Internet.

Les adresses de réseau utilisées, sont des adresses privées en 10.0.0.0 que nous avons adapté : 10.0.100+Numero.0/24 pour chaque machine de service, soit chaque étudiant.

Configuration SSH

Nous avons restreint l'accès SSH au routeur en autorisant uniquement les machines du réseau via une access-list. Voici les commandes utilisées :

ip access-list standard 10
10 permit 193.48.57.160 0.0.0.15
20 deny any

line vty 0 4
 access-class 10 in
 password <mot_de_passe_de_promo>
 transport input ssh

La connexion SSH se fait avec :

ssh admin@193.48.57.161 -o KexAlgorithms=diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1 -o HostKeyAlgorithms=ssh-rsa

Pour tester le ssh nous avons utiliser la commande touch fichier pour créer un fichier sur la machine mandataire depuis la machine d'un autre binôme.

RESULTAT TOUCH

Configuration du Routeur avec OSPF

Le protocole OSPF a été configuré pour partager les tables de routage avec le SR52. Voici un extrait de la configuration :

router ospf 1
 router-id 10.0.101.1
 summary-address 193.48.57.160 255.255.255.240
 redistribute static route-map ospf
 redistribute connected
 network 193.48.57.160 0.0.0.15 area 10
 default-information originate

Les routes OSPF sont bien détectées, comme visible dans les résultats de show ip route.

Connexion Internet

Avec OSPF actif, la machine mandataire peut accéder à Internet. Voici le test de ping :

root@SE4.Solstice:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=4.05 ms

RESULTAT - CAPTURE ERCRAN A METTRE

Redirection de port

Nous avons modifié le fichier d'autorisation ssh de root :

en modifiant le fichier suivant /etc/ssh/sshd_config :

PermitRootLogin yes

Il faut ensuite redémarrer le serveur ssh :

root@Solstice:/etc/ssh# /etc/init.d/ssh restart

Redirection du port 2202 de la mandataire vers Apollo avec nftables:

nft add table ip NAT
nft add chain NAT PREROUTING { type nat hook prerouting priority 0\; }
nft add rule NAT PREROUTING  tcp dport 2202 dnat to 172.16.0.2:22

---

Mise en Place d’un Serveur DNS

J'ai configuré un serveur DNS pour gérer les noms de domaine associés à nos machines virtuelles : apollo-exploration.online et moonrises.online.

La première chose à faire est de se reconnecter au registrar de domaine Gandi. Je y avions déjà au préalable commandé nos noms de domaine pour Apollo et Moon. Après connexion, je je rendons dans l'onglet Domaine et je suivons les instructions pour je procurer le certificat pour nos deux machines. Après avoir suivi le tutoriel, je obtenons deux fichiers :

- myserver.key : la clé privée du domaine

- server.csr : la demande de signature du certificat

Je utiliserons ces fichiers pour configurer DNSSEC et sécuriser notre zone DNS.

Configuration de bind9

J'ai installé bind9 et configuré l’interface réseau :

apt install bind9 -y

j'ai vérifier les version de bind9 afin d'éviter certains problèmes par la suite, et celle ci doit être supérieure a la version 9.16, et c'est bien le cas.

root@Apollo:~# named -v
BIND 9.18.33-1~deb12u2-Debian (Extended Support Version) <id:>

Ajout de l'interface eth1 pour gérer l'IPv6 dans `/etc/network/interfaces` :

auto eth1
iface eth1 inet6 auto

Redémarrage du service pour appliquer les modifications en utilisant une des deux commandes suivantes :

systemctl restart networking
service networking restart

Configuration du Serveur DNS Maître et Secondaire

Sur Apollo, j'ai configuré les zones DNS dans `/etc/bind/named.conf.local` :

zone "apollo-exploration.online" {
	type master;
	file "/etc/bind/db.apollo-exploration.online";
	key-directory "/etc/bind/keys";
        dnssec-policy "dnspol"; # Active DNSSEC avec la politique "dnspol"
        inline-signing yes;
	allow-transfer{secondaries;}; # filtrer les secondaires
	also-notify{hiddensecondaries;}; # secondaires caches
	notify yes;
};

acl "secondaries" {
	2001:660:4401:60a0:216:3eff:fe6f:f548; # Adresse IPv6 de Moon (serveur secondaire)
	2001:660:4401:60a0:216:3eff:fe29:880f; # Adresse IPv6 de Solstice 
};

masters "hiddensecondaries" {
	2001:660:4401:60a0:216:3eff:fe29:880f; 
};

zone "moonrises.online" {
	type slave;
	file "/etc/bind/backup/db.moonrises.online"; 
	masters{2001:660:4401:60a0:216:3eff:fe6f:f548;}; 
};

La machine Apollo est le serveur DNS principal, tandis que Moon sert de DNS secondaire et récupère la zone depuis Apollo.

Fichier de Zone pour Apollo

J'ai créé `/etc/bind/zones/db.apollo-exploration.online` :

$TTL 200
@ IN SOA ns2.apollo-exploration.online. admin.apollo-exploration.online. (
        3298267245      ;Version
        7200            ;Refresh
        3600            ;Retry
        1209600         ;Expire
        259200 )        ;Minimum TTL

;
        IN      NS      ns1.moonrises.online.
        IN      NS      ns2.apollo-exploration.online.
ns2     IN      AAAA    2001:660:4401:60a0:216:3eff:fe3c:33a5 
ns2     IN      A       193.48.57.166
@       IN      A       193.48.57.166
@       IN      AAAA    2001:660:4401:60a0:216:3eff:fe3c:33a5 

$include /etc/bind/keys/Kapollo-exploration.online.+008+22511.key
$include /etc/bind/keys/Kapollo-exploration.online.+008+45411.key

Remarque : il est utile d'incrémenter de 1 le numero de Version a chaque restart de named.

J'ai donc ensuite vérifié la syntaxe :

named-checkzone apollo-exploration.online /etc/bind/zones/db.apollo-exploration.online

Activation et Tests du Serveur DNS

J'ai redémarré bind9 (on peut toujours faire cela soit en utilisant systemctl ou service)  :

systemctl restart named
systemctl enable named

J'ai effectué un premier test DNS avec dig :

dig @localhost apollo-exploration.online

Le serveur répond correctement aux requêtes sur les deux machines.

Image dig.png

Configuration et Activation de DNSSEC

J'ai mis en place **DNSSEC** pour signer notre zone DNS


1️⃣ Génération des Clés DNSSEC :

mkdir -p /etc/bind/keys
cd /etc/bind/keys
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE apollo-exploration.online
dnssec-keygen -a RSASHA256 -b 1024 -n ZONE -f KSK apollo-exploration.online

Deux paires de clés sont générées : - **ZSK (Zone Signing Key)** - **KSK (Key Signing Key)**

2️⃣ Ajout des Clés DNSSEC à la Zone :

J'ai modifié `/etc/bind/zones/db.apollo-exploration.online` pour inclure les clé

$INCLUDE /etc/bind/keys/Kapollo-exploration.online.+013+12345.key
$INCLUDE /etc/bind/keys/Kapollo-exploration.online.+013+67890.key

Signature de la zone :

dnssec-signzone -o apollo-exploration.online -k /etc/bind/keys/Kapollo-exploration.online /etc/bind/zones/db.apollo-exploration.online

J'ai vérifié le bon fonctionnement avec :

named-checkzone apollo-exploration.online /etc/bind/zones/db.apollo-exploration.online.signed

---

Test et Publication de DNSSEC

Après la signature de la zone, j'ai redémarré **bind9** :

systemctl restart bind9

J'ai testé la propagation DNS et la signature avec **DNSViz** et **DNS Checker** : - **[DNSViz](https://dnsviz.net/)** permet d’analyser les signatures DNSSEC et de vérifier si la chaîne de validation est correcte. - **[DNS Checker](https://dnschecker.org/)** je a permis de vérifier la disponibilité des enregistrements A et AAAA à travers le monde.

Les tests ont confirmé que la configuration était fonctionnelle.

✅ **Le serveur DNS répond correctement aux requêtes**

✅ **Les enregistrements A et AAAA sont bien configurés**

✅ **DNSSEC est actif et validé sur DNSViz**

✅ **La réplication de la zone fonctionne avec Moon**

Cette configuration assure une **résolution de noms fiable et sécurisée**, avec **DNSSEC** garantissant l’intégrité des enregistrements DNS.

Prochaine étape : **finaliser l’interconnexion avec Internet et peaufiner la gestion IPv6**.