dhcpsd released, a RFC2131 DHCP server (was Re: ISC's EoL dhcp suite, including dhcpd)
Roy Marples <[email protected]> Sun, 02 Nov 2025 07:38:55 +0000
| Newsgroups | gmane.os.netbsd.devel.network |
|---|---|
| Message-ID | <[email protected]> |
---- On Mon, 14 Jul 2025 13:09:53 +0100 Roy Marples <[email protected]> wrote --- > On Fri, 27 Jun 2025 08:11:21 +0200, Martin Husemann wrote: > > I tried to move to something similar simple as the in-tree ISC dhpcd > > by looking at the pkgsrc options for DHCP servers, but besides the > > new ISC variant (which loooked quite huge and a lot more complicated) > > I found nothing that just did a DHCP server and has better support state > > than ISC dhcpd. > > > > I don't need a web frontend and central management for all of my DHCP > > servers. And I don't want a combined DNS/DHCP solution, my DNS setup > > is quite complex and just works, I'd prefer to not touch it. > > > > Maybe I overlooked something. > > Anyway, it's no secret that I've been working on a DHCP server for a while now and only recently found some free time to work on it. > It's now in a useable state and I'm just going over RFC2131 with a fine comb to ensure it's compliant. > It currently has (almost) zero configuration and the following requirements: > So here it is - dhcpsd is released and is available in pkgsrc-current. This is a DHCP server, driven by plugins rather than a specific configuration. There is an auto plugin which makes an opinionated automatic DHCP setup based on your IP address. There is a leasefile plugin which stores the leases to a persistent flat file periodically. There is an ethers plugin to lookup a nodes hostname from their ethernet address. There is an addrinfo plugin to lookup a nodes ip address from their hostname. There is an ICMP plugin to detect if an ip address is in use before offering it. And if that is not enough there is a LUA plugin which allows you to script pretty much everything, but there is likely room for improvement here. Out of the box, dhcpsd is fast by using 2 hashmaps for clientid and ip address lookups and then by using a Red Black tree for lease expiry ordering. dhcpsd is written in C and uses Verstable for a hashmap and NetBSD's Red Black tree. It's also event driven with timeouts and callbacks which allows for example the ICMP plugin to hold the DHCP request until finished and then continue it once done and dhcpsd will process other tasks in the middle of this. dhcpsd is also secure by supporting Capsicum from FreeBSD, pledge from OpenBSD send SECCOMP from Linux. Other OS's enjoy a POSIX resource limited chrooted sandbox. I hope you all enjoy using this as much as I have creating it :) If not, then please leave some feedback so it can be improved! Homepage here: https://github.com/NetworkConfiguration/dhcpsd Roy