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

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
(42 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
= Rapport de TP - Kaoutar EL-BACHIRI =
== Projet Virtualisation KAOUTAR EL BACHIRI - Machine Apollo 🚀 ==


== Introduction ==
===Introduction===
Ce TP a pour but de mettre en place un environnement de virtualisation en utilisant **Xen**. Nous avons configuré une machine de service (**SE4.Apollo**) et une machine mandataire (**SE4.Solstice**) avec des adresses IP fixes et un routage réseau adapté.


---
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. 
 
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]]. 
 
''Les prochaines sections vous guideront à travers chaque étape de cette mission.'' 🛰️


= Machine Virtuelle SE4.Apollo =
=== Création et Connexion aux Machines Virtuelles ===


== Création de la machine virtuelle ==
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 un premier temps, nous avons créé la machine virtuelle **SE4.Apollo** avec la commande suivante :
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
xen-create-image --hostname=SE4.Apollo --dhcp --dir=/usr/local/xen --size=10G --dist=daedalus --memory=2G --bridge=pontKS
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
</syntaxhighlight>
</syntaxhighlight>


Une fois la VM créée, nous l’avons démarrée avec :
Pour démarrer les machines, nous avons utilisé :
 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
xen create /etc/xen/SE4.Apollo.cfg
xen create /etc/xen/SE4.Apollo.cfg
xen create /etc/xen/SE4.Solstice.cfg
</syntaxhighlight>
</syntaxhighlight>


Et pour s’y connecter :
Et pour accéder aux consoles des VMs :
 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
xen console SE4.Apollo
xen console SE4.Apollo
xen console SE4.Solstice
</syntaxhighlight>
</syntaxhighlight>
RESULTAT XEN LIST


---
---


== Configuration du stockage avec LVM ==
=== Montage des Partitions /var et /home ===
 
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.
 
==== Création des Fichiers de Partition ====


<u>Objectif</u> : Déplacer <code>/var</code> et <code>/home</code> vers les nouvelles partitions LVM et les monter automatiquement.
Depuis le serveur Capbreton, nous avons créé les fichiers de partitions dans <code>/dev/virtual</code> :


=== Création des partitions LVM ===
1. Création des volumes logiques :
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
lvcreate -L10G -n var apollo_vg
root@capbreton:/dev/virtual# ls
lvcreate -L10G -n home apollo_vg
SE4.Apollo.var  SE4.Apollo.home  SE4.Moon.var SE4.Moon.home
</syntaxhighlight>
</syntaxhighlight>


2. Formatage des partitions en **ext4** :
==== Modification des Fichiers de Configuration ====
 
Nous avons modifié les fichiers <code>.cfg</code> pour attacher les partitions LVM aux machines :
 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
mkfs.ext4 /dev/apollo_vg/var
disk = [
mkfs.ext4 /dev/apollo_vg/home
    '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',
]
</syntaxhighlight>
</syntaxhighlight>


---
Une configuration similaire a été appliquée à [[Atelier SysRes SE4 2024/2025 E1|Moon]].
 
==== Formatage et Montage ====
 
Les partitions ont été formatées et montées avec les commandes suivantes :


