sudo apt update
sudo apt install dnsmasq
sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf
port=69
dhcp-range=192.168.1.50,192.168.1.150,12h
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/tftpboot
Assurez-vous de remplacer eth0
par le nom de votre interface réseau et ajustez la plage DHCP selon votre configuration réseau.
NB : Pensez à vérifier que votre adresse ip de carte réseau filaire (ethernet) soit bien en 192.168.1.49 par exemple via network-manager (outil graphique) ou via /etc/network/interfaces comme suit :
sudo nano /etc/network/interfaces
Avec les arguments suivants :
auto eth0 # remplacer eth0 par le nom de votre interface réseau filaire à chaque occurence
iface eth0 inet static
address 192.168.1.49
netmask 255.255.255.0
gateway 192.168.1.1
Pour connaître le nom de votre interface réseau filaire, vous pouvez utiliser la commande ifconfig
le résultat devrait ressembler à celui-ci :
root@PXE:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.49 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::be24:11ff:fee9:9b8 prefixlen 64 scopeid 0x20<link>
ether bc:24:11:e9:09:b8 txqueuelen 1000 (Ethernet)
RX packets 1369771 bytes 111933946 (111.9 MB)
RX errors 0 dropped 49007 overruns 0 frame 0
TX packets 81393 bytes 4120418 (4.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Ici, eth0
est le nom de notre interface réseau filaire.
sudo mkdir -p /tftpboot
sudo chmod -R 777 /tftpboot
sudo apt install syslinux pxelinux
sudo cp /usr/lib/PXELINUX/pxelinux.0 /tftpboot/
sudo cp /usr/lib/syslinux/modules/bios/*.c32 /tftpboot/
sudo mkdir -p /tftpboot/pxelinux.cfg
sudo nano /tftpboot/pxelinux.cfg/default
DEFAULT menu.c32
PROMPT 0
MENU TITLE PXE Boot Menu
TIMEOUT 300
LABEL local
MENU LABEL Boot from local drive
LOCALBOOT 0
LABEL debian
MENU LABEL Install Debian
KERNEL debian-installer/amd64/linux
APPEND initrd=debian-installer/amd64/initrd.gz
Pour cet exemple, nous utiliserons Debian :
cd /tftpboot
sudo wget http://ftp.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/netboot.tar.gz
sudo tar xzf netboot.tar.gz
sudo rm netboot.tar.gz
sudo systemctl restart dnsmasq
sudo systemctl status dnsmasq
Ce tutoriel fournit une configuration de base pour un serveur PXE utilisant dnsmasq. N’oubliez pas d’ajuster les paramètres réseau et les chemins de fichiers selon votre environnement spécifique. Pour des configurations plus avancées ou l’ajout d’autres systèmes d’exploitation, vous devrez modifier le fichier de configuration PXE et ajouter les fichiers d’installation appropriés.
sudo mkdir /mnt/iso
mount
avec les options appropriées pour monter l’image ISO :sudo mount -t iso9660 -o loop '/home/$USER/Téléchargements/TOOLBOX-amd64.iso' /mnt/iso
cd /mnt/iso
ls -la
total 16
drwxr-xr-x 1 lacapsule lacapsule 2048 déc. 30 18:07 ./
drwxr-x---+ 3 root root 4096 déc. 31 09:14 ../
drwxr-xr-x 1 lacapsule lacapsule 2048 déc. 30 17:57 boot/
drwxr-xr-x 1 lacapsule lacapsule 2048 déc. 30 18:07 .disk/
drwxr-xr-x 1 lacapsule lacapsule 2048 déc. 30 17:57 efi/
drwxr-xr-x 1 lacapsule lacapsule 2048 déc. 30 17:58 isolinux/
drwxr-xr-x 1 lacapsule lacapsule 2048 déc. 30 18:01 live/
sudo mkdir /tftpboot/TOOLBOX
sudo cp -r /mnt/iso/* /tftpboot/TOOLBOX
Nous pouvons à présent ajouter une entrée de menu dans notre fichier default afin de permettre un boot sur le système contenu dans l’iso.
Lorsque vous avez terminé d’utiliser l’image ISO, vous pouvez la démonter :
sudo umount /mnt/iso
sudo apt install nfs-kernel-server
sudo nano /etc/exports
Ajoutez la ligne suivante :
/tftpboot *(ro,sync,no_subtree_check)
sudo systemctl restart nfs-kernel-server && sudo exportfs -a
Vous pouvez à présent envoyer de gros fichiers tel qu’un filesystem.squashfs via le réseau afin de démarrer dessus en live.
sudo nano /tftpboot/pxelinux.cfg/default
DEFAULT menu.c32
PROMPT 0
MENU TITLE PXE Boot Menu
TIMEOUT 300
LABEL local
MENU LABEL Boot from local drive
LOCALBOOT 0
LABEL debian
MENU LABEL Install Debian
KERNEL debian-installer/amd64/linux
APPEND initrd=debian-installer/amd64/initrd.gz
# Modification du menu de Debian à notre distribution TOOLBOX
LABEL TOOLBOX : Reconditionnement
KERNEL TOOLBOX/live/vmlinuz-5.4.0-72-generic
APPEND boot=live ksdevice=bootif rootfstype=nfs netboot=nfs nfsroot=192.168.1.127:/tftpboot/TOOLBOX initrd=TOOLBOX/live/initrd.img-5.4.0-72-generic ip=dhcp nosplash --
TEXT HELP
Une distribution faite pour le reconditionnement informatique
ENDTEXT
Il sera nécessaire de modifier l’adresse IP 192.168.1.127 par celle de votre choix.
ip -4 addr show $(ip route show default | awk '/default/ {print $5}') | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
Pour permettre aux clients ayant des adresses IP en 10.x.x.x d’accéder au réseau 192.168.1.x, vous devrez configurer le routage sur votre serveur PXE :
bash
sudo sysctl -w net.ipv4.ip_forward=1
bash
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/etc/sysctl.conf
et en sauvegardant les règles iptables.Configurez l’interface réseau de votre serveur PXE pour qu’elle ait une adresse IP dans les deux plages :
/etc/network/interfaces
:sudo nano /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.x # Adresse dans le réseau 192.168.1.x
netmask 255.255.255.0
gateway 192.168.1.1
iface eth0 inet static
address 10.0.0.1 # Adresse dans le réseau 10.x.x.x
netmask 255.255.255.0
Après avoir effectué ces modifications, redémarrez les services concernés :
sudo systemctl restart networking
sudo systemctl restart dnsmasq
sudo systemctl restart nfs-kernel-server
Cette configuration permettra à votre serveur PXE de distribuer des adresses IP dans la plage 10.x.x.x tout en permettant l’accès au réseau 192.168.1.x. Assurez-vous d’adapter les adresses IP et les interfaces réseau en fonction de votre configuration spécifique