Atelier SysRes SE4 2024/2025 E8

De wiki-se.plil.fr
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Création et Configuration des Machines Virtuelles sous Xen

1. Introduction

Ce guide décrit le processus de création et de configuration des machines virtuelles sous Xen dans le cadre du TP de virtualisation. L'infrastructure repose sur un système Xen exécuté sur le serveur capbreton.plil.info.

Trois machines sont créées :

  • Gyro (Machine de service)
  • Gtr (Machine de service)
  • Pegase (Machine mandataire)

Les machines de service accèdent à Internet via leur machine mandataire, qui gère la redirection des connexions IPv4 et la configuration réseau.

2. Connexion au serveur Xen

Se connecter au serveur Xen en tant que root :

ssh root@capbreton.plil.info

3. Création des machines virtuelles

Nous utilisons la commande xen-create-image pour générer nos machines virtuelles.

Exemple pour Gyro :

xen-create-image --hostname=SE4.Gyro --dhcp --bridge=alloco_wahran --dir=/usr/local/xen --size=10GB --dist=daedalus --memory=1024M

Nous répétons ce processus pour Gtr et Pegase.

4. Configuration du réseau sur Dom0

Nous modifions le fichier /etc/network/interfaces pour définir le commutateur virtuel du réseau routé :

auto alloco_wahran
iface alloco_wahran inet manual
        bridge_ports none
        up ip link set $IFACE up
        down ip link set $IFACE down

5. Création des partitions LVM

Nous créons deux partitions LVM pour chaque machine de service :

lvcreate -n SE4.Gyro.home -L 10G virtual
lvcreate -n SE4.Gyro.var -L 10G virtual

Nous répétons ces étapes pour Gtr.

6. Lancement des machines virtuelles

Nous lançons nos machines avec :

xen create /etc/xen/SE4.Gyro.cfg

Nous vérifions leur état avec :

xen list

7. Connexion aux machines virtuelles

Nous nous connectons en mode console :

xen console SE4.Gyro

8. Ajout des partitions dans la configuration Xen

Nous modifions la configuration pour ajouter les partitions LVM :

'phy:/dev/virtual/SE4.Gyro.var,xvda3,w', 'phy:/dev/virtual/SE4.Gyro.home,xvdb1,w',

9. Configuration des partitions dans /etc/fstab

Nous ajoutons les partitions dans /etc/fstab :

/dev/xvda3 /var ext4 defaults 0 2
/dev/xvdb1 /home ext4 defaults 0 2

10. Formatage des partitions

Nous formatons les partitions avant de les utiliser :

mkfs -t ext4 /dev/xvda3
mkfs -t ext4 /dev/xvdb1

11. Déplacement du contenu des répertoires

Nous copions le contenu de /var :