=== Montage des partitions et modification de `/etc/fstab` ===
<u>Montage temporaire :</u>
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
mount /dev/apollo_vg/var /mnt
mkfs -t ext4 /dev/xvdb1
mount /dev/xvdb1 /mnt
mv /var/* /mnt
mv /var/* /mnt
umount /mnt
umount /mnt
mount -a
</syntaxhighlight>
</syntaxhighlight>


<u>Ajout des partitions dans `/etc/fstab` :</u>
Pour <code>/home</code> :
<syntaxhighlight lang="plaintext">
/dev/apollo_vg/var  /var  ext4 defaults 0 2
/dev/apollo_vg/home /home ext4 defaults 0 2
</syntaxhighlight>


<u>Rechargement des partitions :</u>
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
mkfs -t ext4 /dev/xvda3
mount -a
mount -a
</syntaxhighlight>
</syntaxhighlight>


<u>Vérification des partitions :</u>
Enfin, nous avons modifié le fichier <code>/etc/fstab</code> pour un montage automatique au démarrage.
<syntaxhighlight lang="bash">
df -h
</syntaxhighlight>


---
---


== Configuration du réseau sur SE4.Apollo ==
=== 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) ====


L’objectif ici est d’attribuer **une adresse IPv4 fixe** et de **permettre l’obtention automatique d’une IPv6**.
Exemple de configuration dans <code>/etc/network/interfaces</code> pour Apollo :


<u>Modification du fichier `/etc/network/interfaces` :</u>
<syntaxhighlight lang="bash">
<syntaxhighlight lang="plaintext">
auto eth0
auto eth0
iface eth0 inet static
iface eth0 inet static
     address 172.16.0.2
     address 172.16.0.2/24
    netmask 255.255.255.0
     gateway 172.16.0.1
     gateway 172.16.0.1


Ligne 87 : Ligne 104 :
</syntaxhighlight>
</syntaxhighlight>


<u>Rechargement de la configuration réseau :</u>
[[Atelier SysRes SE4 2024/2025 E1|Moon]] utilise une configuration similaire avec l’adresse <code>172.16.0.3</code>.
 
==== Machine Mandataire (Solstice) ====
 
La machine mandataire agit comme passerelle IPv4 pour les machines de services. Voici sa configuration réseau :
 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
systemctl restart networking
auto eth0
ip a
iface eth0 inet static
ping 172.16.0.1
    address 172.16.0.1/24
ping6 google.com
 
iface eth0 inet6 auto
 
auto eth1
iface eth1 inet static
    address 193.48.57.166/27
    gateway 193.48.57.161
</syntaxhighlight>
</syntaxhighlight>


---
---


= Configuration de la machine mandataire SE4.Solstice =
=== 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 :
 
- <code>VLAN 1</code> : Service.
 
- <code>VLAN 50</code> : Machines Xen.
 
- <code>VLAN X</code> : Réseaux privés (1 par étudiant).
 
- <code>VLAN 530</code> : Connexion au SR52 pour l'accès à Internet.


== Configuration du réseau sur SE4.Solstice ==
Les adresses de réseau utilisées, sont des adresses privées en <code>10.0.0.0</code> que nous avons adapté : <code>10.0.100+Numero.0/24</code> pour chaque machine de service, soit chaque étudiant.


<u>Objectif :</u> 
==== Configuration SSH ====
✔ Attribuer **une IP fixe sur le réseau privé (172.16.0.1)** 
✔ Attribuer **une IP fixe routée (193.48.57.166/27)** 
✔ Activer le **NAT (Masquerade)** pour permettre aux machines Apollo et Moon de sortir sur Internet 


<u>Modification du fichier `/etc/network/interfaces` :</u>
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 :
<syntaxhighlight lang="plaintext">
# Interface principale - réseau routé vers l'extérieur (Internet)
auto eth0
iface eth0 inet static
    address 193.48.57.166
    netmask 255.255.255.224  # /27
    gateway 193.48.57.161    # Passerelle du réseau routé
    dns-nameservers 8.8.8.8 1.1.1.1  # DNS Google & Cloudflare


# Interface privée - réseau interne des machines de service
<syntaxhighlight lang="bash">
auto eth1
ip access-list standard 10
iface eth1 inet static
10 permit 193.48.57.160 0.0.0.15
    address 172.16.0.1
20 deny any
    netmask 255.255.255.0


# IPv6 automatique via SLAAC
line vty 0 4
iface eth0 inet6 auto
access-class 10 in
password <mot_de_passe_de_promo>
transport input ssh
</syntaxhighlight>
</syntaxhighlight>


<u>Application de la configuration :</u>
La connexion SSH se fait avec :
 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
systemctl restart networking
ssh admin@193.48.57.161 -o KexAlgorithms=diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1 -o HostKeyAlgorithms=ssh-rsa
ip a
</syntaxhighlight>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.
ping 172.16.0.2
 
ping -c 4 8.8.8.8
RESULTAT TOUCH
</syntaxhighlight>


---
==== Configuration du Routeur avec OSPF ====


== Activation du NAT pour la sortie Internet ==
Le protocole OSPF a été configuré pour partager les tables de routage avec le SR52. Voici un extrait de la configuration :


<u>1. Activer le transfert IP sur Solstice :</u>
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
sysctl -w net.ipv4.ip_forward=1
router ospf 1
echo "net.ipv4.ip_forward = 1" | tee -a /etc/sysctl.conf
router-id 10.0.101.1
sysctl -p
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
</syntaxhighlight>
</syntaxhighlight>


<u>2. Ajouter une règle de NAT avec `iptables` :</u>
Les routes OSPF sont bien détectées, comme visible dans les résultats de <code>show ip route</code>.
 
==== Connexion Internet ====
 
Avec OSPF actif, la machine mandataire peut accéder à Internet. Voici le test de ping :
 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o eth0 -j MASQUERADE
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
</syntaxhighlight>
</syntaxhighlight>


<u>3. Sauvegarder la configuration `iptables` :</u>
RESULTAT - CAPTURE ERCRAN A METTRE
 
==== Redirection de port ====
Nous avons modifié le fichier d'autorisation de ssh par <code>/etc/ssh/sshd_config</code> :
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 Poseidon 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 ===
 
Nous avons 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 a 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 nom de domaines pour Apollo et [[Atelier SysRes SE4 2024/2025 E1|Moon]]. Après connexion, nous nous rendons dans l'onglet Domaine et nous suivons les instruction pour se procurer le certificat pour nos deux machines. Après avoir suivi le tutoriel nous obtenons deux fichier: '''myserver.key''' et '''server.csr''' qui sont le certificat et la clé de nos domaines.
 
==== Configuration du Serveur DNS Maître et Secondaire ====
 
Sur Apollo, nous avons configuré les zones DNS dans <code>/etc/bind/named.conf.local</code> :
 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
iptables-save | tee /etc/iptables/rules.v4
zone "apollo-exploration.online" {
    type primary;
    file "/etc/bind/zones/apollo-exploration.online";
};
 
 
zone "moonrises.online" {
    type secondary;
    file "/etc/bind/backup/moonrises.online";
    primaries { 172.16.0.2; };
};
</syntaxhighlight>
</syntaxhighlight>


<u>4. Vérification de la connectivité :</u>
==== Exemple de Fichiers de Zone ___A TESTER___ ====
Depuis **Apollo et Moon** :
 
<syntaxhighlight lang="bash">
Fichier <code>/etc/bind/zones/apollo-exploration.online.</code>:
ping -c 4 google.com
 
<syntaxhighlight lang="dns">
$TTL 86400
@  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
</syntaxhighlight>
</syntaxhighlight>


Si l’accès ne fonctionne pas, ajouter un serveur DNS :
Un fichier similaire a été créé pour moonrises.online.
<syntaxhighlight lang="bash">
echo "nameserver 8.8.8.8" | tee /etc/resolv.conf
</syntaxhighlight>


---
---


= **Conclusion** =
Les configurations DNS et réseau permettrons un fonctionnement stable des machines et respectent les exigences du sujet.


Pour le moment, nous avons :
Prochaine étapes : '''''<u>finir le serveur DNS et Interconnexion avec Internet (IPv6)</u>'''''.
✔ **Créé et configuré la machine de service SE4.Apollo** 
✔ **Créé et configuré la machine mandataire SE4.Solstice** 
✔ **Monté et formaté les partitions LVM pour `/var` et `/home`** 
✔ **Attribué des adresses IP fixes en IPv4 et configuré l’IPv6 automatique**

Version actuelle datée du 5 février 2025 à 22:23

Projet Virtualisation KAOUTAR EL BACHIRI - Machine Apollo 🚀

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.

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, nous avons 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, nous avons 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

---

Montage des Partitions /var et /home

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

Création des Fichiers de Partition

Depuis le serveur Capbreton, nous avons 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

Nous avons 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, nous avons 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 de ssh par /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 Poseidon 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

Nous avons 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 a faire est de se reconnecter au registrar de domaine Gandi. Nous y avions déjà au préalable commandé nos nom de domaines pour Apollo et Moon. Après connexion, nous nous rendons dans l'onglet Domaine et nous suivons les instruction pour se procurer le certificat pour nos deux machines. Après avoir suivi le tutoriel nous obtenons deux fichier: myserver.key et server.csr qui sont le certificat et la clé de nos domaines.

Configuration du Serveur DNS Maître et Secondaire

Sur Apollo, nous avons configuré les zones DNS dans /etc/bind/named.conf.local :

zone "apollo-exploration.online" {
    type primary;
    file "/etc/bind/zones/apollo-exploration.online";
};


zone "moonrises.online" {
    type secondary;
    file "/etc/bind/backup/moonrises.online";
    primaries { 172.16.0.2; };
};

Exemple de Fichiers de Zone ___A TESTER___

Fichier /etc/bind/zones/apollo-exploration.online.:

$TTL 86400
@   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

Un fichier similaire a été créé pour moonrises.online.

---

Les configurations DNS et réseau permettrons un fonctionnement stable des machines et respectent les exigences du sujet.

Prochaine étapes : finir le serveur DNS et Interconnexion avec Internet (IPv6).