|
@@ -1,66 +1,88 @@
|
|
|
-# This is an example configuration file for DHCPv6 server in Kea.
|
|
|
-# It demonstrates simple configuration of the options for a subnet.
|
|
|
+// This is an example configuration file for DHCPv6 server in Kea.
|
|
|
+// It demonstrates simple configuration of the options for a subnet.
|
|
|
|
|
|
{ "Dhcp6":
|
|
|
|
|
|
{
|
|
|
-# Kea is told to listen on ethX interface only.
|
|
|
+// 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.
|
|
|
+// 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 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).
|
|
|
+// 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,
|
|
|
|
|
|
-# Defining a subnet. There are 3 DHCP options returned to the
|
|
|
-# clients connected to this subnet. The first option is identified
|
|
|
-# by the name. The second option is identified by the code.
|
|
|
-# There are two address pools defined within this subnet. Pool
|
|
|
-# specific value for option 12 is defined for the pool:
|
|
|
-# 2001:db8:1::1 - 2001:db8:1::100. Clients obtaining an address
|
|
|
-# from this pool will be assigned option 12 with a value of
|
|
|
-# 3001:cafe::21. Clients belonging to this subnet but obtaining
|
|
|
-# addresses from the other pool, or the clients obtaining
|
|
|
-# stateless configuration will be assigned subnet specific value
|
|
|
-# of option 12, i.e. 2001:db8:1:0:ff00::1.
|
|
|
-# For DHCPv6 subnets can have prefix delegation pools too so
|
|
|
-# a pd-pools with an option-data is defined too.
|
|
|
+// Defining a subnet. There are some DHCP options returned to the
|
|
|
+// clients connected to this subnet. The first option is identified
|
|
|
+// by the name. The second option is identified by the code.
|
|
|
+// There are two address pools defined within this subnet. Pool
|
|
|
+// specific value for option 12 is defined for the pool:
|
|
|
+// 2001:db8:1::1 - 2001:db8:1::100. Clients obtaining an address
|
|
|
+// from this pool will be assigned option 12 with a value of
|
|
|
+// 3001:cafe::21. Clients belonging to this subnet but obtaining
|
|
|
+// addresses from the other pool, or the clients obtaining
|
|
|
+// stateless configuration will be assigned subnet specific value
|
|
|
+// of option 12, i.e. 2001:db8:1:0:ff00::1.
|
|
|
+// For DHCPv6 subnets can have prefix delegation pools too so
|
|
|
+// a pd-pools with an option-data is defined too.
|
|
|
"subnet6": [
|
|
|
{
|
|
|
- "option-data": [
|
|
|
- {
|
|
|
- "name": "dns-servers",
|
|
|
- "data": "2001:db8:2::45, 2001:db8:2::100"
|
|
|
- },
|
|
|
- {
|
|
|
- "code": 12,
|
|
|
- "data": "2001:db8:1:0:ff00::1"
|
|
|
- },
|
|
|
- {
|
|
|
+ // This is how option values are defined for this particular subnet.
|
|
|
+ "option-data": [
|
|
|
+ // When specifying options, you typically need to specify
|
|
|
+ // one of (name or code) and data. The full option specification
|
|
|
+ // covers name, code, space, csv-format and data.
|
|
|
+ // space defaults to "dhcp6" which is usually correct, unless you
|
|
|
+ // use encapsulate options. csv-format defaults to "true", so
|
|
|
+ // this is also correct, unless you want to specify the whole
|
|
|
+ // option value as long hex string. For example, to specify
|
|
|
+ // domain-name-servers you could do this:
|
|
|
+ // {
|
|
|
+ // "name": "dns-servers",
|
|
|
+ // "code": 23,
|
|
|
+ // "csv-format": "true",
|
|
|
+ // "space": "dhcp6",
|
|
|
+ // "data": "2001:db8:2::45, 2001:db8:2::100"
|
|
|
+ // }
|
|
|
+ // but it's a lot of writing, so it's easier to do this instead:
|
|
|
+ {
|
|
|
+ "name": "dns-servers",
|
|
|
+ "data": "2001:db8:2::45, 2001:db8:2::100"
|
|
|
+ },
|
|
|
+
|
|
|
+ // Typically people prefer to refer to options by their names, so they
|
|
|
+ // don't need to remember the code names. However, some people like
|
|
|
+ // to use numerical values. For example, DHCPv6 can optionally use
|
|
|
+ // server unicast communication, if extra option is present. Option
|
|
|
+ // "unicast" uses option code 12, so you can reference to it either
|
|
|
+ // by "name": "unicast" or "code": 12.
|
|
|
+ {
|
|
|
+ "code": 12,
|
|
|
+ "data": "2001:db8:1:0:ff00::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": "new-posix-timezone",
|
|
|
- "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
|
|
@@ -69,14 +91,26 @@
|
|
|
// 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.
|
|
|
- },
|
|
|
- {
|
|
|
+ {
|
|
|
+ "name": "new-posix-timezone",
|
|
|
+ "data": "EST5EDT4\\,M3.2.0/02:00\\,M11.1.0/02:00"
|
|
|
+ },
|
|
|
+
|
|
|
+ // Options that take integer values can either be specified in
|
|
|
+ // dec or hex format. Hex format could be either plain (e.g. abcd)
|
|
|
+ // or prefixed with 0x (e.g. 0xabcd).
|
|
|
+ {
|
|
|
+ "name": "preference",
|
|
|
+ "data": "0xf0"
|
|
|
+ },
|
|
|
+
|
|
|
// A few options are encoded in (length, string) tuples
|
|
|
// which can be defined using only strings as the CSV
|
|
|
// processing computes lengths.
|
|
|
- "name": "bootfile-param",
|
|
|
- "data": "root=/dev/sda2, quiet, splash"
|
|
|
- }
|
|
|
+ {
|
|
|
+ "name": "bootfile-param",
|
|
|
+ "data": "root=/dev/sda2, quiet, splash"
|
|
|
+ }
|
|
|
],
|
|
|
"pools": [
|
|
|
{
|
|
@@ -111,8 +145,8 @@
|
|
|
]
|
|
|
},
|
|
|
|
|
|
-# The following configures logging. It assumes that messages with at least
|
|
|
-# informational level (info, warn, error and fatal) should be logged to stdout.
|
|
|
+// 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": [
|
|
|
{
|