« 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
Ligne 1 : Ligne 1 :
= Projet Virtualisation - Kaoutar EL BACHIRI =
== Projet Virtualisation KAOUTAR EL-BACHIRI ==


== 1. Introduction ==
=== Création et Connexion aux Machines Virtuelles ===
Dans ce TP, nous avons mis en place une infrastructure de **virtualisation sous Xen** sur le serveur **Capbreton**. 
L’objectif est de :
* Créer et configurer plusieurs machines virtuelles (VM) : **Apollo, Moon, Solstice**.
* Séparer les espaces de stockage avec **LVM** et monter `/var` et `/home` sur des partitions dédiées.
* Configurer l’adressage réseau IPv4 et IPv6 en respectant l’architecture réseau.
* Mettre en place une **machine mandataire (Solstice)** pour assurer le routage et l’accès Internet.
* Configurer le routeur de promotion et les VLAN pour permettre la communication et l’accès Internet.
* Mettre en place le NAT et les règles de redirection de ports pour assurer l’accessibilité des services.


Toutes les manipulations ont été effectuées en **SSH** sur Capbreton :
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 :
<syntaxhighlight lang="bash">
ssh root@capbreton.plil.info
</syntaxhighlight>
 
== 2. Création des machines virtuelles ==
=== 2.1 Commande de création des VM ===
Nous avons utilisé la commande `xen-create-image` pour créer nos VMs :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="shell">
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
xen-create-image --hostname=SE4.Moon --dhcp --dir=/usr/local/xen --size=10G --dist=daedalus --memory=2G --bridge=pontKS
root@capbreton:~# xen-create-image --hostname=SE4.Moon --dhcp --bridge=pontKS --dir=/usr/local/xen --size=10GB --dist=daedalus --memory=2048M --force
xen-create-image --hostname=SE4.Solstice --dhcp --dir=/usr/local/xen --size=10G --dist=daedalus --memory=2G --bridge=pontKS
root@capbreton:~# xen-create-image --hostname=SE4.Solstice --dhcp --bridge=pontKS --dir=/usr/local/xen --size=10GB --dist=daedalus --memory=2048M --force
</syntaxhighlight>
</syntaxhighlight>


=== 2.2 Lancement et connexion aux VM ===
Pour démarrer les machines, nous avons utilisé :
Une fois les VMs créées, nous les avons démarrées et avons accédé aux consoles :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="shell">
xen create /etc/xen/SE4.Apollo.cfg
xen create /etc/xen/SE4.Apollo.cfg
xen create /etc/xen/SE4.Moon.cfg
xen create /etc/xen/SE4.Moon.cfg
xen create /etc/xen/SE4.Solstice.cfg
xen create /etc/xen/SE4.Solstice.cfg
</syntaxhighlight>


Et pour accéder aux consoles des VMs :
<syntaxhighlight lang="shell">
xen console SE4.Apollo
xen console SE4.Apollo
xen console SE4.Moon
xen console SE4.Moon
Ligne 39 : Ligne 27 :
</syntaxhighlight>
</syntaxhighlight>


== 3. Configuration du stockage et montage de /var et /home ==
---
=== 3.1 Objectif ===
 
Nous avons déplacé les répertoires `/var` et `/home` vers des partitions dédiées avec **LVM** pour optimiser la gestion du stockage.
=== 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.


=== 3.2 Création des partitions LVM ===
==== Création des Fichiers de Partition ====
Nous avons initialisé **LVM** sur chaque VM :


'''Sur Apollo :'''
Depuis le serveur Capbreton, nous avons créé les fichiers de partitions dans `/dev/virtual` :
<syntaxhighlight lang="bash">
sudo lvcreate -L10G -n var apollo_vg
sudo lvcreate -L10G -n home apollo_vg
</syntaxhighlight>


'''Sur Moon :'''
<syntaxhighlight lang="shell">
<syntaxhighlight lang="bash">
root@capbreton:/dev/virtual# ls
sudo lvcreate -L10G -n var moon_vg
SE4.Apollo.var SE4.Apollo.home  SE4.Moon.var  SE4.Moon.home
sudo lvcreate -L10G -n home moon_vg
</syntaxhighlight>
</syntaxhighlight>


=== 3.3 Formatage des partitions ===
==== Modification des Fichiers de Configuration ====
Nous avons formaté les volumes en **ext4** :


<syntaxhighlight lang="bash">
Nous avons modifié les fichiers `.cfg` pour attacher les partitions LVM aux machines :
sudo mkfs.ext4 /dev/apollo_vg/var
sudo mkfs.ext4 /dev/apollo_vg/home


sudo mkfs.ext4 /dev/moon_vg/var
<syntaxhighlight lang="shell">
sudo mkfs.ext4 /dev/moon_vg/home
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,xvda3,w',
    'phy:/dev/virtual/SE4.Apollo.var,xvdb1,w',
]
</syntaxhighlight>
</syntaxhighlight>


=== 3.4 Ajout dans /etc/fstab pour montage automatique ===
Une configuration similaire a été appliquée à **Moon**.
'''Sur Apollo :'''
 
