Challenges/Homelab-Proxmox
Homelab-ProxmoxHomelab

đŸ—„ïž LAB : DĂ©ploiement Proxmox VE (PVE)

Proxmox VEHyper-VLXC/LXDDebianpfSenseCisco IOSVPNCheckmkZFSBashNAT/PATSSH
Retour au cours

đŸ—„ïž LAB : DĂ©ploiement Proxmox VE (PVE)

█████▄ ▄▄▄▄   ▄▄▄  ▄▄ ▄▄ ▄▄   ▄▄  ▄▄▄  ▄▄ ▄▄ 
██▄▄█▀ ██▄█▄ ██▀██ ▀█▄█▀ ██▀▄▀██ ██▀██ ▀█▄█▀ 
██     ██ ██ ▀███▀ ██ ██ ██   ██ ▀███▀ ██ ██

Hardware OS Role Network

RĂŽle : Hyperviseur Bare-Metal (Type 1) & Plateforme d'Infrastructure

Mission : Déployer un environnement de virtualisation polyvalent (Homelab). L'objectif est double : fournir un véritable "bac à sable" pour concevoir des topologies réseau sur-mesure (segmentation, routage, pare-feu), tout en hébergeant efficacement des machines virtuelles et des conteneurs légers pour des services internes (supervision, multimédia, automatisation).


L'intĂ©rĂȘt technique 🎯

  • Performance Bare-Metal : Installation directe sur le matĂ©riel (Type 1) pour une allocation brute et optimisĂ©e des ressources (CPU, RAM, I/O disques), sans la contrainte ni la latence d'un systĂšme d'exploitation hĂŽte classique.
  • FlexibilitĂ© de DĂ©ploiement (VMs & LXC) : CapacitĂ© Ă  instancier Ă  la volĂ©e une grande variĂ©tĂ© de nƓuds : des appliances rĂ©seau (pfSense), des machines clientes complĂštes, ou des conteneurs Linux ultra-lĂ©gers dĂ©diĂ©s Ă  un service unique (microservices).
  • MaĂźtrise des Flux (SDN) : Exploitation native des commutateurs virtuels (Linux Bridges) pour dessiner des architectures L2/L3 complexes, isoler des domaines de diffusion et connecter les diffĂ©rentes machines virtuelles entre elles.
  • SĂ©curitĂ© et Maquettage : Centralisation de l'infrastructure permettant de tester, casser et reconstruire des architectures de bout en bout en toute sĂ©curitĂ©, notamment grĂące aux sauvegardes et aux instantanĂ©s (Snapshots).

đŸ› ïž CaractĂ©ristiques du Serveur (Le "Homelab")

L'infrastructure repose sur un micro-serveur optimisé et mis à niveau (upgrade processeur i3 > i7, RAM 8go > 32go, HDD 256go > SSD 512go + HDD 2to) pour garantir une réserve de puissance suffisante lors du maquettage de topologies complexes :

  • ChĂąssis : HP ProDesk 600 G4 (Format Mini-PC, silencieux et basse consommation).
  • Processeur (CPU) : Intel Core i7-8700T (6 cƓurs / 12 threads) – Parfait pour parallĂ©liser les charges des diffĂ©rentes appliances rĂ©seau.
  • MĂ©moire (RAM) : 32 Go (2x16 Go SK-Hynix SODIMM DDR4) – Marge confortable pour faire tourner simultanĂ©ment de multiples environnements virtuels isolĂ©s.
  • Stockage SystĂšme (OS/VMs) : SSD Toshiba 512 Go – Assure des dĂ©bits I/O rapides pour le systĂšme hĂŽte et les machines virtuelles.
  • Stockage DonnĂ©es (Data) : HDD Toshiba 2 To – Espace haute capacitĂ© dĂ©diĂ© au stockage des images ISO, aux sauvegardes (Dumps) et aux futurs montages de volumes pour les services annexes.

💰 Budget : 300€ - Il fallait respecter un budget modeste malgrĂ© l'augmentation indĂ©cente du prix de la mĂ©moire vive (FĂ©vrier 2026).

prodesk


