add content
This commit is contained in:
parent
93c9f1e4df
commit
4ad900bcb0
81 changed files with 3170 additions and 0 deletions
|
@ -0,0 +1,96 @@
|
|||
Title: Démarrage PXE avec Openwrt, Dnsmasq et FreeNAS
|
||||
Date: 2016-03-09 15:14
|
||||
Category: sysadmin
|
||||
Tags: réseau, TFTP, OpenWRT, pl-fr
|
||||
Status: published
|
||||
|
||||
Ajourd'hui j'ai décidé de simplifier mon architecture réseau , je me sépare donc
|
||||
de mon serveur DHCP(dhcpd) et décide d'utiliser celui de mon routeur sous
|
||||
[OpenWRT][l_openwrt]. Il y a tout de même un petit couac : mon vieux serveur me
|
||||
permettait de démarrer en PXE pour différentes architectures x86 : efi, efi64 et
|
||||
Bios.
|
||||
|
||||
Si la configuration du PXE sous dhcpd est très documenté, avec
|
||||
[dnsmasq][l_dnsmasq] c'est pas vraiment le cas. Je vous livre ici le résultat de
|
||||
mes recherche avec un exemple qui fonctionne très bien.
|
||||
|
||||
### Ce que j'ai
|
||||
|
||||
J'ai un routeur TPLink sous OpenWRT et un serveur Freenas qui fournit des
|
||||
services SMB, NFS et TFTP. FreeNAS et déjà configuré et fonctionnel puisque je
|
||||
l'utilisait déjà avec mon serveur DHCP.
|
||||
|
||||
Le démarrage PXE est assuré par [iPXE][l_ipxe]. Le tout doit me permettre de
|
||||
démarrer des machines via le réseau soit pour installer des Windows, soit cloner
|
||||
/ restaurer des machines avec Clonezilla ou encore dépanner / récupérer des
|
||||
données avec SysrecueCD. Las machines clientes sur lesquelles j'interviens vont
|
||||
du vieux portable en Core Duo à l'ordinateur fixe en Core i7 en passant par des
|
||||
Mac (bon je triche, là iPXE démarre depuis une clé USB : pas de vrai PXE
|
||||
possible).
|
||||
|
||||
Voilà un schéma de ce que je veux :
|
||||
|
||||

|
||||
|
||||
Sur mon FreeNAS, TFTP est activé, les fichiers sont rangés comme ceci :
|
||||
|
||||
* ``tftp/efi``
|
||||
* * ``ipxe.efi`` : le chargeur de démarrage ipxe en mode efi64
|
||||
* * ``ipxe_32.efi`` : le chargeur de démarrage ipxe en mode EFI 32 bits, ce
|
||||
n'est pas très utile normalement mais il arrive encore de trouver des
|
||||
machines efi32 … ``tftp/bios``
|
||||
* * ``ipxe.pxe`` : le chargeur de démarrage ipxe en mode Bios ``/tftp/c``
|
||||
* * ``boot.ipxe`` : le fichier de configuration contenant le menu qu'ipxe
|
||||
appelle lorsqu'il démarre.
|
||||
|
||||
### configuration du routeur
|
||||
|
||||
J'ai donc besoin de configurer dnsmasq sur le routeur pour lui permettre de
|
||||
choisir le bon fichier de démarrage par le réseau en fonction de ma machine
|
||||
cliente.
|
||||
|
||||
Je me connecte sont en SSH sur mon routeur, puis j'édite le fichier
|
||||
``/etc/dnsmasq.conf`` comme ci dessous :
|
||||
|
||||
~~~
|
||||
# mach arch type for proper pxe Boot
|
||||
dhcp-match=bios,option:client-arch, 0
|
||||
dhcp-match=efi32,option:client-arch, 6
|
||||
dhcp-match=efix64,option:client-arch, 7
|
||||
dhcp-match=efix64,option:client-arch, 9
|
||||
|
||||
#Special case : iPXE boot
|
||||
dhcp-match=ipxe,option:user-class,iPXE
|
||||
|
||||
# Boot now!
|
||||
dhcp-boot=tag:bios,bios/ipxe.pxe,srvtech,192.168.10.250
|
||||
dhcp-boot=tag:efix32,efi/ipxe.efi,srvtech,192.168.10.250
|
||||
dhcp-boot=tag:efix64,efi/ipxe.efi,srvtech,192.168.10.250
|
||||
dhcp-boot=tag:ipxe,c/boot.ipxe,srvtech,192.168.10.250
|
||||
~~~
|
||||
|
||||
Le principe est très simple, on colle une étiquette en fonction de
|
||||
l'architecture du client avec l'option `dhcp-match`. La syntaxe est
|
||||
**dhcp-match=tag:[*étiquette*],option:[*option_a_comparer*],[*valeur_a_comparer*]**.
|
||||
|
||||
Cette étiquette servira ensuite au dhcp d'envoyer à la machine client le bon
|
||||
ordre de récupération du fichier de démarrage avec l'option ``dhcp-boot`` avec
|
||||
comme syntaxe
|
||||
**dhcp-boot=tag:[*étiquette*],[*fichier_de_demarrage*],[*nom_du_serveur*],[*adresse_du_serveur*]**.
|
||||
|
||||
Étant donné qu'iPXE vient chercher son fichier de configuration lui aussi en
|
||||
mode PXE, notre serveur DCHP attribue à sa demande une étiquette spéciale afin
|
||||
qu'il récupère convenablement celui-ci.
|
||||
|
||||
Il suffit ensuite de redémarrer le service dnsmasq avec la commande
|
||||
``/etc/init.d/dnsmasq restart``.
|
||||
|
||||
Il suffit maintenant de tester un démarrage par le réseau mais attention, pensez
|
||||
a désactiver le [Secure Boot][l_secure-boot] dans les paramétrages de l'EFI sur
|
||||
vos machines clientes...
|
||||
|
||||
|
||||
[l_openwrt]:https://openwrt.org/
|
||||
[l_ipxe]:http://ipxe.org/
|
||||
[l_dnsmasq]:http://www.thekelleys.org.uk/dnsmasq/doc.html
|
||||
[l_secure-boot]:https://fr.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#Lancement_s.C3.A9curis.C3.A9_.28secure_boot.29
|
Loading…
Add table
Add a link
Reference in a new issue