kea
Kea is the current DHCP server of the Internet Systems Consortium (ISC).
Installation
Install the kea package. For additional documentation install kea-docs.
Optional dependencies are:
- krb5 for kerberos support
- mariadb as database backend
- postgresql as database backend
- python to use kea-shell
Configuration
The configuration files are located under /etc/kea
. The content of the configuration files uses JSON structures. For special configurations that are not yet included in the following examples, please refer to the Kea documentation.
IPv4 DHCP
To use DHCP for IPv4, the configuration file /etc/kea/kea-dhcp4.conf
must be adapted and the service kea-dhcp4.service
must be activated and started.
-
192.168/16
(subnet192.168.0.0
, netmask255.255.0.0
) -
172.16/12
(subnet172.16.0.0
, netmask255.240.0.0
) -
10/8
(for large networks; subnet10.0.0.0
, netmask255.0.0.0
)
See also RFC 1918.
Make sure to assign a static IP address to the interface on which Kea is listen on.
Example single subnet configuration
Assumptions for the example:
- The net is
192.168.0.0/24
- DNS server has the IP
192.168.0.1/24
- Gateway has the IP
192.168.0.254/24
- Static IP of the DHCP server network interface
eth0
is192.168.0.253/24
- Kea should provide IPs from
192.168.0.100/24
to192.168.0.199/24
A minimal configuration file /etc/kea/kea-dhcp4.conf
could look like:
/etc/kea/kea-dhcp4.conf
{ "Dhcp4": { "interfaces-config": { "interfaces": [ "eth0/192.168.0.253" ], "dhcp-socket-type": "raw" }, "subnet4": [ { "id": 1, "subnet": "192.168.0.0/24", "pools": [ { "pool": "192.168.0.100 - 192.168.0.199" } ], "option-data": [ { "name": "routers", "data": "192.168.0.254" }, { "name": "domain-name-servers", "data": "192.168.0.1" } ] } ] } }
Example multiple subnet configuration
Assumptions for the example:
- The networks are:
- Network 1:
192.168.0.0/24
(is a standard physical network) - Network 2:
192.168.1.0/24
(is a virtual VLAN network)
- Network 1:
- DNS servers are:
- Network 1 hosts it's own DNS server at IP:
192.168.0.1
- Network 2 uses upstream Google DNS:
8.8.8.8
&8.8.4.4
- Network 1 hosts it's own DNS server at IP:
- Gateways are:
- Network 1:
192.168.0.254/24
- Network 2:
192.168.1.254/24
- Network 1:
- Static IP of the DHCP servers are:
- Network 1: network interface
eth0
is192.168.0.253
- Network 2: network interface
eth0.100
is192.168.1.253
- Network 1: network interface
- Kea should provide IPs:
- Network 1: from
192.168.0.100/24
to192.168.0.199/24
- Network 2: from
192.168.1.2/24
to192.168.1.252/24
- Network 1: from
- You have a couple of static IPs defined:
- Network 1: Has two special phones with static leases
192.168.0.10
&&192.168.0.11
- Network 1: Has two special phones with static leases
- You want to enable maximum debug logging for IPv4 in order to troubleshoot any problems with IP reservation
A more complex configuration file /etc/kea/kea-dhcp4.conf
could look like:
/etc/kea/kea-dhcp4.conf
{ "Dhcp4": { "interfaces-config": { "interfaces": [ "eth0/192.168.0.253", "eth0.100/192.168.1.253" ], "dhcp-socket-type": "raw" }, "loggers": [ { "name": "kea-dhcp4", "severity": "DEBUG", "debuglevel": 99, "output_options": [ { "output": "stdout" } ] } ], "subnet4": [ { "id": 1, "subnet": "192.168.0.0/24", "interface": "eth0", "pools": [ { "pool": "192.168.0.100 - 192.168.0.199" } ], "option-data": [ { "name": "routers", "data": "192.168.0.254" }, { "name": "domain-name-servers", "data": "192.168.0.1" } ], "reservations": [ { "hostname": "phone1", "hw-address": "1a:1b:1c:1d:1e:1f", "ip-address": "192.168.0.10" }, { "hostname": "phone2", "client-id": "01:11:22:33:44:55:66", "ip-address": "192.168.0.11" } ] }, { "id": 2, "subnet": "192.168.1.0/24", "interface": "eth0.100", "pools": [ { "pool": "192.168.1.2 - 192.168.1.252" } ], "option-data": [ { "name": "routers", "data": "192.168.1.254" }, { "name": "domain-name-servers", "data": "8.8.8.8, 8.8.4.4" } ] } ] } }
Usage
Kea includes four systemd unit files:
Unit file | Manual page | Description |
---|---|---|
kea-dhcp4.service | kea-dhcp4(8) | The DHCPv4 daemon |
kea-dhcp6.service | kea-dhcp6(8) | The DHCPv6 daemon |
kea-dhcp-ddns.service | kea-dhcp-ddns(8) | The DNS update daemon |
kea-ctrl-agent.service | keactrl(8) | Exposing a REST interface for managing Kea servers |
The configuration file for DHCPv4 can be checked for errors by running the command:
# kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
If everything looks good, then you can enable/start kea-dhcp4.service
.