summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2025-09-23 16:42:35 +0200
committerGitHub <noreply@github.com>2025-09-23 16:42:35 +0200
commit9952d21aa35fd40fe583de1ac20287a6784e8052 (patch)
treea38577f8fc1f7770ee53f0ff43c0f81edd790eea /src
parent5bb78168ee43bad1ad93b3353b4753ae94aa3bd5 (diff)
parent868e45f86d39936ad04566e702ac95759b738149 (diff)
downloadvyos-1x-9952d21aa35fd40fe583de1ac20287a6784e8052.tar.gz
vyos-1x-9952d21aa35fd40fe583de1ac20287a6784e8052.zip
Merge pull request #4743 from sarthurdev/kea3.0
kea: T7281: Fix Kea 3.0 service failures
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/service_dhcp-server.py6
-rwxr-xr-xsrc/conf_mode/service_dhcpv6-server.py4
-rw-r--r--src/etc/sudoers.d/vyos3
-rw-r--r--src/etc/systemd/system/isc-kea-dhcp-ddns-server.service.d/override.conf7
-rw-r--r--src/etc/systemd/system/isc-kea-dhcp-ddns-server@.service (renamed from src/etc/systemd/system/kea-dhcp-ddns@.service)4
-rw-r--r--src/etc/systemd/system/isc-kea-dhcp4-server.service.d/override.conf (renamed from src/etc/systemd/system/kea-dhcp4.service.d/override.conf)4
-rw-r--r--src/etc/systemd/system/isc-kea-dhcp4-server@.service (renamed from src/etc/systemd/system/kea-dhcp4@.service)8
-rw-r--r--src/etc/systemd/system/isc-kea-dhcp6-server.service.d/override.conf9
-rw-r--r--src/etc/systemd/system/isc-kea-dhcp6-server@.service (renamed from src/etc/systemd/system/kea-dhcp6@.service)8
-rw-r--r--src/etc/systemd/system/kea-dhcp-ddns.service.d/override.conf7
-rw-r--r--src/etc/systemd/system/kea-dhcp6.service.d/override.conf7
-rwxr-xr-xsrc/op_mode/dhcp.py12
-rwxr-xr-xsrc/op_mode/restart.py4
13 files changed, 48 insertions, 35 deletions
diff --git a/src/conf_mode/service_dhcp-server.py b/src/conf_mode/service_dhcp-server.py
index ae0338996..d92321ab8 100755
--- a/src/conf_mode/service_dhcp-server.py
+++ b/src/conf_mode/service_dhcp-server.py
@@ -582,9 +582,9 @@ def apply(dhcp):
# if running in vrf, set base diffrently
if argv and len(argv) > 1:
vrf_name = argv[1]
- services = [f'kea-dhcp4@{vrf_name}', f'kea-dhcp-ddns@{vrf_name}']
+ services = [f'isc-kea-dhcp4-server@{vrf_name}', f'isc-kea-dhcp-ddns-server@{vrf_name}']
else:
- services = ['kea-dhcp4', 'kea-dhcp-ddns']
+ services = ['isc-kea-dhcp4-server', 'isc-kea-dhcp-ddns-server']
if not dhcp or 'disable' in dhcp:
for service in services:
@@ -598,7 +598,7 @@ def apply(dhcp):
for service in services:
action = 'restart'
- if 'kea-dhcp-ddns-server' in service and 'dynamic_dns_update' not in dhcp:
+ if 'isc-kea-dhcp-ddns-server' in service and 'dynamic_dns_update' not in dhcp:
action = 'stop'
call(f'systemctl {action} {service}.service')
diff --git a/src/conf_mode/service_dhcpv6-server.py b/src/conf_mode/service_dhcpv6-server.py
index 1b2f07e43..b6a7a87c3 100755
--- a/src/conf_mode/service_dhcpv6-server.py
+++ b/src/conf_mode/service_dhcpv6-server.py
@@ -289,9 +289,9 @@ def apply(dhcpv6):
# if running in vrf, set base diffrently
if argv and len(argv) > 1:
vrf_name = argv[1]
- service_name = f'kea-dhcp6@{vrf_name}.service'
+ service_name = f'isc-kea-dhcp6-server@{vrf_name}.service'
else:
- service_name = 'kea-dhcp6.service'
+ service_name = 'isc-kea-dhcp6-server.service'
# bail out early - looks like removal from running config
if not dhcpv6 or 'disable' in dhcpv6:
diff --git a/src/etc/sudoers.d/vyos b/src/etc/sudoers.d/vyos
index 2dd8850c4..0feaabc2e 100644
--- a/src/etc/sudoers.d/vyos
+++ b/src/etc/sudoers.d/vyos
@@ -48,6 +48,7 @@ Cmnd_Alias DIAGNOSTICS = /bin/ip vrf exec * /bin/ping *, \
Cmnd_Alias KEA_IP6_ROUTES = /sbin/ip -6 route replace *,\
/sbin/ip -6 route del *
Cmnd_Alias KEA_DHCP = /bin/ip vrf exec * /usr/sbin/kea-dhcp*,\
+ /usr/bin/chown * /var/run/kea/*,\
/usr/bin/chown * /run/kea/*
%operator ALL=NOPASSWD: DATE, IPTABLES, ETHTOOL, IPFLUSH, HWINFO, \
PPPOE_CMDS, PCAPTURE, /usr/sbin/wanpipemon, \
@@ -64,4 +65,4 @@ Cmnd_Alias KEA_DHCP = /bin/ip vrf exec * /usr/sbin/kea-dhcp*,\
%sudo ALL=NOPASSWD: /usr/bin/mokutil
_kea ALL=NOPASSWD: KEA_IP6_ROUTES
-_kea ALL=NOPASSWD: KEA_DHCP
+_kea ALL=NOPASSWD:SETENV: KEA_DHCP
diff --git a/src/etc/systemd/system/isc-kea-dhcp-ddns-server.service.d/override.conf b/src/etc/systemd/system/isc-kea-dhcp-ddns-server.service.d/override.conf
new file mode 100644
index 000000000..0afaacd71
--- /dev/null
+++ b/src/etc/systemd/system/isc-kea-dhcp-ddns-server.service.d/override.conf
@@ -0,0 +1,7 @@
+[Unit]
+After=
+After=vyos-router.service
+
+[Service]
+ExecStart=
+ExecStart=/usr/sbin/kea-dhcp-ddns -c /var/run/kea/kea-dhcp-ddns.conf
diff --git a/src/etc/systemd/system/kea-dhcp-ddns@.service b/src/etc/systemd/system/isc-kea-dhcp-ddns-server@.service
index b6360e573..9451addd4 100644
--- a/src/etc/systemd/system/kea-dhcp-ddns@.service
+++ b/src/etc/systemd/system/isc-kea-dhcp-ddns-server@.service
@@ -14,8 +14,8 @@ RuntimeDirectoryPreserve=yes
LogsDirectory=kea
LogsDirectoryMode=0750
StateDirectory=kea
-ExecStart=sudo /bin/ip vrf exec %i /usr/sbin/kea-dhcp-ddns -c /run/kea/kea-%i-dhcp-ddns.conf
-ExecStartPost=/bin/sh -c 'sleep 10 && sudo /usr/bin/chown _kea:_kea /run/kea/kea-%i-dhcp-ddns* && sudo /usr/bin/chown _kea:_kea /run/kea/logger_lockfile'
+ExecStart=sudo /bin/ip vrf exec %i /usr/sbin/kea-dhcp-ddns -c /var/run/kea/kea-%i-dhcp-ddns.conf
+ExecStartPost=/bin/sh -c 'sleep 10 && sudo /usr/bin/chown _kea:_kea /var/run/kea/kea-%i-dhcp-ddns* && sudo /usr/bin/chown _kea:_kea /run/kea/logger_lockfile'
Restart=on-failure
[Install]
diff --git a/src/etc/systemd/system/kea-dhcp4.service.d/override.conf b/src/etc/systemd/system/isc-kea-dhcp4-server.service.d/override.conf
index 4a04892c0..f315e197b 100644
--- a/src/etc/systemd/system/kea-dhcp4.service.d/override.conf
+++ b/src/etc/systemd/system/isc-kea-dhcp4-server.service.d/override.conf
@@ -3,7 +3,9 @@ After=
After=vyos-router.service
[Service]
+Environment="KEA_DHCP_DATA_DIR=/config/dhcp"
+Environment="KEA_HOOK_SCRIPTS_PATH=/usr/libexec/vyos/system"
ExecStart=
-ExecStart=/usr/sbin/kea-dhcp4 -c /run/kea/kea-dhcp4.conf
+ExecStart=/usr/sbin/kea-dhcp4 -c /var/run/kea/kea-dhcp4.conf
ExecStartPost=!/usr/bin/python3 /usr/libexec/vyos/system/sync-dhcp-lease-to-hosts.py --inet
Restart=on-failure
diff --git a/src/etc/systemd/system/kea-dhcp4@.service b/src/etc/systemd/system/isc-kea-dhcp4-server@.service
index f63364275..588cca216 100644
--- a/src/etc/systemd/system/kea-dhcp4@.service
+++ b/src/etc/systemd/system/isc-kea-dhcp4-server@.service
@@ -7,15 +7,19 @@ After=vyos-router.service
[Service]
User=_kea
AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_NET_RAW
+Environment="KEA_DHCP_DATA_DIR=/config/dhcp"
+Environment="KEA_HOOK_SCRIPTS_PATH=/usr/libexec/vyos/system"
Environment="KEA_LOCKFILE_DIR=/run/lock/kea"
ConfigurationDirectory=kea
+ConfigurationDirectoryMode=0750
RuntimeDirectory=kea lock/kea
RuntimeDirectoryPreserve=yes
+RuntimeDirectoryMode=0750
LogsDirectory=kea
LogsDirectoryMode=0750
StateDirectory=kea
-ExecStart=sudo /bin/ip vrf exec %i /usr/sbin/kea-dhcp4 -c /run/kea/kea-%i-dhcp4.conf
-ExecStartPost=/bin/sh -c 'sleep 10 && sudo /usr/bin/chown _kea:_kea /run/kea/dhcp4-%i-ctrl* && sudo /usr/bin/chown _kea:_kea /run/kea/kea-%i-dhcp4* && sudo /usr/bin/chown _kea:_kea /run/kea/logger_lockfile'
+ExecStart=sudo -E /bin/ip vrf exec %i /usr/sbin/kea-dhcp4 -c /var/run/kea/kea-%i-dhcp4.conf
+ExecStartPost=/bin/sh -c 'sleep 10 && sudo /usr/bin/chown _kea:_kea /var/run/kea/dhcp4-%i-ctrl* && sudo /usr/bin/chown _kea:_kea /var/run/kea/kea-%i-dhcp4* && sudo /usr/bin/chown _kea:_kea /run/kea/logger_lockfile'
Restart=on-failure
[Install]
diff --git a/src/etc/systemd/system/isc-kea-dhcp6-server.service.d/override.conf b/src/etc/systemd/system/isc-kea-dhcp6-server.service.d/override.conf
new file mode 100644
index 000000000..cc1885877
--- /dev/null
+++ b/src/etc/systemd/system/isc-kea-dhcp6-server.service.d/override.conf
@@ -0,0 +1,9 @@
+[Unit]
+After=
+After=vyos-router.service
+
+[Service]
+Environment="KEA_DHCP_DATA_DIR=/config/dhcp"
+Environment="KEA_HOOK_SCRIPTS_PATH=/usr/libexec/vyos/system"
+ExecStart=
+ExecStart=/usr/sbin/kea-dhcp6 -c /var/run/kea/kea-dhcp6.conf
diff --git a/src/etc/systemd/system/kea-dhcp6@.service b/src/etc/systemd/system/isc-kea-dhcp6-server@.service
index 1d2330f74..7196239af 100644
--- a/src/etc/systemd/system/kea-dhcp6@.service
+++ b/src/etc/systemd/system/isc-kea-dhcp6-server@.service
@@ -7,15 +7,19 @@ After=vyos-router.service
[Service]
User=_kea
AmbientCapabilities=CAP_NET_BIND_SERVICE
+Environment="KEA_DHCP_DATA_DIR=/config/dhcp"
+Environment="KEA_HOOK_SCRIPTS_PATH=/usr/libexec/vyos/system"
Environment="KEA_LOCKFILE_DIR=/run/lock/kea"
ConfigurationDirectory=kea
+ConfigurationDirectoryMode=0750
RuntimeDirectory=kea lock/kea
RuntimeDirectoryPreserve=yes
+RuntimeDirectoryMode=0750
LogsDirectory=kea
LogsDirectoryMode=0750
StateDirectory=kea
-ExecStart=sudo /bin/ip vrf exec %i /usr/sbin/kea-dhcp6 -c /run/kea/kea-%i-dhcp6.conf
-ExecStartPost=/bin/sh -c 'sleep 10 && sudo /usr/bin/chown _kea:_kea /run/kea/dhcp6-%i-ctrl* && sudo /usr/bin/chown _kea:_kea /run/kea/kea-%i-dhcp6* && sudo /usr/bin/chown _kea:_kea /run/kea/logger_lockfile'
+ExecStart=sudo -E /bin/ip vrf exec %i /usr/sbin/kea-dhcp6 -c /var/run/kea/kea-%i-dhcp6.conf
+ExecStartPost=/bin/sh -c 'sleep 10 && sudo /usr/bin/chown _kea:_kea /var/run/kea/dhcp6-%i-ctrl* && sudo /usr/bin/chown _kea:_kea /var/run/kea/kea-%i-dhcp6* && sudo /usr/bin/chown _kea:_kea /run/kea/logger_lockfile'
Restart=on-failure
[Install]
diff --git a/src/etc/systemd/system/kea-dhcp-ddns.service.d/override.conf b/src/etc/systemd/system/kea-dhcp-ddns.service.d/override.conf
deleted file mode 100644
index cdfdea8eb..000000000
--- a/src/etc/systemd/system/kea-dhcp-ddns.service.d/override.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-[Unit]
-After=
-After=vyos-router.service
-
-[Service]
-ExecStart=
-ExecStart=/usr/sbin/kea-dhcp-ddns -c /run/kea/kea-dhcp-ddns.conf
diff --git a/src/etc/systemd/system/kea-dhcp6.service.d/override.conf b/src/etc/systemd/system/kea-dhcp6.service.d/override.conf
deleted file mode 100644
index cb33fc057..000000000
--- a/src/etc/systemd/system/kea-dhcp6.service.d/override.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-[Unit]
-After=
-After=vyos-router.service
-
-[Service]
-ExecStart=
-ExecStart=/usr/sbin/kea-dhcp6 -c /run/kea/kea-dhcp6.conf
diff --git a/src/op_mode/dhcp.py b/src/op_mode/dhcp.py
index 6e6ad153b..905c9b80c 100755
--- a/src/op_mode/dhcp.py
+++ b/src/op_mode/dhcp.py
@@ -326,9 +326,9 @@ def show_server_pool_statistics(
inet_suffix = '6' if family == 'inet6' else '4'
if vrf:
- service = f'kea-dhcp{inet_suffix}@{vrf}.service'
+ service = f'isc-kea-dhcp{inet_suffix}-server@{vrf}.service'
else:
- service = f'kea-dhcp{inet_suffix}.service'
+ service = f'isc-kea-dhcp{inet_suffix}-server.service'
if not is_systemd_service_running(service):
Warning(stale_warn_msg)
@@ -376,9 +376,9 @@ def show_server_leases(
inet_suffix = '6' if family == 'inet6' else '4'
if vrf:
- service = f'kea-dhcp{inet_suffix}@{vrf}.service'
+ service = f'isc-kea-dhcp{inet_suffix}-server@{vrf}.service'
else:
- service = f'kea-dhcp{inet_suffix}.service'
+ service = f'isc-kea-dhcp{inet_suffix}-server.service'
if not is_systemd_service_running(service):
Warning(stale_warn_msg)
@@ -437,9 +437,9 @@ def show_server_static_mappings(
inet_suffix = '6' if family == 'inet6' else '4'
if vrf:
- service = f'kea-dhcp{inet_suffix}@{vrf}.service'
+ service = f'isc-kea-dhcp{inet_suffix}-server@{vrf}.service'
else:
- service = f'kea-dhcp{inet_suffix}.service'
+ service = f'isc-kea-dhcp{inet_suffix}-server.service'
if not is_systemd_service_running(service):
Warning(stale_warn_msg)
diff --git a/src/op_mode/restart.py b/src/op_mode/restart.py
index 29bd690e3..4f05d6eb8 100755
--- a/src/op_mode/restart.py
+++ b/src/op_mode/restart.py
@@ -26,11 +26,11 @@ config = ConfigTreeQuery()
service_map = {
'dhcp': {
- 'systemd_service': 'kea-dhcp4',
+ 'systemd_service': 'isc-kea-dhcp4-server',
'path': ['service', 'dhcp-server'],
},
'dhcpv6': {
- 'systemd_service': 'kea-dhcp6',
+ 'systemd_service': 'isc-kea-dhcp6-server',
'path': ['service', 'dhcpv6-server'],
},
'dns_dynamic': {