apache
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| apache [2026/09/01 19:22] – [2. Configuration des interfaces réseau] rene | apache [2026/09/02 16:41] (Version actuelle) – supprimée rene | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Serveur iPXE + Clonezilla sur Debian 13 avec Apache pour deux cartes réseau ====== | ||
| - | |||
| - | Servant les images Clonezilla via Apache, avec support BIOS et UEFI sur IPv4, et accès Internet pour les postes clonés. [[https:// | ||
| - | |||
| - | ===== Pourquoi un serveur iPXE - Clonezilla au Centre des Abeilles ===== | ||
| - | |||
| - | |||
| - | L' | ||
| - | |||
| - | =====Architecture réseau cible ===== | ||
| - | |||
| - | ip a | ||
| - | |||
| - | * **eno1** : interface vers Internet (DHCP ou IP statique fournie par votre FAI/ | ||
| - | * **enp2s0** : interface vers le réseau local de clonage (ex. `192.168.100.1/ | ||
| - | * **Apache** : sert les fichiers Clonezilla (kernel, initrd, squashfs) en HTTP. | ||
| - | * **iPXE** : chargeur intermédiaire qui permet de booter Clonezilla via HTTP (plus rapide et fiable que TFTP pour les gros fichiers). [[https:// | ||
| - | |||
| - | |||
| - | |||
| - | ====1. Préparation du système ==== | ||
| - | |||
| - | |||
| - | === 1.1. Installer les paquets nécessaires === | ||
| - | |||
| - | |||
| - | sudo apt update | ||
| - | sudo apt install -y dnsmasq tftpd-hpa syslinux-common grub-efi-amd64-signed shim-signed ipxe | ||
| - | |||
| - | * dnsmasq : DHCP + DNS + TFTP + proxyDHCP. | ||
| - | * tftpd-hpa : serveur TFTP (optionnel si vous utilisez uniquement iPXE via HTTP, mais utile pour les premiers chargeurs). | ||
| - | * syslinux-common : fournit pxelinux.0, undionly.kpxe, | ||
| - | * grub-efi-amd64-signed + shim-signed : pour le boot UEFI sécurisé. | ||
| - | * apache2 : serveur HTTP pour Clonezilla. | ||
| - | * ipxe : chargeurs iPXE (undionly.kpxe, | ||
| - | |||
| - | === 1.2. Désactiver le DHCP du routeur sur le réseau de clonage (pas concerné) === | ||
| - | |||
| - | Si votre routeur/ | ||
| - | ====2. Configuration des interfaces réseau ==== | ||
| - | |||
| - | |||
| - | === 2.1. Interface externe **eno1** === | ||
| - | |||
| - | |||
| - | Configurez '' | ||
| - | |||
| - | sudo nano / | ||
| - | |||
| - | auto eno1 | ||
| - | iface eno1 inet dhcp | ||
| - | | ||
| - | |||
| - | === 2.2. Interface de clonage '' | ||
| - | |||
| - | |||
| - | Attribuez une IP statique sur le réseau de clonage : | ||
| - | |||
| - | sudo nano / | ||
| - | |||
| - | Pas de gateway ici : la gateway par défaut reste sur eno1 | ||
| - | |||
| - | auto enp2s0 | ||
| - | iface enp2s0 inet static | ||
| - | address 192.168.100.1 | ||
| - | netmask 255.255.255.0 | ||
| - | |||
| - | Redémarrez le réseau : | ||
| - | |||
| - | sudo systemctl restart networking | ||
| - | # ou | ||
| - | sudo nmcli connection up < | ||
| - | |||
| - | |||
| - | Vérifiez que la route par défaut passe bien par **eno1** : | ||
| - | |||
| - | La ligne " | ||
| - | |||
| - | ip route show | ||
| - | comme ci-dessous | ||
| - | default via 192.168.1.254 dev eno1 proto dhcp src 192.168.1.168 metric 1003 | ||
| - | 192.168.1.0/ | ||
| - | 192.168.100.0/ | ||
| - | |||
| - | |||
| - | |||
| - | Si nécessaire, | ||
| - | |||
| - | Dans | ||
| - | | ||
| - | sudo nano / | ||
| - | |||
| - | ajoutez : | ||
| - | |||
| - | iface eno1 inet dhcp | ||
| - | metric 100 | ||
| - | | ||
| - | iface enp2s0 inet static | ||
| - | address 192.168.100.1 | ||
| - | netmask 255.255.255.0 | ||
| - | metric 200 | ||
| - | |||
| - | |||
| - | ====3. Configuration de dnsmasq pour PXE (BIOS + UEFI) ==== | ||
| - | |||
| - | |||
| - | === 3.1. Créer un fichier de configuration dédié === | ||
| - | |||
| - | |||
| - | sudo nano / | ||
| - | |||
| - | **Contenu (exemple pour un réseau `192.168.100.0/ | ||
| - | |||
| - | # Interface dédiée au réseau de clonage | ||
| - | interface=enp2s0 | ||
| - | bind-interfaces | ||
| - | | ||
| - | # Désactiver le DNS si inutile (optionnel) | ||
| - | # no-resolv | ||
| - | | ||
| - | # DHCP sur le réseau de clonage | ||
| - | dhcp-range=enp2s0, | ||
| - | dhcp-option=enp2s0, | ||
| - | dhcp-option=enp2s0, | ||
| - | dhcp-option=enp2s0, | ||
| - | | ||
| - | # Activer TFTP | ||
| - | enable-tftp | ||
| - | tftp-root=/ | ||
| - | | ||
| - | # Détection architecture client (BIOS vs UEFI) | ||
| - | dhcp-match=set: | ||
| - | dhcp-match=set: | ||
| - | dhcp-match=set: | ||
| - | | ||
| - | # Boot BIOS : iPXE undionly.kpxe | ||
| - | dhcp-boot=tag: | ||
| - | | ||
| - | # Boot UEFI x64 : iPXE ipxe.efi (ou shim + grub si Secure Boot) | ||
| - | dhcp-boot=tag: | ||
| - | | ||
| - | # Optionnel : proxyDHCP si un autre serveur DHCP existe déjà | ||
| - | # dhcp-range=enp2s0, | ||
| - | |||
| - | > **Remarque** : Si vous utilisez un DHCP existant sur ce réseau, remplacez la section `dhcp-range` par `dhcp-range=enp2s0, | ||
| - | |||
| - | === 3.2. Copier les chargeurs de boot dans `/srv/tftp` === | ||
| - | |||
| - | sudo mkdir -p /srv/tftp | ||
| - | |||
| - | # iPXE pour BIOS | ||
| - | sudo cp / | ||
| - | |||
| - | # iPXE pour UEFI x64 | ||
| - | sudo cp / | ||
| - | |||
| - | # **Optionnel** : pour Secure Boot, utilisez shim + grub | ||
| - | sudo cp / | ||
| - | sudo cp / | ||
| - | |||
| - | 3.3. Redémarrer dnsmasq | ||
| - | |||
| - | |||
| - | sudo systemctl restart dnsmasq | ||
| - | sudo systemctl enable dnsmasq | ||
| - | |||
| - | Vérifiez les logs : | ||
| - | |||
| - | |||
| - | sudo journalctl -u dnsmasq -f | ||
| - | |||
| - | |||
| - | ====4. Configuration d’Apache pour servir Clonezilla ==== | ||
| - | |||
| - | |||
| - | === 4.1. Télécharger Clonezilla Live === | ||
| - | |||
| - | |||
| - | Récupérez l’ISO Clonezilla Live stable depuis le site officiel : [[https:// | ||
| - | |||
| - | |||
| - | cd /tmp | ||
| - | wget https:// | ||
| - | |||
| - | > Remplacez l’URL par la dernière version disponible. | ||
| - | |||
| - | === 4.2. Extraire les fichiers nécessaires === | ||
| - | |||
| - | |||
| - | |||
| - | sudo mkdir -p / | ||
| - | sudo mount -o loop clonezilla-live.iso /mnt | ||
| - | sudo cp -r /mnt/live / | ||
| - | sudo umount /mnt | ||
| - | |||
| - | Les fichiers importants sont dans | ||
| - | / | ||
| - | |||
| - | * **vmlinuz** (ou linux) | ||
| - | * **initrd.img** (ou initrd.gz) | ||
| - | * **filesystem.squashfs** | ||
| - | |||
| - | === 4.3. Activer le module headers d’Apache (optionnel, pour les grands fichiers) === | ||
| - | |||
| - | |||
| - | |||
| - | sudo a2enmod headers | ||
| - | sudo systemctl restart apache2 | ||
| - | |||
| - | Vérifiez l’accès HTTP : | ||
| - | |||
| - | |||
| - | curl -I http:// | ||
| - | |||
| - | |||
| - | ====5. Configuration du menu iPXE ==== | ||
| - | |||
| - | |||
| - | ==== 5.1. Créer le fichier `menu.ipxe` ==== | ||
| - | |||
| - | |||
| - | |||
| - | sudo nano / | ||
| - | |||
| - | **Contenu :** | ||
| - | |||
| - | #!ipxe | ||
| - | | ||
| - | # Menu principal | ||
| - | menu Clonezilla Server | ||
| - | item --gap -- ------------------------- | ||
| - | item clonezilla_live | ||
| - | item local Boot local | ||
| - | choose --timeout 5000 selected || set selected clonezilla_live | ||
| - | goto ${selected} | ||
| - | | ||
| - | : | ||
| - | echo Chargement de Clonezilla Live... | ||
| - | kernel http:// | ||
| - | boot=live \ | ||
| - | union=overlay \ | ||
| - | config \ | ||
| - | components \ | ||
| - | quiet \ | ||
| - | noswap \ | ||
| - | edd=on \ | ||
| - | nomodeset \ | ||
| - | locales=fr_FR.UTF-8 \ | ||
| - | keyboard-layouts=fr \ | ||
| - | ocs_live_run=" | ||
| - | ocs_live_extra_param="" | ||
| - | ocs_live_batch=" | ||
| - | ocs_lang=" | ||
| - | vga=788 \ | ||
| - | ip=dhcp \ | ||
| - | live-media-path=/ | ||
| - | initrd=initrd.img | ||
| - | initrd http:// | ||
| - | boot | ||
| - | | ||
| - | :local | ||
| - | echo Boot local... | ||
| - | sanboot --no-describe || chain hd0 || chain fd0 || chain cdrom | ||
| - | |||
| - | > **Important** : Ajustez `live-media-path` si nécessaire. Clonezilla Live peut aussi être configuré pour monter le squashfs via HTTP avec `live-media=HTTP`.[[https:// | ||
| - | |||
| - | ==== 5.2. Faire pointer iPXE vers ce menu ==== | ||
| - | |||
| - | |||
| - | Les chargeurs `undionly.kpxe` et `ipxe.efi` doivent charger `menu.ipxe` via HTTP. Pour cela, créez un fichier de configuration iPXE dans `/srv/tftp` : | ||
| - | |||
| - | **Pour BIOS (`undionly.kpxe`) :** | ||
| - | |||
| - | |||
| - | sudo nano / | ||
| - | |||
| - | Mais avec iPXE, il est plus simple d’utiliser un script `.ipxe` chargé directement. Une approche courante est de modifier le comportement de dnsmasq pour qu’il serve un fichier `.ipxe` via TFTP, qui lui-même charge le menu HTTP. | ||
| - | |||
| - | **Alternative simple** : créer `/ | ||
| - | |||
| - | |||
| - | sudo nano / | ||
| - | |||
| - | #!ipxe | ||
| - | chain http:// | ||
| - | |||
| - | Puis modifier dnsmasq pour servir ce fichier : | ||
| - | |||
| - | |||
| - | # Dans | ||
| - | / | ||
| - | |||
| - | dhcp-boot=tag: | ||
| - | dhcp-boot=tag: | ||
| - | |||
| - | Et redémarrer dnsmasq. | ||
| - | |||
| - | |||
| - | =====6. Activer le routage et le NAT pour l’accès Internet des clients ===== | ||
| - | |||
| - | |||
| - | Pour que les postes clonés puissent accéder à Internet via `eno1` : | ||
| - | |||
| - | ==== 6.1. Activer l’IP forwarding ==== | ||
| - | |||
| - | sudo nano / | ||
| - | |||
| - | Ajoutez ou décommentez : | ||
| - | |||
| - | net.ipv4.ip_forward=1 | ||
| - | |||
| - | Appliquez : | ||
| - | |||
| - | |||
| - | sudo sysctl -p | ||
| - | |||
| - | ==== 6.2. Configurer iptables/ | ||
| - | |||
| - | |||
| - | **Avec iptables :** | ||
| - | |||
| - | |||
| - | sudo iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE | ||
| - | sudo iptables -A FORWARD -i enp2s0 -o eno1 -j ACCEPT | ||
| - | sudo iptables -A FORWARD -i eno1 -o enp2s0 -m state --state RELATED, | ||
| - | |||
| - | **Pour rendre persistant (Debian 13 utilise nftables par défaut, mais iptables-legacy fonctionne) :** | ||
| - | |||
| - | |||
| - | sudo apt install -y iptables-persistent | ||
| - | sudo netfilter-persistent save | ||
| - | |||
| - | Ou avec nftables : | ||
| - | |||
| - | |||
| - | sudo nano / | ||
| - | |||
| - | table ip nat { | ||
| - | chain postrouting { | ||
| - | type nat hook postrouting priority 100; | ||
| - | oifname " | ||
| - | } | ||
| - | } | ||
| - | | ||
| - | table ip filter { | ||
| - | chain forward { | ||
| - | type filter hook forward priority 0; | ||
| - | iifname " | ||
| - | iifname " | ||
| - | } | ||
| - | } | ||
| - | |||
| - | |||
| - | sudo systemctl restart nftables | ||
| - | |||
| - | |||
| - | =====7. Tests et validation ===== | ||
| - | |||
| - | |||
| - | ==== 7.1. Vérifier le DHCP ==== | ||
| - | |||
| - | |||
| - | Sur un client, lancez : | ||
| - | |||
| - | |||
| - | sudo dhclient -v enp2s0 | ||
| - | ip addr show enp2s0 | ||
| - | cat / | ||
| - | |||
| - | Le client doit obtenir une IP dans `192.168.100.100-200`, | ||
| - | |||
| - | ==== 7.2. Tester le PXE ==== | ||
| - | |||
| - | |||
| - | * Démarrez un poste client en PXE (BIOS ou UEFI). | ||
| - | * Il doit charger iPXE, puis afficher le menu Clonezilla. | ||
| - | * Sélectionnez Clonezilla Live et vérifiez que le kernel/ | ||
| - | |||
| - | ==== 7.3. Vérifier l’accès Internet depuis un client cloné ==== | ||
| - | |||
| - | |||
| - | Une fois Clonezilla démarré, ouvrez un terminal et testez : | ||
| - | |||
| - | |||
| - | ping -c 3 8.8.8.8 | ||
| - | ping -c 3 debian.org | ||
| - | |||
| - | |||
| - | ====8. Notes et optimisations ==== | ||
| - | |||
| - | |||
| - | * **Secure Boot** : Si vos clients ont Secure Boot activé, utilisez `shimx64.efi` + `grubx64.efi` signés, puis chainload vers iPXE ou directement vers le kernel Clonezilla. [ipxe](https:// | ||
| - | * **Performance** : Servir Clonezilla via HTTP (iPXE) est nettement plus rapide que TFTP pour les gros fichiers. [khimananda](https:// | ||
| - | * **Sécurité** : Restreignez l’accès Apache au réseau de clonage si nécessaire avec `< | ||
| - | * **Logs** : Surveillez `/ | ||
| - | |||
| - | |||
| - | ## Résumé des fichiers clés | ||
| - | |||
| - | | Fichier | ||
| - | | Configuration dnsmasq | `/ | ||
| - | | Chargeur BIOS | `/ | ||
| - | | Chargeur UEFI | `/ | ||
| - | | Script iPXE | `/ | ||
| - | | Menu iPXE | `/ | ||
| - | | Kernel Clonezilla | ||
| - | | Initrd Clonezilla | ||
| - | | Squashfs | ||
| - | |||
| - | Cette configuration est robuste, supporte BIOS et UEFI, et permet aux postes clonés d’accéder à Internet via le NAT du serveur. [khimananda](https:// | ||
apache.1788290526.txt.gz · Dernière modification : de rene
