summaryrefslogtreecommitdiffstats
path: root/config/dhcpd.conf
diff options
context:
space:
mode:
authorGravatar Christian Hesse <mail@eworm.de>2015-04-02 10:30:57 +0200
committerGravatar Christian Hesse <mail@eworm.de>2015-04-02 10:30:57 +0200
commitff2cbc8881c5bc7d905cac27de3f82d3c5e9f95a (patch)
treef004943b196fdd7c5219bf02ab1c51858c58f1b2 /config/dhcpd.conf
parentd6760cd76c67bb3946b21070ab10fc676a2e7f12 (diff)
downloaddyndhcpd-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.conf71
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";
+ }
+}