Aller au contenu

Exercice 2 — Importer les VM de Cycles Pignon Sud

Durée : ~90 min · En équipe · Théorie associée : Migrer une VM de VMware ESXi vers Proxmox

Objectif

Importer le site web et le serveur de fichiers de Cycles Pignon Sud depuis leur hôte VMware ESXi, les passer sur du matériel VirtIO, et les remettre en service dans le réseau de Cyclo-Nord : le site dans la DMZ, le partage dans le LAN.

Prérequis

  • L'exercice 1 terminé : le pare-feu, srv-donnees et la caisse tournent.
  • Les deux VM de Pignon Sud éteintes sur l'hôte ESXi. Votre enseignant s'en charge avant la séance.
  • Le compte de l'hôte ESXi réservé à l'import : migration / Motdepasse123!. Il peut lire les VM, pas les modifier.

D'où partent les VM, et où elles arrivent

L'hôte ESXi de Pignon Sud répond sur https://10.70.44.29. L'inventaire laissé par l'ancien responsable informatique décrit ses deux VM :

VM Réseau chez Pignon Sud Adresse chez Pignon Sud Service
srv-web groupe de ports Publique (VLAN 460) 206.167.46.29/24 site web, nginx
srv-fichiers VM Network 10.0.0.20/24 partage NFS /srv/partage

Le site est directement sur Internet, sans pare-feu devant. Le partage vit dans un réseau 10.0.0.0/24 qui n'existe pas chez Cyclo-Nord. Voici leur place dans votre réseau :

VM ID Serveur VLAN Adresse Passerelle DNS
srv-web 404 serveur 2 30 dmz 192.168.30.20/24 192.168.30.1 9.9.9.9
srv-fichiers 405 serveur 2 20 serveurs 192.168.20.20/24 192.168.20.1 9.9.9.9

Une équipe d'un seul serveur importe les deux VM sur ce serveur, et remplace « serveur 2 » par lui dans toute la suite.

Le site web rejoint la caisse dans la DMZ : c'est une machine que le public utilise, donc la plus exposée. Le partage contient les clients, les factures et la comptabilité de Pignon Sud : il rejoint la base de données, à l'abri dans le LAN.

Étape 1 — Ouvrir l'hôte ESXi

Depuis votre poste, ouvrez https://10.70.44.29. Le certificat est auto-signé : passez l'avertissement. Connectez-vous avec migration / Motdepasse123!, puis cliquez sur Virtual Machines.

Le Host Client d'ESXi liste srv-web et srv-fichiers, toutes deux éteintes

C'est l'interface d'administration de VMware ESXi, l'équivalent de celle de Proxmox. Les deux VM sont là, éteintes. Votre compte peut les voir, mais pas les démarrer ni les modifier.

Étape 2 — Ajouter l'hôte ESXi comme stockage

Sur le serveur 2, allez dans Datacenter > Storage > Add > ESXi.

Champ Valeur
ID esxi-pignonsud
Server 10.70.44.29
Username migration
Password Motdepasse123!
Skip Certificate Verification coché

La fenêtre Add: ESXi remplie avec l'adresse de l'hôte et le compte migration

Cliquez sur Add. Proxmox traite l'hôte ESXi comme un stockage de plus, dans lequel il lit des VM entières.

Étape 3 — Afficher les VM de l'hôte

Dans l'arborescence, sous le serveur 2, sélectionnez esxi-pignonsud, puis l'onglet Virtual Guests.

L'onglet Virtual Guests liste srv-web.vmx et srv-fichiers.vmx

Les deux fichiers .vmx apparaissent. La première lecture peut prendre une à deux minutes : Proxmox interroge l'hôte ESXi à travers le réseau.

Étape 4 — Ouvrir l'assistant d'import de srv-web

Sélectionnez srv-web.vmx et cliquez sur Import.

Étape 5 — Remplir l'onglet General

Champ Valeur
VM ID 404
Name srv-web
Default Storage local-lvm
Default Bridge vmbr0
Live Import décoché

L'onglet General de l'assistant avec l'ID 404, local-lvm et vmbr0

La mémoire et les cœurs sont déjà remplis. Proxmox les a lus dans le .vmx.

Étape 6 — Remplacer le matériel VMware

Passez à l'onglet Advanced. Proxmox propose de garder le matériel d'origine : VMware PVSCSI et une carte VMware vmxnet3. Remplacez-le :

