Dnsmasq, mon meilleur ami aussi pour le boot PXE !

Dnsmasq est un super petit serveur DNS et DHCP à destination des bricoleurs : fort simple à déployer et utiliser, il est parfait pour les installations domestiques ou celles des petites entreprises (on en a déjà parlé ici, ici et ici). Dnsmasq est par exemple employé au sein du micrologiciel (firmware) pour routeur Tomato car il est léger et en même temps très puissant.

J'ai découvert aujourd'hui une nouvelle corde à l'arc de Dnsmasq : il possède des fonctionnalités TFTP (Trivial File Transfer Protocol) qui permettent de l'utiliser pour booter un ordinateur (un serveur par exemple) en mode PXE (Preboot Execution Environment) en quelques lignes de configuration seulement.

L'usage est fort simple, tout se règle dans le fichier de configuration /etc/dnsmasq.conf :

dhcp-boot=pxelinux.0,pxeserver,192.168.18.11
pxe-service=x86PC, "Install Linux", pxelinux
enable-tftp
tftp-root=/tmp/tftp

Les 4 lignes sont assez explicites :

dhcp-boot=pxelinux.0,pxeserver,192.168.18.11
pxe-service=x86PC, "Install Linux", pxelinux

propose à chaque système en faisant la requête de démarrer en mode PXE en interrogeant 192.168.18.11 comme serveur de boot PXE. Pour que la suite fonctionne, il faut évidemment que 192.168.18.11 pointe vers l'hôte hébergeant le service Dnsmasq lui-même.

Puis

enable-tftp

active le TFTP de Dnsmasq.

Et enfin,

tftp-root=/tmp/tftp

indique où trouver le répertoire qui sera servi au travers de TFTP.

Si l'on veut démarrer l'installation de Debian par exemple, on aura préalablement décompressé netboot.tar.gz dans ce dossier ! Et miracle, tout périphérique cherchant à démarrer avec PXE sur le réseau va interroger Dnsmasq et récupérer le nécessaire pour le boot. Démarrer un serveur en PXE devient alors très facile !