<syntaxhighlight lang="plaintext">
==== Formatage et Montage ====
/dev/apollo_vg/var  /var  ext4 defaults 0 2
/dev/apollo_vg/home  /home  ext4 defaults 0 2
</syntaxhighlight>


'''Sur Moon :'''
Les partitions ont été formatées et montées avec les commandes suivantes :
<syntaxhighlight lang="plaintext">
/dev/moon_vg/var  /var  ext4 defaults 0 2
/dev/moon_vg/home  /home  ext4 defaults 0 2
</syntaxhighlight>


=== 3.5 Vérification des montages ===
<syntaxhighlight lang="shell">
Nous avons testé le montage automatique :
mkfs -t ext4 /dev/xvdb1
<syntaxhighlight lang="bash">
mount /dev/xvdb1 /mnt
sudo mount -a
mv /var/* /mnt
df -h
umount /mnt
mount -a
</syntaxhighlight>
</syntaxhighlight>


---
Pour `/home` :


== 4. Configuration réseau ==
<syntaxhighlight lang="shell">
=== 4.1 Configuration des VLAN et du Routeur ===
mkfs -t ext4 /dev/xvda3
Afin d’assurer la connectivité des machines virtuelles et leur accès à Internet, nous avons participé à la configuration du routeur de la promotion. 
mount -a
</syntaxhighlight>


'''VLAN mis en place :'''
Enfin, nous avons modifié le fichier `/etc/fstab` pour un montage automatique au démarrage.
* **VLAN 1** : Réseau de service
* **VLAN 50** : VLAN regroupant toutes les machines XEN
* **VLAN X (100+n)** : Réseaux individuels pour chaque machine de service
* **VLAN 530** : Interconnexion avec SR52 de l’école pour la sortie Internet.


Nous avons affiché la configuration des VLANs avec :
---
<syntaxhighlight lang="bash">
show run
</syntaxhighlight>


Après plusieurs ajustements, la configuration a été modifiée pour respecter le cahier des charges, notamment en **corrigeant le routage IPv4**.
=== Configuration Réseau ===


=== 4.2 Configuration du SSH sur le routeur ===
Chaque machine a été configurée avec des adresses IPv4 fixes sur un réseau privé et une configuration automatique pour IPv6.
Pour sécuriser l’accès SSH, nous avons créé une **access-list** qui accepte uniquement les connexions depuis notre réseau :


<syntaxhighlight lang="plaintext">
==== Machines de Services (Apollo et Moon) ====
access-list 10 permit 193.48.57.160 0.0.0.15
access-list 10 deny any
</syntaxhighlight>


Puis, nous avons appliqué cette access-list à la **line vty** pour filtrer les connexions SSH :
Exemple de configuration dans `/etc/network/interfaces` pour Apollo :


<syntaxhighlight lang="plaintext">
<syntaxhighlight lang="shell">
line vty 0 15
auto eth0
  access-class 10 in
iface eth0 inet static
</syntaxhighlight>
    address 172.16.0.2
    netmask 255.255.255.0
    gateway 172.16.0.1


Connexion en SSH :
iface eth0 inet6 auto
<syntaxhighlight lang="bash">
ssh admin@193.48.57.161 -o KexAlgorithms=diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1 -o HostKeyAlgorithms=ssh-rsa
</syntaxhighlight>
</syntaxhighlight>


=== 4.3 Mise en place du routage OSPF ===
Moon utilise une configuration similaire avec l’adresse `172.16.0.3`.
Le routeur utilise **OSPF** pour échanger les tables de routage avec **SR52** :
<syntaxhighlight lang="plaintext">
router ospf 1
  network 193.48.57.160 0.0.0.15 area 10
  summary-address 172.16.0.0 255.255.255.0 not-advertise
</syntaxhighlight>


Après cette configuration, nous avons vérifié que le routeur pouvait ping **Google**.
==== Machine Mandataire (Solstice) ====
 
---


== 5. Configuration de la machine mandataire (Solstice) ==
La machine mandataire agit comme passerelle IPv4 pour les machines de services. Voici sa configuration réseau :
=== 5.1 Configuration réseau ===
Nous avons défini les interfaces réseau :


<syntaxhighlight lang="plaintext">
<syntaxhighlight lang="shell">
# Interface principale (Internet)
auto eth0
auto eth0
iface eth0 inet static
iface eth0 inet static
    address 172.16.0.1
    netmask 255.255.255.0
iface eth0 inet6 auto
auto eth1
iface eth1 inet static
     address 193.48.57.166
     address 193.48.57.166
     netmask 255.255.255.224
     netmask 255.255.255.224
     gateway 193.48.57.161
     gateway 193.48.57.161
    dns-nameservers 8.8.8.8 1.1.1.1
</syntaxhighlight>
 
---
 
=== 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**.
 
==== Configuration du Serveur DNS Maître ====


iface eth0 inet6 auto
Sur Apollo, nous avons configuré les zones DNS dans `/etc/bind/named.conf.local` :
 
<syntaxhighlight lang="shell">
zone "apollo-exploration.online" {
    type primary;
    file "/etc/bind/zones/db.apollo-exploration.online";
    allow-transfer { 172.16.0.3; };
    also-notify { 172.16.0.3; };
};


# Interface privée pour les machines de services
zone "moonrises.online" {
auto eth1
    type primary;
iface eth1 inet static
    file "/etc/bind/zones/db.moonrises.online";
     address 172.16.0.1
     allow-transfer { 172.16.0.3; };
     netmask 255.255.255.0
     also-notify { 172.16.0.3; };
};
</syntaxhighlight>
</syntaxhighlight>


Redémarrage du réseau :
==== Configuration du Serveur DNS Secondaire ====
<syntaxhighlight lang="bash">
 
sudo systemctl restart networking
Sur Moon, le serveur DNS est configuré comme secondaire. Voici le fichier `/etc/bind/named.conf.local` :
 
<syntaxhighlight lang="shell">
zone "apollo-exploration.online" {
    type secondary;
    file "/etc/bind/backup/db.apollo-exploration.online";
    primaries { 172.16.0.2; };
};
 
zone "moonrises.online" {
    type secondary;
    file "/etc/bind/backup/db.moonrises.online";
    primaries { 172.16.0.2; };
};
</syntaxhighlight>
</syntaxhighlight>


=== 5.2 Configuration SSH ===
==== Exemple de Fichiers de Zone ====
Nous avons modifié le fichier `/etc/ssh/sshd_config` pour autoriser la connexion SSH root :
 
<syntaxhighlight lang="plaintext">
Fichier `/etc/bind/zones/db.apollo-exploration.online` :
PermitRootLogin yes
 
<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>
Puis, nous avons redémarré SSH :
 
<syntaxhighlight lang="bash">
Un fichier similaire a été créé pour **moonrises.online**.
sudo systemctl restart ssh
 
---
 
=== Test Internet et Redirection de Ports ===
 
Nous avons vérifié la connectivité Internet sur la machine mandataire avec un ping vers Google :
 
<syntaxhighlight lang="shell">
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>


=== 5.3 Redirection de ports avec nftables ===
Une redirection de port a été configurée pour permettre l'accès SSH depuis la machine mandataire vers Apollo :
Pour permettre l’accès SSH via la machine mandataire, nous avons mis en place une redirection de ports :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="shell">
nft add table ip NAT
nft add table ip NAT
nft add chain NAT PREROUTING { type nat hook prerouting priority 0\; }
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
nft add rule NAT PREROUTING tcp dport 2201 dnat to 172.16.0.2:22
</syntaxhighlight>
</syntaxhighlight>


---
---


== 6. Prochaines étapes ==
Les configurations réalisées garantissent un fonctionnement stable et conforme aux objectifs du projet. Les services DNS et réseau sont fonctionnels.
Nous avons maintenant un accès Internet et une configuration réseau fonctionnelle.
Les prochaines étapes incluent :
* **Installation des services** : Apache2, Bind9.
* **Mise en place du serveur DNS et du proxy inverse**.
* **Tests de connectivité et routage avancé**.

Version du 5 février 2025 à 20:56

Projet Virtualisation KAOUTAR EL-BACHIRI

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.Moon --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.Moon.cfg
xen create /etc/xen/SE4.Solstice.cfg

Et pour accéder aux consoles des VMs :

xen console SE4.Apollo
xen console SE4.Moon
xen console SE4.Solstice

---

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,xvda3,w',
    'phy:/dev/virtual/SE4.Apollo.var,xvdb1,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
    netmask 255.255.255.0
    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
    netmask 255.255.255.0

iface eth0 inet6 auto

auto eth1
iface eth1 inet static
    address 193.48.57.166
    netmask 255.255.255.224
    gateway 193.48.57.161

---

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**.

Configuration du Serveur DNS Maître

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

zone "apollo-exploration.online" {
    type primary;
    file "/etc/bind/zones/db.apollo-exploration.online";
    allow-transfer { 172.16.0.3; };
    also-notify { 172.16.0.3; };
};

zone "moonrises.online" {
    type primary;
    file "/etc/bind/zones/db.moonrises.online";
    allow-transfer { 172.16.0.3; };
    also-notify { 172.16.0.3; };
};

Configuration du Serveur DNS Secondaire

Sur Moon, le serveur DNS est configuré comme secondaire. Voici le fichier `/etc/bind/named.conf.local` :

zone "apollo-exploration.online" {
    type secondary;
    file "/etc/bind/backup/db.apollo-exploration.online";
    primaries { 172.16.0.2; };
};

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

Exemple de Fichiers de Zone

Fichier `/etc/bind/zones/db.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**.

---

Test Internet et Redirection de Ports

Nous avons vérifié la connectivité Internet sur la machine mandataire avec un ping vers Google :

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

Une redirection de port a été configurée pour permettre l'accès SSH depuis la machine mandataire vers Apollo :

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

---

Les configurations réalisées garantissent un fonctionnement stable et conforme aux objectifs du projet. Les services DNS et réseau sont fonctionnels.