# dhcpd.conf for interface __INTERFACE__ # generated by dyndhcpd/__VERSION__ include "/etc/dyndhcpd/ipxe-options.conf"; authoritative; ddns-update-style none; ignore client-updates; default-lease-time 21600; max-lease-time 43200; option domain-name "__DOMAINNAME__"; class "PXEClient" { match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; allow booting; allow bootp; } subnet __NETADDRESS__ netmask __NETMASK__ { option broadcast-address __BROADCAST__; option routers __ADDRESS__; option domain-name-servers __ADDRESS__; option time-servers __ADDRESS__; pool { allow members of "PXEClient"; next-server __ADDRESS__; # Disable ProxyDHCP, we're in control of the primary DHCP server. option ipxe.no-pxedhcp 1; # Make sure the iPXE we're loading supports what we need, # if not load a full-featured version. if exists ipxe.http and exists ipxe.menu and ((exists ipxe.pxe and exists ipxe.bzimage and exists ipxe.elf) or (exists ipxe.efi)) { # Everything is fine, just send the boot configuration file. filename "http://__ADDRESS__:3928/default.ipxe"; } elsif exists user-class and option user-class = "iPXE" { # We're already using iPXE, but not a feature-full version, # and possibly an out-of-date version from ROM, so load a more # complete version with native drivers. if option arch = 00:06 { filename "/ipxe/efi-i386.efi"; } elsif option arch = 00:07 { filename "/ipxe/efi-x86_64.efi"; } else { filename "/ipxe/ipxe.pxe"; } } elsif exists user-class and option user-class = "gPXE" { # If someone has an old version of gPXE burned into their ROM, # load a more recent iPXE filename "/ipxe/ipxe.pxe"; } elsif option arch = 00:06 { filename "/ipxe/efi-i386.efi"; } elsif option arch = 00:07 { filename "/ipxe/efi-x86_64.efi"; } else { filename "/ipxe/ipxe.pxe"; } range dynamic-bootp __MINBOOTP__ __MAXBOOTP__; } pool { deny members of "PXEClient"; range __MINDHCP__ __MAXDHCP__; } }