Élément Valeur
SCSI Controller VirtIO SCSI single
net0 · Model VirtIO (paravirtualized)
net0 · Bridge vmbr0
net0 · VLAN Tag 30

L'onglet Advanced avec VirtIO SCSI single, une carte VirtIO et le VLAN Tag 30

Le VLAN Tag est vide au départ. La VM était branchée sur le groupe de ports Publique (VLAN 460), et ce nom ne veut rien dire pour Proxmox : c'est à vous de choisir son nouveau réseau.

Étape 7 — Relire la configuration et importer

Passez à l'onglet Resulting Config.

L'onglet Resulting Config montre scsihw virtio-scsi-single et net0 en virtio avec tag=30

Deux lignes doivent apparaître : scsihw: virtio-scsi-single et net0: virtio=00:0C:29:…,bridge=vmbr0,tag=30. L'adresse MAC commence par 00:0C:29, le préfixe de VMware : Proxmox l'a conservée.

Cliquez sur Import. Le journal affiche la copie du disque, puis TASK OK.

Étape 8 — Importer srv-fichiers

Recommencez les étapes 4 à 7 avec srv-fichiers.vmx et ces valeurs :

Champ Valeur
VM ID 405
Name srv-fichiers
SCSI Controller VirtIO SCSI single
net0 · Model VirtIO (paravirtualized)
net0 · VLAN Tag 20

L'onglet Advanced de srv-fichiers liste deux disques, scsi0 de 2 Go et scsi1 de 4 Go

L'onglet Advanced liste deux disques : le système sur scsi0, et le disque de données du partage sur scsi1. Laissez les deux cochés.

Étape 9 — Démarrer srv-web

Sélectionnez la VM 404, cliquez sur Start, puis sur Console. Connectez-vous avec root / Motdepasse123!.

Le clavier de ces VM est réglé en canadien-français, comme les postes de la salle.

Étape 10 — Constater l'état de la VM

Bash
rc-status default

open-vm-tools est en état crashed, nginx est started

nginx tourne. open-vm-tools est en état crashed : ce sont les outils de VMware, et ils cherchent un hyperviseur VMware qui n'existe plus.

Bash
cat /etc/network/interfaces

La configuration réseau contient encore 206.167.46.29 et la passerelle 206.167.46.1

La VM porte encore son adresse publique de Pignon Sud. Elle est maintenant dans le VLAN 30, où personne ne lui répondra à cette adresse.

Étape 11 — Réécrire l'adresse de srv-web

Bash
sed -i 's/206.167.46.29/192.168.30.20/; s/206.167.46.1/192.168.30.1/' /etc/network/interfaces
Bash
cat /etc/network/interfaces

La configuration réseau porte maintenant 192.168.30.20/24 et la passerelle 192.168.30.1

sed remplace un texte par un autre dans un fichier, sans ouvrir d'éditeur. La commande contient deux remplacements, séparés par ; : l'adresse, puis la passerelle.

Le DNS de srv-web est déjà 9.9.9.9 : rien à changer de ce côté.

Étape 12 — Redémarrer le réseau de srv-web

Bash
rc-service networking restart
Bash
ping -c 2 192.168.30.1

Les deux pings vers 192.168.30.1 répondent

La passerelle de la DMZ répond : la VM est dans le bon VLAN, avec une adresse du bon réseau.

Étape 13 — Retirer les outils VMware de srv-web

Bash
rc-update del open-vm-tools default
Bash
apk del open-vm-tools open-vm-tools-guestinfo open-vm-tools-openrc open-vm-tools-vix open-vm-tools-timesync

La première commande retire le service du démarrage. La seconde désinstalle les paquets. apk a besoin d'Internet pour la suite : il sort par le pare-feu, grâce à la règle « dmz vers internet » de la semaine 4.

Étape 14 — Installer l'agent QEMU dans srv-web

Bash
apk add qemu-guest-agent
Bash
rc-update add qemu-guest-agent default

apk installe qemu-guest-agent et rc-update l'ajoute au démarrage

L'agent ne démarre pas encore : il attend un canal de communication que Proxmox n'a pas créé. C'est l'étape suivante.

Étape 15 — Activer l'agent dans Proxmox pour srv-web

Sélectionnez la VM 404, ouvrez Options, double-cliquez sur QEMU Guest Agent et cochez Use QEMU Guest Agent.

