As reported by Andy via bugs@, our dhcpd is tad too accommodating with its ACK'ing. According to RFC 2131 the server should only ACK a REQUEST containing a server-identifier option if the server-identifier identifies that server.
Andy confirms this works for him. Any other testers with challenging dhcpd setups want to comment? .... Ken Index: dhcp.c =================================================================== RCS file: /cvs/src/usr.sbin/dhcpd/dhcp.c,v retrieving revision 1.33 diff -u -p -r1.33 dhcp.c --- dhcp.c 14 Feb 2013 22:06:13 -0000 1.33 +++ dhcp.c 10 Mar 2013 15:16:27 -0000 @@ -321,6 +321,15 @@ dhcprequest(struct packet *packet) return; } + /* + * Do not ACK a REQUEST intended for another server. + */ + if (packet->options[DHO_DHCP_SERVER_IDENTIFIER].len == 4) { + if (memcmp(packet->options[DHO_DHCP_SERVER_IDENTIFIER].data, + &packet->interface->primary_address, 4)) + return; + } + /* * If we own the lease that the client is asking for, * and it's already been assigned to the client, ack it.