======== Serveur Clonezilla des Abeilles ====== ===== Pourquoi un serveur iPXE - Clonezilla ===== Une vingtaine d'ordinateurs par semaine à configurer pour être distribuer par le Centre des Abeilles dans le cadre de son opération de solidarité débutée en 2009, avec une ou plusieurs clés usb Clonezilla pour déployer des images du système, ces manipulations deviennent fastidieuses surtout lorsqu'il faut mettre à jour ces différentes clés. Un serveur DRBL - Clonezilla est d'une utilisation complexe puisqu'il faut intervenir aussi bien sur le serveur que sur le poste client. Par contre Un serveur iPxe couplé à Clonezilla à l'avantage de laisser au poste client le choix de l'image système à cloner, par exemple Debian BIOS ou UEFI sans intervenir sur le serveur lui-même. ==== Pourquoi PXE et iPXE ==== Suivant que les postes clients sont en BIOS (Legacy) ou en UEFI ils vont boutés en PXE ou en iPXE Extrait de [[https://www.it-connect.fr/le-boot-pxe-et-le-boot-ipxe-pour-les-debutants/ | IT-Connect ]] **Le boot PXE** (Preboot Execution Environment) repose sur deux protocoles importants : le protocole DHCP (Dynamic Host Configuration Protocol) pour fournir une configuration IP au client PXE, ainsi que l'adresse IP du serveur qui héberge les sources, ainsi que le protocole TFTP (Trivial File Transfer Protocol) pour accéder au serveur PXE et commencer à transférer l'image de démarrage via le réseau - Le client PXE, à savoir l'ordinateur, démarre et envoie une requête DHCP sur le réseau pour obtenir une adresse IP. - Le serveur DHCP répond à la demande en fournissant une adresse IP au client, ainsi que les informations nécessaires pour accéder au serveur PXE (adresse IP ou nom). - Le client PXE peut accéder au réseau donc il envoie une demande de boot PXE sur le réseau, en utilisant le protocole TFTP pour accéder au serveur PXE. - Le serveur PXE répond à la demande de l'ordinateur en fournissant les fichiers nécessaires pour le démarrage du système. - Le client PXE télécharge ces fichiers à partir du serveur PXE (via le protocole TFTP) et les utilise pour démarrer sur l'image fournie. **Le boot iPXE** est une méthode plus récente qui permet à un ordinateur de démarrer sur le réseau. Le protocole iPXE est une extension du protocole PXE qui offre des fonctionnalités supplémentaires telles que: * le démarrage à partir d'un serveur web via HTTP * le support des scripts et des menus de démarrage personnalisés **UEFI vs BIOS** : détecter l’architecture via DHCP pour envoyer ipxe.efi en UEFI et undionly.kpxe en BIOS, sinon l’amorçage échoue **Passerelle** : si vous voulez Internet pour les clients, activer ip_forward et éventuellement NAT ===== Objectif du serveur ===== * **eth0** → accès **Internet** via le DHCP de votre réseau externe * **eth1** → réseau **interne** dédié au déploiement : * Serveur DHCP interne * Boot iPXE (DHCP + TFTP) * Clonezilla pour cloner des postes * Après clonage, les postes pourront accéder à Internet via la machine serveur (routage + NAT) ===== Installation ===== ''Utilisez un ordinateur comportant deux cartes réseau sous Debian 13 Gnome chiffré avec serveurs WEB et SSH installés'' ==== 1. Vérification et configuration des interfaces réseau ==== === Identifier les interfaces. Notez les noms exacts (ex: eth0, eth1 ou enp2s0, eno1) === ip a === Si vous utilisez systemd-networkd sur : === ''/etc/systemd/network/10-external.network'' ini [Match] Name=eth0 [Network] DHCP=yes et sur ''/etc/systemd/network/20-internal.network'' ini [Match] Name=eth1 [Network] Address=192.168.50.1/24 Activez sudo systemctl restart systemd-networkd ==== 2. Installez les services nécessaires ==== Nous utiliserons **dnsmasq**, car il gère DHCP interne, TFTP et support PXE/iPXE sudo apt update sudo apt install dnsmasq ipxe tftpd-hpa ==== 3. Préparer le répertoire TFTP ==== sudo mkdir -p /srv/tftp sudo chmod -R 755 /srv/tftp Copier les images iPXE : sudo cp /usr/lib/ipxe/{undionly.kpxe,ipxe.efi} /srv/tftp/ ====4. Configurer dnsmasq (DHCP interne + TFTP) ==== Éditer : ''/etc/dnsmasq.d/ipxe.conf'' # Interface interne uniquement interface=eth1 bind-interfaces # DHCP range for client machines dhcp-range=192.168.50.10,192.168.50.200,12h # Gateway vers Internet à travers le serveur dhcp-option=3,192.168.50.1 dhcp-option=6,1.1.1.1,8.8.8.8 # TFTP server enable-tftp tftp-root=/srv/tftp # Fichiers de boot iPXE dhcp-boot=undionly.kpxe Redémarrer sudo systemctl restart dnsmasq ===== 5. Mettre les fichiers Clonezilla sur le serveur Web ===== Les images Clonezilla doivent être servies par HTTP (plus rapide que TFTP). ==== Créer un dossier : ==== sudo mkdir -p /var/www/html/clonezilla/live ==== Télécharger Clonezilla zip ==== Extraire le fichier zip dans /home/lq/Téléchargements/clonezilla-live-x.x.x-xx-amd64 puis copier les fichiers : cd /home/lq/Téléchargements/clonezilla-live-x.x.x-xx-amd64/live sudo cp filesystem.squashfs initrd.img vmlinuz /var/www/html/clonezilla/live/ . ==== 6. Configurer le script iPXE ==== Créer le fichier ''/srv/tftp/boot.ipxe'' #!ipxe kernel http://192.168.50.1/clonezilla/live/vmlinuz boot=live union=overlay ip=dhcp components fetch=http://192.168.50.1/clonezilla/live/filesystem.squashfs noeject toram initrd http://192.168.50.1/clonezilla/live/initrd.img boot ==== Modifier dnsmasq pour que iPXE lance ce script : ==== Ajouter à ''/etc/dnsmasq.d/ipxe.conf'' dhcp-userclass=set:ipxe,iPXE dhcp-boot=tag:ipxe,boot.ipxe Redémarrer : sudo systemctl restart dnsmasq ====7. Configurer le routage Internet pour les postes clonés ==== === Activer l'IP forwarding : === Dans ''/etc/sysctl.conf'' net.ipv4.ip_forward = 1 Appliquer : sudo sysctl -p Configurer le NAT : sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Rendre permanent : sudo apt install iptables-persistent sudo netfilter-persistent save Les postes du réseau interne pourront maintenant accéder à Internet via le serveur. ==== 8. Test du boot iPXE ==== - Brancher un poste sur le réseau interne (via eth1) - Activer le boot PXE dans le BIOS - Vérifier que : * il obtient une IP → 192.168.50.x * il télécharge `undionly.kpxe` * iPXE charge `boot.ipxe` * Clonezilla démarre