mount /dev/xvda3 /mnt
mv /var/* /mnt
umount /mnt

Nous montons ensuite automatiquement les partitions définies dans /etc/fstab :

mount -a

12. Attribution d’une adresse IPv4

Nous configurons une adresse IPv4 statique pour nos machines virtuelles en modifiant /etc/network/interfaces.

Exemple pour Gyro :

auto eth0
iface eth0 inet static
    address 192.168.0.3 
    netmask 255.255.255.0
    gateway 192.168.0.1

la gateway étant l'adresse de la machine mandataire (Pegase). Nous modifions également le fichier log de la machine manadataire comme vous pouvez le voir dans l'image ci-dessous.

ajout du bridge "SE4"

Ci-dessous vous pouvez voir la configuration des interfaces de la mandataire Pegase.

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.0.1/24

auto eth1
iface eth1 inet static
        address 193.48.57.164/24
        gateway 193.48.57.161
iface eth1 inet6 auto

l'adresse gateway étant celle du routeur.

13. Test ping entre les machines

Depuis la machine Gyro nous tentons un ping sur la machine de service Gtr; vous pouvez le voir dans l'image ci-dessous.

ping entre les machines de service

Toujours sur Gyro nous tentons un ping sur la machine mandataire Pegase; vous pouvez le voir dans l'image ci-dessous.

ping entre Gyro et Pegase (la mandataire)


14. Configuration de l'interface IPv6 sur la machine de service

auto eth0
iface eth0 inet static
address 192.168.0.3/24
gateway 192.168.0.1
iface eth0 inet6 auto
# post-up ethtool -K eth0 tx off
auto eth1
iface eth1 inet6 auto

15. Configuration IPv4 sur la machine mandataire

Nous modifions le fichier `/etc/sysctl.conf` en décommentant la ligne suivante :

net.ipv4.ip_forward=1

puis nous appliquons la modification avec :

sysctl -p

Nous installons ensuite iptables-persistent :

apt install iptables-persistent

Ajouter une règle NAT pour masquer l'adresse source :

 
iptables -t nat -A POSTROUTING -j MASQUERADE

Après cela, un ping vers `8.8.8.8` depuis les machines de service est désormais possible. "mettre image ping google sur machine de service"

16. Redirection de ports avec nftables

Sur la machine mandataire nous effectuons les redirections de Port

 
nft add table ip NAT  
Ajout des chaînes PREROUTING et POSTROUTING :  
nft add chain NAT PREROUTING { type nat hook prerouting priority 0; }  
nft add chain NAT POSTROUTING { type nat hook postrouting priority 100; }  
Ajout des règles de redirection :  
nft add rule NAT PREROUTING tcp dport 2202 dnat to 192.168.0.2:22  
nft add rule NAT PREROUTING tcp dport 2203 dnat to 192.168.0.3:22

17. Configuration du serveur DNS

Nous modifions le fichier de configuration /etc/bind/named.conf.local de la machine de service Gyro de la façcon suivante:

 
zone "alloco.online" {  
    type master;  
    file "/etc/bind/alloco_online/alloco.online";  
    allow-transfer { secondaries; };  // Filtrage des secondaires  
    // also-notify { hiddensecondaries; }; // Notification optionnelle  
    notify yes;  // Notification des secondaires  
};  

acl "secondaries" {  
    192.168.0.2;   // Serveur secondaire IPv4  
    2001:660:4401:60a0:216:3eff:fe32:8fa2; // Serveur secondaire IPv6  
};

le Fichier de zone `/etc/bind/alloco_online/alloco.zone` est également modifié comme suit:

 
TTL 400

@ IN SOA ns.alloco.online. postmaster.alloco.online. (
3600 ; Version
21600 ; Refresh secondary (6h)
3600 ; Retry secondary (1h)
2592000 ; Expire if no refresh (30 jours)
86400 ; Negative cache (24h)
)

; Enregistrements des serveurs de noms
@ IN NS ns.alloco.online.
@ IN NS ns2.wahran.online.

; Enregistrements AAAA (IPv6)
ns IN AAAA 2001:660:4401:60a0:216:3eff:fe81:abfe

; Enregistrements A (IPv4)
ns IN A 193.48.57.164
; Enregistrements CNAME
www IN CNAME alloco.online

18. Configuration du serveur DNSSEC

Pour le DNSSEC nous rajoutons quelques lignes au fichier de configuration /etc/bind/named.conf.local de la machine de service Gyro qui se présente désormais comme suit :

 
zone "alloco.online" {
  type master;
  file "/etc/bind/alloco_online/alloco.zone";
  allow-transfer{secondaries;};  // filtrage des secondaires
  //also-notify{hiddensecondaries;}; // pour les secondaires vicieux
  notify yes;    // notification des secondaires
  key-directory "/etc/bind/keys"; //repertoire des keys
  dnssec-policy "dnspol"; //utilisation d'une politique DNSSEC
  inline-signing yes; //activation de la signature automatique
};
acl "secondaries" {
  192.168.0.2;   // serveur secondaire
  2001:660:4401:60a0:216:3eff:fe32:8fa2; //serveur secondaire IPV6
};
dnssec-policy "dnspol" {
    keys {
        ksk key-directory lifetime unlimited algorithm 13;
        zsk key-directory lifetime unlimited algorithm 13;
    };
    nsec3param;
};

Nous créons ensuite le repertoire des clés auquel nous accordons les droits d'accès à bind.

 
mkdir -p /etc/bind/keys
chown bind:bind /etc/bind/keys
chmod 700 /etc/bind/keys

Enfin nous redémarrons le service bind :

 
service named restart

Après redémarrage du service on peut constater le chargement automatique des clés dans le repertoire /etc/bind/named.conf.local

chargement des clés