diff --git a/kea/kea.nm b/kea/kea.nm
new file mode 100644
index 000000000..c4e23a23f
--- /dev/null
+++ b/kea/kea.nm
@@ -0,0 +1,113 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+name       = kea
+version    = 2.3.5
+release    = 1
+
+groups     = System/Daemons
+url        = http://kea.isc.org
+license    = MPLv2.0 and Boost
+summary    = DHCPv4, DHCPv6 and DDNS server from ISC
+
+description
+	DHCP implementation from Internet Systems Consortium, Inc. that features
+	fully functional DHCPv4, DHCPv6 and Dynamic DNS servers.
+	
+	Both DHCP servers fully support server discovery, address assignment,
+	renewal, rebinding and release. The DHCPv6 server supports prefix delegation.
+	Both servers support DNS Update mechanism, using stand-alone DDNS daemon.
+end
+
+source_dl  = https://ftp.isc.org/isc/kea/%{version}/
+sources    = %{thisapp}.tar.gz
+
+build
+	requires
+		gcc-c++
+		bison
+		boost-devel
+		flex
+		log4cplus-devel
+		openssl-devel
+	end
+
+	configure_options += \
+		--disable-dependency-tracking \
+		--disable-rpath \
+		--disable-silent-rules \
+		--disable-static \
+		--enable-generate-parser \
+		--enable-shell \
+		--with-openssl \
+		--with-log4cplus
+
+	install_cmds
+		# Start empty lease databases
+		mkdir -pv %{BUILDROOT}%{sharedstatedir}/kea/
+		touch %{BUILDROOT}%{sharedstatedir}/kea/kea-leases4.csv
+		touch %{BUILDROOT}%{sharedstatedir}/kea/kea-leases6.csv
+	end
+end
+
+packages
+	package %{name}
+		prerequires
+			systemd
+		end
+
+		configfiles
+			%{sysconfdir}/kea/kea-ctrl-agent.conf
+			%{sysconfdir}/kea/kea-dhcp-ddns.conf
+			%{sysconfdir}/kea/kea-dhcp4.conf
+			%{sysconfdir}//kea/kea-dhcp6.conf
+			%{sysconfdir}/kea/keactrl.conf
+		end
+
+		datafiles
+			%{sharedstatedir}/kea/kea-leases4.csv
+			%{sharedstatedir}/kea/kea-leases6.csv
+		end
+
+		script postin
+			/usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+		end
+
+		script preun
+			/usr/bin/systemctl --no-reload disable kea-ctrl-agent.service >/dev/null 2>&1 || :
+			/usr/bin/systemctl --no-reload disable kea-dhcp4.service >/dev/null 2>&1 || :
+			/usr/bin/systemctl --no-reload disable kea-dhcp6.service >/dev/null 2>&1 || :
+			/usr/bin/systemctl --no-reload disable kea-dhcp-ddns.service >/dev/null 2>&1 || :
+			/usr/bin/systemctl stop kea-ctrl-agent.service >/dev/null 2>&1 || :
+			/usr/bin/systemctl stop kea-dhcp4.service >/dev/null 2>&1 || :
+			/usr/bin/systemctl stop kea-dhcp6.service >/dev/null 2>&1 || :
+			/usr/bin/systemctl stop kea-dhcp-ddns.service >/dev/null 2>&1 || :
+		end
+
+		script postun
+			/usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+		end
+
+		script postup
+			/usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+			/usr/bin/systemctl try-restart kea-ctrl-agent.service >/dev/null 2>&1 || :
+			/usr/bin/systemctl try-restart kea-dhcp4.service >/dev/null 2>&1 || :
+			/usr/bin/systemctl try-restart kea-dhcp6.service >/dev/null 2>&1 || :
+			/usr/bin/systemctl try-restart kea-dhcp-ddns.service >/dev/null 2>&1 || :
+		end
+	end
+
+	package %{name}-libs
+		template LIBS
+	end
+
+	package %{name}-devel
+		template DEVEL
+	end
+
+	package %{name}-debuginfo
+		template DEBUGINFO
+	end
+end
diff --git a/kea/kea.tmpfiles b/kea/kea.tmpfiles
new file mode 100644
index 000000000..0b3abeb75
--- /dev/null
+++ b/kea/kea.tmpfiles
@@ -0,0 +1 @@
+d /run/kea 0755 root root -
diff --git a/kea/patches/kea-2.2.0-configure-fix-python3-version.patch b/kea/patches/kea-2.2.0-configure-fix-python3-version.patch
new file mode 100644
index 000000000..97a3f3aa1
--- /dev/null
+++ b/kea/patches/kea-2.2.0-configure-fix-python3-version.patch
@@ -0,0 +1,12 @@
+diff -Nur a/configure b/configure
+--- a/configure	2023-02-28 07:56:13.629233758 +0000
++++ b/configure	2023-02-28 07:53:19.994816726 +0000
+@@ -22765,7 +22765,7 @@
+ if ${am_cv_python_version+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+-  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
++  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:4])"`
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+ $as_echo "$am_cv_python_version" >&6; }
diff --git a/kea/systemd/kea-ctrl-agent.service b/kea/systemd/kea-ctrl-agent.service
new file mode 100644
index 000000000..b5c860ca7
--- /dev/null
+++ b/kea/systemd/kea-ctrl-agent.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Kea Control Agent
+Documentation=man:kea-ctrl-agent(8)
+Wants=network-online.target
+After=network-online.target
+After=time-sync.target
+
+[Service]
+ExecStart=/usr/sbin/kea-ctrl-agent -c /etc/kea/kea-ctrl-agent.conf
+Environment=KEA_PIDFILE_DIR=/var/run/kea
+
+[Install]
+WantedBy=multi-user.target
diff --git a/kea/systemd/kea-dhcp-ddns.service b/kea/systemd/kea-dhcp-ddns.service
new file mode 100644
index 000000000..5fdbe0bbf
--- /dev/null
+++ b/kea/systemd/kea-dhcp-ddns.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Kea DHCP-DDNS Server
+Documentation=man:kea-dhcp-ddns(8)
+Wants=network-online.target
+After=network-online.target
+After=time-sync.target
+
+[Service]
+ExecStart=/usr/sbin/kea-dhcp-ddns -c /etc/kea/kea-dhcp-ddns.conf
+Environment=KEA_PIDFILE_DIR=/var/run/kea
+
+[Install]
+WantedBy=multi-user.target
diff --git a/kea/systemd/kea-dhcp4.service b/kea/systemd/kea-dhcp4.service
new file mode 100644
index 000000000..0a72768f3
--- /dev/null
+++ b/kea/systemd/kea-dhcp4.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Kea DHCPv4 Server
+Documentation=man:kea-dhcp4(8)
+Wants=network-online.target
+After=network-online.target
+After=time-sync.target
+
+[Service]
+ExecStart=/usr/sbin/kea-dhcp4 -c /etc/kea/kea-dhcp4.conf
+Environment=KEA_PIDFILE_DIR=/var/run/kea
+
+[Install]
+WantedBy=multi-user.target
diff --git a/kea/systemd/kea-dhcp6.service b/kea/systemd/kea-dhcp6.service
new file mode 100644
index 000000000..e1fc05a34
--- /dev/null
+++ b/kea/systemd/kea-dhcp6.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Kea DHCPv6 Server
+Documentation=man:kea-dhcp6(8)
+Wants=network-online.target
+After=network-online.target
+After=time-sync.target
+
+[Service]
+ExecStart=/usr/sbin/kea-dhcp6 -c /etc/kea/kea-dhcp6.conf
+Environment=KEA_PIDFILE_DIR=/var/run/kea
+
+[Install]
+WantedBy=multi-user.target
