[Dnsmasq-discuss] Portable PXE boot appliance

Simon Kelley simon at thekelleys.org.uk
Fri Dec 19 09:56:36 UTC 2025



On 19/12/2025 09:32, Steve Cook via Dnsmasq-discuss wrote:
> Hi,
> 
> We're a charity that supports education in sub-Saharan Africa by 
> refurbishing IT equipment for use in schools.  At our distribution hubs 
> in Malawi, customised OS images are installed using bootable USBs but 
> we'd like to do this using PXE boot for performance reasons.
> 
> Our goal is to create a bunch of PXE boot appliances to be sent to sites 
> where we don't necessarily know the subnets in advance.  We'd want these 
> servers to be 'plug-and-play' capable of serving images via PXE loading 
> on whatever network they're connected to, and which already have a DHCP 
> server (e.g. on their broadband router).
> 
> We've attempted this using Samba, Nginx, grub, pxelinux and ipxe, all of 
> which have no fixed IP addresses in any of the configs so it can get its 
> address from DHCP.  It will boot clients into PXE or WinPE for OS 
> installation. The appliance can be attached to any subnet and provide 
> network boot services with no reconfiguration nor interference with 
> existing network facilities (DHCP). It uses <next-server> and netbios 
> naming instead. The only place where there is an IP address is DNSmasq's 
> config. Could the dhcp-range use the computer’s IP address or subnet as 
> a default?  In other words, could we just specify the network 
> interface(s) and have it detect the subnet automatically?
> 


I don't think there's a way to do this, currently. The obvious way to 
add it is to implement the "constructor:eth0" syntax which exists in the 
dnsmasq DHCPv6 implementation to DHCPv4 as well.


Simon.

> # DNSmasq config for proxy PXE boot
> # Disable DNS
> port=0
> log-dhcp
> # dhcp-range=interface:eno1,,proxy        # default to interface's 
> subnet - doesn't work
> dhcp-range=interface:eno1,192.168.10.0,proxy        # currently 
> necessary to specify the subnet
> dhcp-range=interface:wlp3s0,192.168.20.0,proxy
> no-dhcpv6-interface=eno1
> dhcp-no-override
> enable-tftp
> tftp-root=/srv/boot
> 
> dhcp-userclass=set:IPXE,iPXE
> pxe-service=tag:IPXE,X86-64_EFI,"ipxe",ipxe/bootuefi.ipxe
> pxe-service=tag:!IPXE,X86-64_EFI,"UEFI",grub/grubnetx64.efi
> pxe-service=X86PC,"Legacy",pxelinux/lpxelinux.0
> 
> 
> Alternatively we could script something that detects the subnet(s) at 
> boot time and configures DNSmasq before starting it, but it seems neater 
> to incorporate this feature into DNSmasq itself.
> 
> Any guidance or advice on how best to achieve this, is much appreciated!
> 
> -- 
> Steve Cook
> Head of IT
> 
> 
> _______________________________________________
> Dnsmasq-discuss mailing list
> Dnsmasq-discuss at lists.thekelleys.org.uk
> https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss




More information about the Dnsmasq-discuss mailing list