1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
// This is an example configuration file for DHCPv4 server in Kea.
// It's a basic scenario with three IPv4 subnets configured. In each
// subnet, there's a smaller pool of dynamic addresses.
{ "Dhcp4":
{
// Kea is told to listen on eth0 interface only.
"interfaces-config": {
"interfaces": [ "eth0" ]
},
// We need to specify the database used to store leases. As of
// June 2022, three database backends are supported: MySQL,
// PostgreSQL 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.
// The client is told to start renewing after 1000 seconds. If the server
// does not respond within 2000 seconds of the lease being granted, client
// is supposed to start REBIND procedure (emergency renewal that allows
// switching to a different server).
"valid-lifetime": 4000,
"renew-timer": 1000,
"rebind-timer": 2000,
// RFC6842 says that the server is supposed to echo back client-id option.
// However, some older clients do not support this and are getting confused
// when they get their own client-id. Kea can disable RFC6842 support.
"echo-client-id": false,
// Some clients don't use stable client identifier, but rather generate them
// during each boot. This may cause a client that reboots frequently to get
// multiple leases, which may not be desirable. As such, sometimes admins
// prefer to tell their DHCPv4 server to ignore client-id value altogether
// and rely exclusively on MAC address. This is a parameter that is defined
// globally, but can be overridden on a subnet level.
"match-client-id": true,
// By default, Kea ignores requests by clients for unknown IP addresses,
// because other non-cooperating DHCP servers could reside on the same
// network (RFC 2131). This parameter is defined globally, but can be
// overridden on a subnet level
"authoritative": false,
// The following list defines subnets. Each subnet consists of at
// least subnet and pool entries.
"subnet4": [
{
"pools": [ { "pool": "192.0.2.1 - 192.0.2.200" } ],
"subnet": "192.0.2.0/24"
},
{
// This particular subnet has match-client-id value changed.
"pools": [ { "pool": "192.0.3.100 - 192.0.3.200" } ],
"subnet": "192.0.3.0/24",
"match-client-id": false
},
{
"pools": [ { "pool": "192.0.4.1 - 192.0.4.254" } ],
"subnet": "192.0.4.0/24"
} ],
// The following configures logging. It assumes that messages with at
// least informational level (info, warn, error and fatal) should be
// logged to stdout.
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "stdout"
}
],
"severity": "INFO"
}
]
}
}
|