# This is an example configuration file for the DHCPv4 server in Kea. # It demonstrates simple configuration of the options for a subnet. { "Dhcp4": { # Kea is told to listen on ethX interface only. "interfaces-config": { "interfaces": [ "ethX" ] }, # We need to specify the the database used to store leases. As of # September 2016, four database backends are supported: MySQL, # PostgreSQL, Cassandra, and the in-memory database, Memfile. # We'll use memfile because it doesn't require any prior set up. "lease-database": { "type": "memfile" }, # Addresses will be assigned with a lifetime of 4000 seconds. "valid-lifetime": 4000, # Renew and rebind timers are commented out. This implies that options # 58 and 59 will not be sent to the client. In this case it is up to # the client to pick the timer values according to RFC2131. Uncomment the # timers to send these options to the client. # "renew-timer": 1000, # "rebind-timer": 2000, // Defining a subnet. There are 3 DHCP options returned to the // clients connected to this subnet. The first and third options are // identified by the name. The third option is identified by the // option code. "subnet4": [ { "pools": [ { "pool": "192.0.2.10 - 192.0.2.200" } ], "subnet": "192.0.2.0/24", "interface": "ethX", "option-data": [ { "name": "domain-name-servers", "data": "192.0.2.1, 192.0.2.2" }, { "name": "routers", "data": "192.0.2.1" }, { // String options that have a comma in their values need to have // it escaped (i.e. each comma is predeced by two backslashes). // That's because commas are reserved for separating fields in // compound options. At the same time, we need to be conformant // with JSON spec, that does not allow "\,". Therefore the // slightly uncommon double backslashes notation is needed. "name": "boot-file-name", "data": "EST5EDT4\\,M3.2.0/02:00\\,M11.1.0/02:00" // Legal JSON escapes are \ followed by "\/bfnrt character // or \u followed by 4 hexa-decimal numbers (currently Kea // supports only \u0000 to \u00ff code points). // CSV processing translates '\\' into '\' and '\,' into ',' // only so for instance '\x' is translated into '\x'. But // as it works on a JSON string value each of these '\' // characters must be doubled on JSON input. } ] } ] }, # The following configures logging. It assumes that messages with at least # informational level (info, warn, error and fatal) should be logged to stdout. "Logging": { "loggers": [ { "name": "kea-dhcp4", "output_options": [ { "output": "stdout" } ], "severity": "INFO" } ] } }