ArchWiki / Kea
ArchWiki / Kea
Kea DHCP is the current Dynamic Host Configuration Protocol server of the Internet Systems Consortium (ISC).
The older dhcpd is end of life .
Installation
Install the kea package. For additional documentation install kea-docs.
Optional dependencies are:
mariadb as database backend
postgresql as database backend
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.
The following subnets are reserved for private networks, and will not conflict with hosts on the Internet:
* 192.168.0.0/16 – subnet 192.168.0.0, netmask 255.255.0.0
* 172.16.0.0/12 – subnet 172.16.0.0, netmask 255.240.0.0
* 10.0.0.0/8 – subnet 10.0.0.0, netmask 255.0.0.0
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/24DNS server has the IP
192.168.0.1/24Gateway has the IP
192.168.0.254/24Static IP of the DHCP server network interface
eth0is192.168.0.253/24Kea should provide IPs from
192.168.0.100/24to192.168.0.199/24
A minimal configuration file /etc/kea/kea-dhcp4.conf could look like:
{
"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"
}
]
}
]
}
}/etc/kea/kea-dhcp4.confExample 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)
DNS servers are:
Network 1 hosts it's own DNS server at IP:
192.168.0.1Network 2 uses upstream Google DNS:
8.8.8.8&8.8.4.4
Gateways are:
Network 1:
192.168.0.254/24Network 2:
192.168.1.254/24
Static IP of the DHCP servers are:
Network 1: network interface
eth0is192.168.0.253Network 2: network interface
eth0.100is192.168.1.253
Kea should provide IPs:
Network 1: from
192.168.0.100/24to192.168.0.199/24Network 2: from
192.168.1.2/24to192.168.1.252/24
You have a couple of static IPs defined:
Network 1: Has two special phones with static leases
192.168.0.10&&192.168.0.11You 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:
{
"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"
}
]
}
]
}
}/etc/kea/kea-dhcp4.confThis example uses Google Public DNS. Replace it with a DNS resolver you trust. See Domain name resolution#Third-party DNS services.
Usage
Kea includes four systemd unit files:The configuration file for DHCPv4 can be checked for errors by running the command:
# kea-dhcp4 -t /etc/kea/kea-dhcp4.confIf everything looks good, then you can enable/start kea-dhcp4.service.