Documentation officielle : https://pve.proxmox.com/pve-docs/


PrĂ©-requis 📋

  • Une clĂ© USB (minimum 8 Go) vierge.
  • L'image ISO officielle de Proxmox VE (tĂ©lĂ©chargeable sur le site officiel).
  • Un utilitaire de flashage bootable (comme BalenaEtcher ou Rufus).
  • Une connexion rĂ©seau filaire (cĂąble RJ45) reliant directement le mini-PC au commutateur/routeur du rĂ©seau domestique (indispensable pour l'interface de management).

Installation (Bare-Metal)

  1. Préparation du support : Flashage de l'image ISO de Proxmox VE sur la clé USB à l'aide de l'utilitaire choisi.

  2. Séquence de démarrage : Insertion de la clé USB dans le mini-PC HP et modification de l'ordre de boot dans le BIOS (généralement touche F9 ou F10) pour démarrer sur le support d'installation.

  3. Lancement de l'installeur : Sélection de l'option "Install Proxmox VE (Graphical)" sur le premier écran de démarrage.

  4. Ciblage du stockage : Sélection rigoureuse du SSD de 512 Go comme disque cible pour l'installation du systÚme (Attention à ne pas sélectionner le HDD de 2 To dédié aux données).

  5. Configuration Réseau initiale (L'étape critique) : * Choix de l'interface réseau physique (eno1 ou nic0).

    • DĂ©finition d'un nom d'hĂŽte qualifiĂ© (FQDN), par exemple pve-server.lan.
    • Attribution d'une adresse IP statique de management (ex: 192.168.1.240/24) et renseignement de la passerelle par dĂ©faut. C'est cette Ă©tape qui crĂ©e automatiquement le premier pont virtuel vmbr0.
  6. Sécurité : Définition du mot de passe super-administrateur (root) et d'une adresse email de contact pour les alertes systÚme.

  7. Finalisation : Redémarrage automatique du serveur. Le systÚme affiche alors l'invite de commande confirmant que l'interface d'administration web est accessible depuis n'importe quel poste du réseau LAN via l'URL : https://[IP_DU_SERVEUR]:8006.


⚙ Configuration Post-Installation (Optimisation du socle)

Une fois l'hyperviseur installé, il est nécessaire de préparer l'environnement systÚme avant de concevoir la topologie réseau.

Fiabilisation des dépÎts (Repositories)

Par défaut, Proxmox VE est configuré pour interroger les dépÎts "Enterprise", nécessitant une souscription payante, ce qui génÚre des erreurs lors des mises à jour du systÚme hÎte. L'objectif est de basculer sur les dépÎts "No-Subscription" pour les environnements de Lab.

Automatisation via script (Proxmox VE Helper Scripts) : PlutÎt que d'éditer manuellement les sources de paquets Linux, exécution d'un script utilitaire reconnu par la communauté pour nettoyer le systÚme et appliquer les mises à jour de base :

  1. Ouverture du "Shell" depuis l'interface web de l'hyperviseur.

  2. Exécution de la commande : bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/post-pve-install.sh)"

  3. Choix des options : Désactivation du dépÎt Enterprise, activation du dépÎt No-Subscription, et application des mises à jour (apt update && apt upgrade).

    PVE Post-install : https://community-scripts.github.io/ProxmoxVE/scripts?id=post-pve-install

    • La correction des dĂ©pĂŽts (Repositories) : Il va dĂ©sactiver le dĂ©pĂŽt officiel "Enterprise" et il active automatiquement le dĂ©pĂŽt gratuit "No-Subscription" pour pouvoir tĂ©lĂ©charger les paquets librement.
    • La suppression de l'avertissement : Il retire le pop-up "No valid subscription" Ă  chaque connection sur l'interface web.
    • La mise Ă  jour globale : Il se charge de tĂ©lĂ©charger et d'installer directement les derniĂšres mises Ă  jour de Proxmox.
  4. Il reste un dernier dépÎt à corriger (stockage Ceph) pour ne pas avoir d'erreurs de mise à jour : pve-server > Updates > Repositories : Disable ceph.sources et pve-enterprise.sources

disable


đŸ•žïž Conception de l'Architecture RĂ©seau Virtuelle (SDN)

C'est le cƓur de l'infrastructure. Proxmox ne gĂ©rant nativement que les ponts virtuels (Linux Bridges), l'objectif est de crĂ©er des commutateurs virtuels (Virtual Switches) pour isoler les futurs domaines de diffusion (Layer 2) avant d'y injecter des appliances de routage (Layer 3).

Configuration réalisée via le menu : PVE-Server > System > Network.

Les Commutateurs Virtuels (Bridges)

  • 🌉 vmbr0 (Uplink / "WAN") :
    • RĂŽle : Pont physique liĂ© Ă  la carte rĂ©seau rĂ©elle (eno1 ou nic0).
    • Adressage : Porte l'IP de management du serveur sur le rĂ©seau domestique (ex: 192.168.1.240/24) ainsi que sa passerelle par dĂ©faut.
    • Fonction : Permet la sortie vers l'internet physique.

Pour les autres voir le Lab déploiement d'un Routeur/Pare-feu pfSense

Le Trunking

L'activation du Trunking (802.1Q)

Avec cette case cochée le switch virtuel se comporte comme un vrai port trunk. On pourra gérer les sous-interfaces et les VLANs directement depuis la ligne de commande des futures instances Cisco, pfSense, VyOS, etc.

vlanaware


Partitionnement du stockage đŸ’Ÿ

On va pouvoir configurer un cloisonnement de stockage directement depuis l'interface web, de maniĂšre trĂšs visuelle. On veut utiliser le SSD pour monter nos VM/containers (et leurs snapshots), et le HDD pour stocker les ISOs, les Backups et de la Data.

1. Initialiser et formater le HDD

Dans la partie Disks on peut voir l'état de nos disques, il faut d'abord dire à Proxmox que ce nouveau disque mécanique existe et le préparer.

Directory > Create Directory : sélectionner le disque, systÚme de fichier ext4, HDD-data, Create.

disks

2. Attribuer les rĂŽles

Maintenant que le disque est prĂȘt, on va dĂ©finir ce que Proxmox a le droit de mettre sur chaque espace de stockage.

  • Restreindre le HDD : Double-clic sur HDD-Data. Dans la liste dĂ©roulante Content on sĂ©lectionne uniquement : ISO Image, Backup, et Container Template. On retire tout le reste.

  • Restreindre le SSD : Double-clic sur local (la racine du SSD). Dans Content, on laisse seulement Import.

Maintenant nos VM et Containers seront sur le SSD dans local-lvm, les ISOs, les Backup et les Datas seront sur le HDD.


VM & Containers 🖧

Il faut penser à activer le Start at boot pour le redémarrage automatique dans les options de chaque machine si besoin.

  • RĂ©glages VM gĂ©nĂ©ral :

    • Activer SSD Emulation
    • Activer Discard
    • VirtIO pour des VM Linux, Intel E1000 pour des VM Windows
  • RĂ©glages container LXC :

    • Laisse Unprivileged container cochĂ© : approche sĂ©curitaire par conception, car elle empĂȘche les attaquants d’obtenir un accĂšs root Ă  l’hĂŽte mĂȘme en Ă©chappant au conteneur.
    • au dĂ©marrage pour autoriser SSH via mdp ⚠ Ne pas laisser en prod :
    sed -i 's/^#\?PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config
    

💡 Pour supprimer une ancienne clef SSH d’une IP de VM :

ssh-keygen -R 192.168.1.x

Correction du NTP (Network Time protocol)

Checkmk WARN sur le NTP Time du PVE-Server : "Stratum 4" avec un dĂ©calage (Offset), cela signifie que Proxmox interroge un serveur de temps lui-mĂȘme assez Ă©loignĂ© de la source atomique (Stratum 1), ce qui gĂ©nĂšre de la latence.

NTP error

Modifier les sources de temps

Ouvrir le fichier de configuration avec l'éditeur de texte :

nano /etc/chrony/chrony.conf

Ajouter les serveurs locaux

RepÚrer les lignes qui commencent par pool (généralement pool 2.debian.pool.ntp.org iburst).

Les commenter et ajouter les serveurs français juste en dessous pour obtenir ceci :

#pool 2.debian.pool.ntp.org iburst
pool 0.fr.pool.ntp.org iburst
pool 1.fr.pool.ntp.org iburst
pool 2.fr.pool.ntp.org iburst

Relancer le service

Appliquer les modifications en redémarrant le démon NTP :

systemctl restart chrony

Vérifier la synchronisation

Pour confirmer que l'hyperviseur a bien accroché les nouveaux serveurs, lancer :

chronyc sources -v

NTP


Correction de la perte de configuration rĂ©seau ❌

1. Analyse de l'incident (Pourquoi netfilter-persistent a échoué)

Bien que netfilter-persistent et iptables-save soient les standards absolus sur une distribution Debian classique, l'hyperviseur Proxmox VE possÚde son propre cycle de vie réseau. Lors d'un redémarrage, Proxmox reconstruit dynamiquement ses commutateurs virtuels (Linux Bridges comme vmbr0 ou vmbr1). Durant cette phase, le service réseau interne (ifupdown2) prend le pas et peut écraser ou ignorer les rÚgles chargées précédemment.

Pour garantir une persistance absolue sur Proxmox, la bonne pratique DevOps consiste à attacher les rÚgles de routage directement au cycle d'allumage des interfaces réseau.

2. Procédure de remédiation : Restauration des rÚgles persistantes

Il est nécessaire de modifier le fichier central de configuration réseau de l'hyperviseur.

Étape A : VĂ©rification du routage noyau S'assurer que l'hyperviseur a toujours l'autorisation de router les paquets entre ses cartes rĂ©seaux (activĂ© temporairement par le passĂ©).

  • Éditer le fichier sysctl : nano /etc/sysctl.conf
  • VĂ©rifier la prĂ©sence et l'activation de la ligne : net.ipv4.ip_forward=1
  • Appliquer avec : sysctl -p

Pour garantir que cette variable survive à tous les redémarrages et aux futures mises à jour de l'hyperviseur, la bonne pratique consiste à adopter une architecture modulaire. Il ne faut pas modifier que le fichier racine /etc/sysctl.conf, mais aussi créer un fichier prioritaire dédié dans le répertoire /etc/sysctl.d/.

Les fichiers de ce répertoire sont lus à la toute fin de la séquence de démarrage, ce qui garantit qu'ils écraseront toute autre configuration contradictoire.

Voici la procédure stricte à exécuter dans le shell de l'hÎte Proxmox :

Création du fichier de routage prioritaire La commande suivante crée un fichier nommé 99-routing.conf (le préfixe 99 indique la priorité maximale) et y injecte la rÚgle d'activation :

echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-routing.conf

Rechargement du noyau Pour forcer le noyau Linux à lire immédiatement ce nouveau fichier sans avoir à redémarrer le serveur physiquement :

sysctl --system

Le terminal retournera une liste des fichiers lus, et confirmera l'application de la rĂšgle net.ipv4.ip_forward = 1.

Étape B : Injection des rĂšgles dans les interfaces C'est ici que se joue la persistance. Les directives post-up s'exĂ©cutent dĂšs que l'interface s'allume, et post-down nettoient la table lors de l'extinction.

  • Éditer le fichier des interfaces :
nano /etc/network/interfaces

  • Localiser le bloc correspondant Ă  vmbr0 (l'interface WAN connectĂ©e au rĂ©seau domestique ).

  • Ajouter les lignes suivantes Ă  la fin de ce bloc (en remplaçant <IP_PLEX> par l'adresse IP interne de destination) :

auto vmbr0
iface vmbr0 inet static
        address 192.168.1.240/24
        gateway 192.168.1.254
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0
        
# --- RÈGLES DE ROUTAGE (PERSISTANTES) ---
        
        # 1. NAT INTERNET (pfSense vers Box)
        post-up iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o vmbr0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s 192.168.10.0/24 -o vmbr0 -j MASQUERADE

        # 2. NAT PLEX (TCP/UDP 32400)
        post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 32400 -j DNAT --to-destination 192.168.10.254:32400
        post-up iptables -t nat -A PREROUTING -i vmbr0 -p udp --dport 32400 -j DNAT --to-destination 192.168.10.254:32400
        post-up iptables -t nat -A POSTROUTING -p tcp -d 192.168.10.254 --dport 32400 -j MASQUERADE
        post-up iptables -t nat -A POSTROUTING -p udp -d 192.168.10.254 --dport 32400 -j MASQUERADE
        
        post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 32400 -j DNAT --to-destination 192.168.10.254:32400
        post-down iptables -t nat -D PREROUTING -i vmbr0 -p udp --dport 32400 -j DNAT --to-destination 192.168.10.254:32400
        post-down iptables -t nat -D POSTROUTING -p tcp -d 192.168.10.254 --dport 32400 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -p udp -d 192.168.10.254 --dport 32400 -j MASQUERADE

        # 3. NAT VPN (UDP 1194)
        post-up iptables -t nat -A PREROUTING -i vmbr0 -p udp --dport 1194 -j DNAT --to-destination 192.168.10.254:1194
        post-up iptables -t nat -A POSTROUTING -p udp -d 192.168.10.254 --dport 1194 -j MASQUERADE
        
        post-down iptables -t nat -D PREROUTING -i vmbr0 -p udp --dport 1194 -j DNAT --to-destination 192.168.10.254:1194
        post-down iptables -t nat -D POSTROUTING -p udp -d 192.168.10.254 --dport 1194 -j MASQUERADE

        # 4. NAT CHECKMK (TCP 6557)
        post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 6557 -j DNAT --to-destination 192.168.10.254:6557
        post-up iptables -t nat -A POSTROUTING -p tcp -d 192.168.10.254 --dport 6557 -j MASQUERADE
        
        post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 6557 -j DNAT --to-destination 192.168.10.254:6557
        post-down iptables -t nat -D POSTROUTING -p tcp -d 192.168.10.254 --dport 6557 -j MASQUERADE

  • Pour appliquer cette configuration sans redĂ©marrer tout le serveur, il suffit de recharger la configuration rĂ©seau (attention, cela peut causer une micro-coupure) :
systemctl reload networking

3. Bilan d'Architecture (Security by Design) 🔒

En inscrivant ces rÚgles dans /etc/network/interfaces, l'hyperviseur conservera indéfiniment ses capacités de routage de bordure.

Cependant, d'un point de vue cybersécurité, il est impératif de rappeler la finalité de l'architecture. Proxmox n'agit comme routeur de bordure que de maniÚre temporaire. L'objectif final de la topologie est de déléguer tout le routage à la VM pfSense instanciée entre vmbr1 (WAN) et vmbr2 (LAN).


Mise Ă  jour du BIOS et reboot intempestifs đŸ’„

1. Description de l'Incident (Le ProblÚme Observé)

  • SymptĂŽmes : DĂ©connexions alĂ©atoires des services et redĂ©marrages intempestifs des machines virtuelles constatĂ©s sur l'hyperviseur Proxmox VE.
  • ÉvĂ©nement dĂ©clencheur : Mise Ă  jour du firmware de la carte mĂšre (BIOS) du serveur physique (HP ProDesk 600 G4).
  • Impact SĂ©curitĂ© (DIC) : Perte critique du pilier DisponibilitĂ©. L'arrĂȘt brutal de la machine entraĂźne une perte de tous les services.

2. Investigation et Analyse des Logs (Couche SystĂšme)

Pour poser un diagnostic précis, il faut s'appuyer sur les journaux systÚme de l'hyperviseur Linux. L'analyse a révélé que la panne n'était pas logicielle, mais matérielle.

Commandes d'investigation exécutées :

# Vérification de l'état de l'hÎte physique
uptime

# Vérification des journaux depuis le début de la journée (minuit)
journalctl --since today

# Filtrage des erreurs critiques depuis le précédent démarrage
journalctl -p 3 -xb -1

# Filtrage des erreurs critiques de la journée
journalctl --since today -p err

# Vérification des journaux d'une plage horaire spécifique (ex: lors du dernier crash)
journalctl --since "15:00" --until "16:00"

# Filtrage si le systÚme a tué des processus par manque de RAM aujourd'hui
journalctl --since today | grep -i "oom-killer"
journalctl --since today | grep -i "killed process"

# Filtrage des pertes de connexion avec les disques
journalctl --since today | grep -iE "I/O error|ext4|xfs"

Résultat de l'analyse :

  • Le retour de la commande uptime (ex: up 37 min) a prouvĂ© que c'est le serveur physique complet qui redĂ©marrait, et non pas seulement les VMs.
  • La prĂ©sence de multiples marqueurs de dĂ©marrage (-- Boot [hash] --) dans les logs journalctl a confirmĂ© une sĂ©rie de crashs successifs.
  • L'absence totale de messages d'erreurs (comme le OOM Killer pour la RAM ou des erreurs I/O pour les disques) juste avant ces redĂ©marrages indique un arrĂȘt Ă©lectrique brutal (Hard Lock). Le noyau Linux n'a pas eu le temps d'Ă©crire l'erreur sur le disque.

3. Cause Racine (Le conflit Matériel / OS)

Le flash du BIOS a réinitialisé les paramÚtres d'usine de la carte mÚre, réactivant des profils d'économie d'énergie conçus pour de la bureautique, ce qui est incompatible avec un serveur de production (Bare-Metal) .

  • L'impact CPU (C-States) : Le processeur est autorisĂ© Ă  entrer en veille trĂšs profonde (Ă©tats d'inactivitĂ©). Lorsque le trafic rĂ©seau arrive (ex: flux VPN entrant), l'hyperviseur KVM sollicite le processeur. Le dĂ©lai de rĂ©veil matĂ©riel provoque une dĂ©synchronisation, ce qui entraĂźne une panique du systĂšme et un redĂ©marrage d'urgence (Watchdog).
  • L'impact RĂ©seau (ASPM) : La gestion de l'alimentation du bus PCIe met la carte rĂ©seau physique en veille, provoquant des pertes de paquets et la chute de la topologie rĂ©seau de Niveau 2 (Linux Bridges).

4. Remédiation et Durcissement (La Correction)

Pour stabiliser l'infrastructure et garantir un taux de disponibilité adapté aux exigences de l'administration systÚme, une reconfiguration stricte de la gestion d'alimentation du BIOS (Advanced Power Management) a été appliquée :

  • États d'inactivitĂ© prolongĂ© (C-States) ➔ DĂ©sactivĂ© : Oblige le processeur Ă  rester Ă©veillĂ© et disponible en permanence pour traiter les requĂȘtes de l'hyperviseur sans latence.
  • Gestion alimentation PCI Express (ASPM) ➔ DĂ©sactivĂ© : EmpĂȘche le micro-contrĂŽleur de couper l'alimentation de la carte rĂ©seau, garantissant un flux constant pour pfSense.
  • Gestion alimentation SATA ➔ DĂ©sactivĂ© : EmpĂȘche la mise en veille des liaisons avec les disques (SSD/HDD) pour Ă©viter la corruption des systĂšmes de fichiers (Ext4/ZFS) des machines virtuelles lors des accĂšs I/O.
  • Économie d'Ă©nergie en fonctionnement ➔ DĂ©sactivĂ© : Permet d'allouer la puissance maximale du CPU pour orchestrer la charge entre les diffĂ©rents conteneurs (LXC) et machines virtuelles.

5. Validation de l'Architecture (Sécurité by Design)

En appliquant ces modifications (sauvegarde via F10 et redĂ©marrage), le matĂ©riel empĂȘchera l'hyperviseur Proxmox de s'endormir. La stabilitĂ© Ă©lectrique et matĂ©rielle est la condition sine qua non pour maintenir l'intĂ©gritĂ© de la segmentation rĂ©seau (les ponts virtuels) et le filtrage opĂ©rĂ© par la machine virtuelle pfSense. Sans une couche physique robuste, aucune politique de cybersĂ©curitĂ© logicielle ne peut tenir.