dhcpd-unnumbered is a very light weight ipv4 dhcp server designed for unnumbered l3 tap interfaces
- it listens for dhcp requests on all interfaces (so dynamic tap interfaces can come and go without changes)
- incoming requests are matched to their interface
- the interface is checked against a regex. only matching interfaces are handled (default tap.*_0), not matching are ignored completely
- if tap matches
- routes for that tap are looked up,
- if client requested a specific IP and still owns this IP, that IP is offered
- if client did not request an IP (aka DHCP discover) the first non-private IP is being offered
- some options can also be specified via a file (
<ifname>.options
)
In addition to listening on all interfaces, it can also dynamically bind a socket in each VRF matching a regex (bindRegex
). These sockets will be created and torn down as the interfaces come and go.
- dhcp offers will supply a fake /24, clients are let to believe that they live in a shared /24 subnet
- dhcp will include/offer a gateway IP using the first IP in the clients "fake" /24
- the dhcp can/will include a hostname
different options can be supported around this:
- static hostname (every client gets the same hostname)
- dynamic hostname: hostname is generated from its IP, with the dots replaced with -
- hostname override: dhcpd-unnumbered can dynamically pick up a file reading the hostname from it. completely customized hostnames can be offered through this
- dhcpd-unnumbered can also offer a tftp next-host IP for pxebooting clients
- Options in a
.options
file take precedence over command line and inferred settings. Seeoptions/options.go
.
dhcpd-unnumbered --help