Outils pour utilisateurs

Outils du site


apache

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
apache [2026/08/31 07:27] – [4. Configuration d’Apache pour servir Clonezilla] reneapache [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://khimananda.com/blog/pxe-boot-for-automated-os-installs|khimananda]] 
- 
-=====Architecture réseau cible ===== 
- 
-  ip a 
- 
-  * **eno1** : interface vers Internet (DHCP ou IP statique fournie par votre FAI/routeur). Cette interface ne doit **pas** servir de DHCP/PXE aux clients de clonage. 
-  * **enp2s0** : interface vers le réseau local de clonage (ex. `192.168.100.1/24`). C’est sur ce réseau que dnsmasq servira DHCP + TFTP + proxyDHCP pour le PXE. 
-  * **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://khimananda.com/blog/pxe-boot-for-automated-os-installs|khimananda]] 
- 
- 
- 
-====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, etc. 
-  * grub-efi-amd64-signed + shim-signed : pour le boot UEFI sécurisé. 
-  * apache2 : serveur HTTP pour Clonezilla. 
-  * ipxe : chargeurs iPXE (undionly.kpxe, ipxe.efi). [[https://khimananda.com/blog/pxe-boot-for-automated-os-installs|khimananda]] 
- 
-===  1.2. Désactiver le DHCP du routeur sur le réseau de clonage (pas concerné) === 
- 
-Si votre routeur/switch gère déjà le DHCP sur le réseau 192.168.100.0/24, soit vous le désactivez, soit vous configurez dnsmasq en **proxyDHCP** (recommandé pour coexister avec un DHCP existant). [stackharbor](https://stackharbor.com/fr/base-de-connaissances/dnsmasq-small-network/) 
-====2. Configuration des interfaces réseau ==== 
- 
- 
-===  2.1. Interface externe **eno1** === 
- 
- 
-Configurez ''eno1'' (DHCP).  
- 
-  sudo nano /etc/network/interfaces. 
- 
-  auto eno1 
-  iface eno1 inet dhcp 
-   
- 
-===  2.2. Interface de clonage ''enp2s0'' === 
- 
- 
-Attribuez une IP statique sur le réseau de clonage : 
- 
-  sudo nano /etc/network/interfaces 
- 
-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 <nom-connexion> 
- 
- 
-Vérifiez que la route par défaut passe bien par **eno1** : 
- 
-La ligne "default via ..." doit pointer vers la gateway de eno1 
- 
-  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/24 dev eno1 proto dhcp scope link src 192.168.1.168 metric 1003  
-  192.168.100.0/24 dev enp2s0 proto kernel scope link src 192.168.100.1 linkdown  
- 
- 
- 
-Si nécessaire, ajustez les métriques pour prioriser **eno1** : [[https://www.reddit.com/r/debian/comments/1qu1jox/using_2_nics_with_2_networks/|reddit]] 
- 
-Dans 
-   
-  sudo nano /etc/network/interfaces 
- 
-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 /etc/dnsmasq.d/pxe-clonezilla.conf 
- 
-**Contenu (exemple pour un réseau `192.168.100.0/24`) :** 
- 
-  # 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,192.168.100.100,192.168.100.200,12h 
-  dhcp-option=enp2s0,3,192.168.100.1      # passerelle (le serveur lui-même) 
-  dhcp-option=enp2s0,6,192.168.100.1      # DNS (le serveur, qui forward vers Internet) 
-  dhcp-option=enp2s0,15,clonezilla.local  # domaine local 
-   
-  # Activer TFTP 
-  enable-tftp 
-  tftp-root=/srv/tftp 
-   
-  # Détection architecture client (BIOS vs UEFI) 
-  dhcp-match=set:bios,option:client-arch,0      # BIOS/PCAT 
-  dhcp-match=set:efi64,option:client-arch,7     # UEFI x86_64 
-  dhcp-match=set:efi32,option:client-arch,6     # UEFI x86 (rare) 
-   
-  # Boot BIOS : iPXE undionly.kpxe 
-  dhcp-boot=tag:bios,undionly.kpxe 
-   
-  # Boot UEFI x64 : iPXE ipxe.efi (ou shim + grub si Secure Boot) 
-  dhcp-boot=tag:efi64,ipxe.efi 
-   
-  # Optionnel : proxyDHCP si un autre serveur DHCP existe déjà 
-  # dhcp-range=enp2s0,proxy 
- 
-> **Remarque** : Si vous utilisez un DHCP existant sur ce réseau, remplacez la section `dhcp-range` par `dhcp-range=enp2s0,proxy` et assurez-vous que votre DHCP principal ne définit **pas** les options 66/67 (next-server/filename). [[https://stackharbor.com/fr/base-de-connaissances/dnsmasq-small-network/|stackharbor]] 
- 
-===  3.2. Copier les chargeurs de boot dans `/srv/tftp` === 
- 
-  sudo mkdir -p /srv/tftp 
- 
-# iPXE pour BIOS 
-  sudo cp /usr/lib/ipxe/undionly.kpxe /srv/tftp/ 
- 
-# iPXE pour UEFI x64 
-  sudo cp /usr/lib/ipxe/ipxe.efi /srv/tftp/ 
- 
-# **Optionnel** : pour Secure Boot, utilisez shim + grub 
-  sudo cp /usr/lib/shim/shimx64.efi.signed /srv/tftp/bootx64.efi 
-  sudo cp /usr/lib/grub/x86_64-efi-signed/grubx64.efi /srv/tftp/grubx64.efi 
- 
- 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 : [de.scribd](https://de.scribd.com/document/226215640/How-to-Setup-a-Clonezilla-Server) 
- 
- 
-  cd /tmp 
-  wget https://clonezilla.org/downloads/download.php?dist=debian&select=stable&version=20240801-noble&iso=clonezilla-live-20240801-noble-amd64.iso -O clonezilla-live.iso 
- 
-> Remplacez l’URL par la dernière version disponible. 
- 
-===  4.2. Extraire les fichiers nécessaires === 
- 
- 
- 
-  sudo mkdir -p /var/www/html/clonezilla 
-  sudo mount -o loop clonezilla-live.iso /mnt 
-  sudo cp -r /mnt/live /var/www/html/clonezilla/ 
-  sudo umount /mnt 
- 
-Les fichiers importants sont dans `/var/www/html/clonezilla/live/` : 
-  * **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://192.168.100.1/clonezilla/live/vmlinuz 
- 
- 
-====5. Configuration du menu iPXE ==== 
- 
- 
-====  5.1. Créer le fichier `menu.ipxe` ==== 
- 
- 
- 
-  sudo nano /var/www/html/clonezilla/menu.ipxe 
- 
-**Contenu :** 
- 
-  #!ipxe 
-   
-  # Menu principal 
-  menu Clonezilla Server 
-  item --gap -- ------------------------- 
-  item clonezilla_live   Clonezilla Live (sauvegarde/restauration) 
-  item local             Boot local 
-  choose --timeout 5000 selected || set selected clonezilla_live 
-  goto ${selected} 
-   
-  :clonezilla_live 
-  echo Chargement de Clonezilla Live... 
-  kernel http://192.168.100.1/clonezilla/live/vmlinuz \ 
-    boot=live \ 
-    union=overlay \ 
-    config \ 
-    components \ 
-    quiet \ 
-    noswap \ 
-    edd=on \ 
-    nomodeset \ 
-    locales=fr_FR.UTF-8 \ 
-    keyboard-layouts=fr \ 
-    ocs_live_run="ocs-live-general" \ 
-    ocs_live_extra_param="" \ 
-    ocs_live_batch="no" \ 
-    ocs_lang="fr_FR.UTF-8" \ 
-    vga=788 \ 
-    ip=dhcp \ 
-    live-media-path=/clonezilla/live/ \ 
-    initrd=initrd.img 
-  initrd http://192.168.100.1/clonezilla/live/initrd.img 
-  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`. [khimananda](https://khimananda.com/blog/pxe-boot-for-automated-os-installs) 
- 
-====  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 /srv/tftp/pxelinux.cfg/default 
- 
-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 `/srv/tftp/boot.ipxe` : 
- 
- 
-  sudo nano /srv/tftp/boot.ipxe 
- 
-  #!ipxe 
-  chain http://192.168.100.1/clonezilla/menu.ipxe 
- 
-Puis modifier dnsmasq pour servir ce fichier : 
- 
- 
-# Dans /etc/dnsmasq.d/pxe-clonezilla.conf 
-  dhcp-boot=tag:bios,boot.ipxe 
-  dhcp-boot=tag:efi64,boot.ipxe 
- 
-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 /etc/sysctl.conf 
- 
-Ajoutez ou décommentez : 
- 
-  net.ipv4.ip_forward=1 
- 
-Appliquez : 
- 
- 
-  sudo sysctl -p 
- 
-====  6.2. Configurer iptables/nftables pour le NAT ==== 
- 
- 
-**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,ESTABLISHED -j ACCEPT 
- 
-**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 /etc/nftables.conf 
- 
-  table ip nat { 
-    chain postrouting { 
-        type nat hook postrouting priority 100; 
-        oifname "eno1" masquerade 
-    } 
-  } 
-   
-  table ip filter { 
-    chain forward { 
-        type filter hook forward priority 0; 
-        iifname "enp2s0" oifname "eno1" accept 
-        iifname "eno1" oifname "enp2s0" ct state related,established accept 
-    } 
-  } 
- 
- 
-  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 /etc/resolv.conf 
- 
-Le client doit obtenir une IP dans `192.168.100.100-200`, avec `192.168.100.1` comme gateway et DNS. 
- 
-====  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/initrd se chargent via HTTP. 
- 
-====  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://ipxe.org/secboot) 
-  * - **Performance** : Servir Clonezilla via HTTP (iPXE) est nettement plus rapide que TFTP pour les gros fichiers. [khimananda](https://khimananda.com/blog/pxe-boot-for-automated-os-installs) 
-  * - **Sécurité** : Restreignez l’accès Apache au réseau de clonage si nécessaire avec `<Directory>` dans `/etc/apache2/sites-available/000-default.conf`. 
-  * - **Logs** : Surveillez `/var/log/syslog` ou `journalctl -u dnsmasq` pour déboguer les problèmes de PXE. 
- 
- 
-## Résumé des fichiers clés 
- 
-| Fichier               | Chemin                                              | Rôle | 
-| Configuration dnsmasq | `/etc/dnsmasq.d/pxe-clonezilla.conf`                | DHCP + TFTP + PXE | 
-| Chargeur BIOS         | `/srv/tftp/undionly.kpxe`                           | iPXE pour BIOS | 
-| Chargeur UEFI          | `/srv/tftp/ipxe.efi`                               | iPXE pour UEFI | 
-| Script iPXE           | `/srv/tftp/boot.ipxe`                               | Chainload vers menu HTTP | 
-| Menu iPXE             | `/var/www/html/clonezilla/menu.ipxe`                | Menu de boot Clonezilla | 
-| Kernel Clonezilla     | `/var/www/html/clonezilla/live/vmlinuz`             | Noyau Clonezilla | 
-| Initrd Clonezilla     | `/var/www/html/clonezilla/live/initrd.img`          | RAM disk Clonezilla | 
-| Squashfs              | `/var/www/html/clonezilla/live/filesystem.squashfs` | Système Clonezilla | 
- 
-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://khimananda.com/blog/pxe-boot-for-automated-os-installs) 
apache.1788161268.txt.gz · Dernière modification : de rene