# This is a basic configuration for the Kea DHCPv4 and DHCPv6 servers. # Subnet declarations are commented out and no interfaces are listed. # Therefore, the servers will not listen or respond to any queries. # The basic configuration must be extended to specify interfaces on # which the servers should listen. Also, subnets and options must be # declared. { # DHCPv4 configuration starts here. # "override-client-update": true, # "replace-client-name": "when-not-present", "Dhcp4": { "dhcp-ddns": { "enable-updates": true, "override-no-update": true, "override-client-update": true, "replace-client-name": "when-not-present", "generated-prefix": "host", "qualifying-suffix": "vmintern." }, "option-data": [ { "name": "domain-name-servers", "code": 6, "space": "dhcp4", "csv-format": true, "data": "192.168.20.230, 194.25.2.129" }, ], # Add names of interfaces to listen on. "interfaces-config": { "interfaces": [ "ens3" ] }, # Use Memfile lease database backend to store leases in a CSV file. "lease-database": { "type": "memfile" }, # Setup reclamation of the expired leases and leases affinity. # Expired leases will be reclaimed every 10 seconds. Every 25 # seconds reclaimed leases, which have expired more than 3600 # seconds ago, will be removed. The limits for leases reclamation # are 100 leases or 250 ms for a single cycle. A warning message # will be logged if there are still expired leases in the # database after 5 consecutive reclamation cycles. "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 }, # Global (inherited by all subnets) lease lifetime is mandatory parameter. "valid-lifetime": 4000, # Below an example of the simple subnet declaration. Uncomment to # enable it. This is a list, denoted with [ ], of structure, 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": [ { "subnet": "192.168.20.0/16", "pools": [ { "pool": "192.168.20.1 - 192.168.20.200" } ], "reservations": [ { "hw-address": "52:54:00:2F:B8:D5", "ip-address": "192.168.20.222" } ] } ] }, # DHCPv6 configuration starts here. "Dhcp6": { "dhcp-ddns": { "enable-updates": true, "override-no-update": true, "override-client-update": true, "replace-client-name": "when-not-present", "generated-prefix": "host", "qualifying-suffix": "vmintern." }, # Add names of interfaces to listen on. "interfaces-config": { "interfaces": [ "ens3/fd20:db8:1::230" ] }, "option-data": [ { "name": "unicast", "data": "fd20:db8:1::230" }, { "name": "dns-servers", "code": 23, "space": "dhcp6", "csv-format": true, "data": "fd20:db8:1::230, 2003:180:2:2000::1:0:53" }, { "name": "domain-search", "code": 24, "space": "dhcp6", "csv-format": true, "data": "ipv6.vmintern, vmintern" } ], # Use Memfile lease database backend to store leases in a CSV file. "lease-database": { "type": "memfile" }, # Setup reclamation of the expired leases and leases affinity. # Expired leases will be reclaimed every 10 seconds. Every 25 # seconds reclaimed leases, which have expired more than 3600 # seconds ago, will be removed. The limits for leases reclamation # are 100 leases or 250 ms for a single cycle. A warning message # will be logged if there are still expired leases in the # database after 5 consecutive reclamation cycles. "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 }, # Addresses will be assigned with preferred and valid lifetimes # being 3000 and 4000, respectively. Client is told to start # renewing after 1000 seconds. If the server does not respond # after 2000 seconds since the lease was granted, client is supposed # to start REBIND procedure (emergency renewal that allows switching # to a different server). "preferred-lifetime": 3000, "valid-lifetime": 4000, "renew-timer": 1000, "rebind-timer": 2000, # The following list defines subnets. Uncomment to enable them. "subnet6": [ { "subnet": "fd20:db8:1::/64", "interface": "ens3", "pools": [ { "pool": "fd20:db8:1::1000 - fd20:db8:1::ffff" } ], "reservations": [ { "duid": "00:04:4E:60:70:C3:67:92:B9:21:57:C0:6B:7C:A0:64:A5:7F", "ip-addresses": [ "fd20:db8:1::2220" ] }, { "hw-address": "52:54:00:2F:b8:d5", "ip-addresses": [ "fd20:db8:1::0220" ] }, { "hw-address": "52:54:00:46:FF:FF", "ip-addresses": [ "fd20:db8:1::33" ] }, ] } # { "subnet": "2001:db8:2::/64", # "pools": [ { "pool": "2001:db8:2::/80" } ] }, # { "subnet": "2001:db8:3::/64", # "pools": [ { "pool": "2001:db8:3::/80" } ] }, # { "subnet": "2001:db8:4::/64", # "pools": [ { "pool": "2001:db8:4::/80" } ] } ] }, # DHCP DDNS configuration starts here. "DhcpDdns": { "ip-address": "127.0.0.1", "port": 53001, "tsig-keys": [ { "name": "dhcpd-key", "algorithm": "HMAC-MD5", "secret": "XXXXXXXdeletedXXXXXX" } ], "forward-ddns" : { "ddns-domains": [ { "name": "vmintern.", "key-name": "", "dns-servers": [ { "ip-address": "127.0.0.1" }, { "ip-address": "::1" }, ] } ] }, "reverse-ddns" : { "ddns-domains": [ { "name": "20.168.192.in-addr.arpa.", "key-name": "", "dns-servers": [ { "ip-address": "127.0.0.1" } ] }, { "name": "1.0.0.0.8.b.d.0.0.2.d.f.ip6.arpa.", "key-name": "", "dns-servers": [ { "ip-address": "::1" } ] } ] } }, # Logging configuration starts here. It tells Kea servers to store # all log messages (on severity INFO or more) in a file. # debuglevel variable is used on DEBUG level only. "Logging": { "loggers": [ { "name": "kea-dhcp4", "output_options": [ { "output": "/var/log/kea-dhcp4.log" } ], "severity": "DEBUG", "debuglevel": 99 }, { "name": "kea-dhcp6", "output_options": [ { "output": "/var/log/kea-dhcp6.log" } ], "severity": "DEBUG", "debuglevel": 99 }, { "name": "kea-dhcp-ddns", "output_options": [ { "output": "/var/log/kea-ddns.log" } ], "severity": "DEBUG", "debuglevel": 99 } ] } }