Cliquez ensuite sur Shutdown, attendez que la VM soit éteinte, puis sur Start. Un simple Reboot ne suffit pas : le canal de l'agent n'est ajouté qu'au démarrage à froid de la VM.

Le panneau Summary de srv-web affiche l'adresse 192.168.30.20

Le panneau Summary affiche maintenant 192.168.30.20. C'est l'agent qui remonte cette adresse à Proxmox.

Étape 16 — Réécrire l'adresse de srv-fichiers

Démarrez la VM 405, ouvrez sa Console et connectez-vous avec root / Motdepasse123!.

Bash
sed -i 's/10.0.0.20/192.168.20.20/; s/10.0.0.1/192.168.20.1/' /etc/network/interfaces
Bash
cat /etc/network/interfaces

La configuration réseau de srv-fichiers porte 192.168.20.20/24 et la passerelle 192.168.20.1

Étape 17 — Réécrire le DNS de srv-fichiers

Bash
echo "nameserver 9.9.9.9" > /etc/resolv.conf

Le DNS de Pignon Sud était leur routeur, 10.0.0.1. Il n'existe plus.

Étape 18 — Redémarrer le réseau de srv-fichiers

Bash
rc-service networking restart
Bash
ping -c 2 192.168.20.1

La passerelle du LAN répond.

Étape 19 — Corriger l'export NFS

Bash
cat /etc/exports

/etc/exports autorise encore 10.0.0.0/24

Le partage n'autorise que l'ancien réseau de Pignon Sud. La VM répond maintenant au ping, mais tous les clients de Cyclo-Nord recevraient un refus.

Bash
sed -i 's|10.0.0.0/24|192.168.20.0/24|' /etc/exports
Bash
exportfs -ra
Bash
exportfs -v

exportfs -v montre /srv/partage autorisé pour 192.168.20.0/24

La commande sed utilise ici | comme séparateur, parce que le texte à remplacer contient lui-même un /. exportfs -ra relit le fichier et applique la nouvelle liste sans redémarrer le service.

Étape 20 — Remplacer les outils VMware de srv-fichiers

Refaites les étapes 13, 14 et 15 sur srv-fichiers, avec la VM 405.

À la fin, le panneau Summary de la VM 405 affiche 192.168.20.20.

Étape 21 — Ouvrir le site depuis votre poste

Depuis votre poste, ouvrez http://192.168.30.20.

Le navigateur affiche le site de Cycles Pignon Sud

Le site de Pignon Sud répond, dans la DMZ de Cyclo-Nord, derrière le même pare-feu que la caisse. Votre poste l'atteint par la route vers 192.168.30.0/24 ajoutée à l'exercice 1.

Étape 22 — Installer le client NFS sur srv-donnees

Ouvrez la console de srv-donnees et connectez-vous avec etudiant / Motdepasse123!.

Bash
sudo apt-get install -y nfs-common

Étape 23 — Monter le partage depuis srv-donnees

Bash
sudo mount -t nfs 192.168.20.20:/srv/partage /mnt
Bash
ls /mnt

Le partage monté contient LISEZMOI.txt, atelier, clients, comptabilite, direction, lost+found, marketing et ti

Les dossiers de Pignon Sud sont là : clients, comptabilité, bons de travail. Le serveur de fichiers a changé d'hyperviseur, de matériel, de réseau et d'adresse, et son contenu est intact.

Bash
cat /mnt/ti/inventaire-serveurs.txt

L'inventaire de l'ancien responsable décrit un réseau qui n'existe plus. C'est à l'équipe de Cyclo-Nord de tenir le sien à jour, dans le README.md du dépôt.

Étape 24 — Vérifier que la DMZ n'atteint pas le partage

Revenez dans la console de srv-web :

Bash
ping -c 2 -W 2 192.168.20.20

Les deux pings vers 192.168.20.20 échouent, 100% packet loss

Aucune réponse. La règle « dmz ne parle pas au lan » de la semaine 4 s'applique au site de Pignon Sud comme à la caisse : si le site est un jour compromis, les données clients restent hors de portée.

Étape 25 — Retirer le stockage ESXi

Allez dans Datacenter > Storage, sélectionnez esxi-pignonsud et cliquez sur Remove.

Proxmox gardait le mot de passe du compte migration en clair dans /etc/pve/priv/storage/esxi-pignonsud.pw. L'import est fini : ce mot de passe n'a plus de raison d'être sur le serveur.

