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

Reply via email to