{ "Dhcp4": { "interfaces-config": { "interfaces": [ "eth0" ] }, "hooks-libraries": [ { "library": "/path/to/kea-hook-runscript/kea-hook-runscript.so", "parameters": { "script": "/path/to/script.sh" } } ], "lease-database": { "type": "memfile" }, /* Option 121 definition */ "option-def": [ { "name": "rfc3442-classless-static-routes", "code": 121, "space": "dhcp4", "type": "record", "array": false, /* This is not a general option 121, it is specific to this usage with two routes: */ /* Subnet length of destination1 (32), destination1 (X/32), router1, destination2 (0/0), router2 */ "record-types": "uint8, ipv4-address, ipv4-address, uint8, ipv4-address" } ], /* Only use client MAC address, not Client ID */ "match-client-id": false, /* Set short lifetime, so that routes are removed from the kernel shortly after a client leaves the network without sending a DHCPRELEASE. */ "valid-lifetime": 300, "renew-timer": 220, "rebind-timer": 220, "host-reservation-identifiers": ["hw-address"], "subnet4": [ { /* Hack so that Kea hands out addresses in /32 subnets */ "subnet": "0.0.0.0/32", /* Send appropriate routes to the client (you should adapt this, see README) */ "option-data": [ { "name": "rfc3442-classless-static-routes", /* 10.250.250.1/32 via 0.0.0.0, 0/0 via 10.250.250.1 */ "data": "32, 10.250.250.1, 0.0.0.0, 0, 10.250.250.1" } ], "interface": "eth0", "reservation-mode": "out-of-pool", /* IP addresses reserved for clients, can be any /32 address. */ "reservations": [ { "hw-address": "96:ec:f8:ac:d8:bf", "ip-address": "192.0.2.201" }, { "hw-address": "aa:bb:cc:dd:ee:ff", "ip-address": "203.0.113.12" } ] } ] }, "Logging": { "loggers": [ { "name": "kea-dhcp4", "output_options": [ { "output": "stdout" #"output": "/var/log/kea-dhcp4.log" } ], "severity": "DEBUG", "debuglevel": 0 } ] } }