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
[email protected]
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss
_______________________________________________
Dnsmasq-discuss mailing list
[email protected]
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss