We received the following guest post from Henri Wahl in the IT Department of the Leibniz-Institut für Festkörper- u.Werkstoffforschung (IFW) in Dresden, Germany.
Getting DHCPv6 to work
We run a network with approximately 1.000 client hosts. To use dualstack we decided to provide hosts with IPv6 addresses via DHCPv6. We wanted to use our existing MAC-based IPv4 address provisioning for IPv6 too and SLAAC gives not enough control regarding different classes of clients and dynamic DNS updates. Sadly we found no working solution, especially because RFC 3315 does not consider MAC addresses as useful. Thus we had to develop our own incarnation of a DHCPv6 server.
The result is dhcpy6d, available as open source at https://dhcpy6d.ifw-dresden.de and written in Python. It retrieves MAC addresses from local neighbor cache and this way allows us to keep our address management solution for IPv4 and IPv6.
Our DHCPv6 server allows to identify clients by MAC address, DUID or hostname. Clients can be organized in different classes. Addresses can be generated randomly, from MAC address, by range or by a given ID. Clients can get multiple addresses. Leases are stored in MySQL or SQLite databases. DNS information might be updated with ISC Bind9.
In practice we found Windows clients from Vista and up to be working perfectly as DHCPv6 clients. They even have no problems to receive multiple addresses per client. Linux and MacOSX desktop clients still fail on this.
Dhcpy6d still is work in progress but already works flawlessly on a daily basis. There are at least some universities which use it.
For details see https://dhcpy6d.ifw-dresden.de/documentation/ .