{ "Dhcp4": { // Add names of your network interfaces to listen on. "interfaces-config": { "interfaces": [ "eth0" ], }, "control-socket": { "socket-type": "unix", "socket-name": "/tmp/kea4-ctrl-socket" }, "lease-database": { // Memfile is the simplest and easiest backend to use. It's an in-memory // C++ database that stores its state in CSV file. "type": "memfile", "lfc-interval": 3600 }, "expired-leases-processing": { "reclaim-timer-wait-time": 10, "flush-reclaimed-timer-wait-time": 25, "hold-reclaimed-time": 3600, "max-reclaim-leases": 100, "max-reclaim-time": 250, "unwarned-reclaim-cycles": 5 }, "renew-timer": 900, "rebind-timer": 1800, "valid-lifetime": 3600, "option-data": [ { "name": "domain-name-servers", "data": "{{ resolver_ip }}" }, { "code": 15, "data": "{{ domain }}" }, { "name": "domain-search", "data": "{{ domain_search|join(', ') }}" }, ], // Below an example of a simple IPv4 subnet declaration. Uncomment to enable // it. This is a list, denoted with [ ], of structures, each denoted with // { }. Each structure describes a single subnet and may have several // parameters. One of those parameters is "pools" that is also a list of // structures. "subnet4": [ {% for network in networks %} { "subnet": "{{ network.subnet }}", "pools": [ { "pool": "{{ network.start }} - {{ network.end }}" } ], "option-data": [ { "name": "routers", "data": "{{ network.routers }}" } ], }{% if not loop.last %},{% endif %} {% endfor %} ], "loggers": [ { // This section affects kea-dhcp4, which is the base logger for DHCPv4 // component. It tells DHCPv4 server to write all log messages (on // severity INFO or more) to a file. "name": "kea-dhcp4", "output_options": [ { "output": "stdout", } ], "severity": "INFO", "debuglevel": 0 } ] } }