diff options
author | Christian Hesse <mail@eworm.de> | 2015-04-02 10:30:57 +0200 |
---|---|---|
committer | Christian Hesse <mail@eworm.de> | 2015-04-02 10:30:57 +0200 |
commit | ff2cbc8881c5bc7d905cac27de3f82d3c5e9f95a (patch) | |
tree | f004943b196fdd7c5219bf02ab1c51858c58f1b2 /config/dhcpd.conf | |
parent | d6760cd76c67bb3946b21070ab10fc676a2e7f12 (diff) | |
download | dyndhcpd-ff2cbc8881c5bc7d905cac27de3f82d3c5e9f95a.tar.gz dyndhcpd-ff2cbc8881c5bc7d905cac27de3f82d3c5e9f95a.tar.zst |
use a more complex setup for iPXE network boot
Diffstat (limited to 'config/dhcpd.conf')
-rw-r--r-- | config/dhcpd.conf | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/config/dhcpd.conf b/config/dhcpd.conf new file mode 100644 index 0000000..6fe3d76 --- /dev/null +++ b/config/dhcpd.conf @@ -0,0 +1,71 @@ +# dhcpd.conf for interface __INTERFACE__ +# generated by dyndhcpd/__VERSION__ +authoritative; +ddns-update-style none; +ignore client-updates; +default-lease-time 21600; +max-lease-time 43200; + +option domain-name "__DOMAINNAME__"; + +subnet __NETADDRESS__ netmask __NETMASK__ { + option broadcast-address __BROADCAST__; + option routers __ADDRESS__; + option domain-name-servers __ADDRESS__; + option time-servers __ADDRESS__; + + range dynamic-bootp __MINHOST__ __MAXHOST__; +} + +# make sure we do not serve our own address +host localhost { + hardware ethernet de:ad:00:be:ef:00; + fixed-address __ADDRESS__; +} + +include "/etc/dyndhcpd/ipxe-options.conf"; + +class "PXEClient" { + match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; + + allow booting; + allow bootp; + + 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"; + } +} |