Vérification finale

  • qm config 404 et qm config 405 montrent scsihw: virtio-scsi-single et une carte virtio
  • srv-web est dans le VLAN 30 et srv-fichiers dans le VLAN 20
  • Le panneau Summary des deux VM affiche leur adresse, remontée par l'agent
  • http://192.168.30.20 affiche le site de Pignon Sud depuis votre poste
  • srv-donnees monte le partage et y lit les dossiers de Pignon Sud
  • srv-web ne joint pas 192.168.20.20
  • Le stockage esxi-pignonsud n'existe plus

Question 1

Vous importez srv-web en laissant l'onglet Advanced tel quel. Que se passe-t-il ?

  • a) L'import échoue, parce que Proxmox ne sait pas émuler le matériel VMware.
  • b) La VM démarre sur du matériel VMware émulé, et sa carte tombe dans le VLAN natif du câble.
  • c) Proxmox convertit de lui-même le matériel en VirtIO et reprend le VLAN 460.
Voir la réponse **b) La VM démarre sur du matériel VMware émulé, et sa carte tombe dans le VLAN natif du câble.** QEMU sait imiter `pvscsi` et `vmxnet3`, donc la VM démarre. Mais sans VLAN Tag, ses trames partent sans étiquette et arrivent dans le VLAN natif, le réseau de gestion du collège : exactement là où un serveur de l'entreprise ne doit pas se trouver. Le choix c) prête à Proxmox deux décisions qu'il ne prend pas. Il garde le matériel d'origine par défaut, et il n'a aucun numéro de VLAN à reprendre : la VM ne connaissait que le nom d'un groupe de ports.

Question 2

Après l'étape 18, srv-fichiers répond au ping. Pourquoi faut-il encore corriger /etc/exports ?

  • a) Parce que le service NFS ne redémarre pas de lui-même après une migration.
  • b) Parce que le partage n'autorise que les clients de l'ancien réseau, 10.0.0.0/24, et refuse tous ceux de Cyclo-Nord.
  • c) Parce que le pare-feu bloque NFS entre deux VM du même VLAN.
Voir la réponse **b) Parce que le partage n'autorise que les clients de l'ancien réseau, `10.0.0.0/24`, et refuse tous ceux de Cyclo-Nord.** Le réseau de la VM et la liste d'accès du service sont deux réglages distincts. Le premier dit où la VM se trouve ; le second dit qui a le droit de lui parler. La migration a changé le premier, et rien n'a mis le second à jour. Le choix c) ne tient pas : `srv-donnees` et `srv-fichiers` sont dans le même VLAN, et leur trafic passe directement par le switch, sans jamais traverser le pare-feu.

En cas de problème

Symptôme Cause probable Correction
L'onglet Virtual Guests reste vide ou affiche une erreur Mauvais compte, mauvais mot de passe, ou hôte injoignable Vérifier la fenêtre de l'étape 2, puis https://10.70.44.29 depuis le poste
L'assistant affiche Virtual guest seems to be running on source host La VM tourne encore sur l'ESXi Prévenir l'enseignant avant d'importer
ping 192.168.30.1 échoue depuis srv-web VLAN Tag oublié ou erroné Hardware > net0, VLAN Tag 30
apk affiche temporary error (try again later) DNS encore à 10.0.0.1, ou pas de route vers Internet cat /etc/resolv.conf, puis ping 9.9.9.9
Les caractères tapés ne correspondent pas aux touches Clavier du poste autre que canadien-français Sur un poste en clavier US : rc-update del loadkmap boot, puis reboot
mount.nfs: access denied by server /etc/exports pas corrigé, ou exportfs -ra oublié Étape 19
mount: bad option ou wrong fs type nfs-common absent sur srv-donnees Étape 22
Summary n'affiche aucune adresse Agent non activé, ou VM seulement redémarrée Étape 15 : Shutdown, puis Start
rc-service qemu-guest-agent start échoue L'option QEMU Guest Agent n'est pas encore activée Normal avant l'étape 15, l'agent démarrera après

Pour aller plus loin

  • Remettez le site en ligne. Dans OPNsense, Firewall > NAT > Destination NAT permet de rediriger le port 80 de l'adresse WAN du pare-feu vers 192.168.30.20. Le site redevient public, avec un pare-feu devant cette fois.
  • Comparez qm config 404 avec le fichier srv-web.vmx d'origine, visible dans le Host Client de l'ESXi. Retrouvez la ligne Proxmox qui correspond à chaque ligne VMware.