summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsarthurdev <965089+sarthurdev@users.noreply.github.com>2025-09-23 15:23:55 +0200
committersarthurdev <965089+sarthurdev@users.noreply.github.com>2025-09-23 19:55:17 +0200
commitcdf9fe4c9cfd4572c49207936c2304162e91e7b1 (patch)
tree861c2f0a19574d9a40136111eb8b3af16788f320 /src
parent868e45f86d39936ad04566e702ac95759b738149 (diff)
downloadvyos-1x-cdf9fe4c9cfd4572c49207936c2304162e91e7b1.tar.gz
vyos-1x-cdf9fe4c9cfd4572c49207936c2304162e91e7b1.zip
kea: T7854: Use helper for Kea VRF systemd units
Diffstat (limited to 'src')
-rw-r--r--src/etc/sudoers.d/vyos4
-rw-r--r--src/etc/systemd/system/isc-kea-dhcp-ddns-server@.service11
-rw-r--r--src/etc/systemd/system/isc-kea-dhcp4-server@.service13
-rw-r--r--src/etc/systemd/system/isc-kea-dhcp6-server@.service13
-rwxr-xr-xsrc/init/vyos-router12
-rwxr-xr-xsrc/system/kea-vrf-helper14
6 files changed, 32 insertions, 35 deletions
diff --git a/src/etc/sudoers.d/vyos b/src/etc/sudoers.d/vyos
index 0feaabc2e..198b9b9aa 100644
--- a/src/etc/sudoers.d/vyos
+++ b/src/etc/sudoers.d/vyos
@@ -47,9 +47,6 @@ Cmnd_Alias DIAGNOSTICS = /bin/ip vrf exec * /bin/ping *, \
/usr/libexec/vyos/op_mode/*
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, \
DMIDECODE, DISK, CONNTRACK, IP6TABLES, \
@@ -65,4 +62,3 @@ 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:SETENV: KEA_DHCP
diff --git a/src/etc/systemd/system/isc-kea-dhcp-ddns-server@.service b/src/etc/systemd/system/isc-kea-dhcp-ddns-server@.service
index 9451addd4..4b1504ffc 100644
--- a/src/etc/systemd/system/isc-kea-dhcp-ddns-server@.service
+++ b/src/etc/systemd/system/isc-kea-dhcp-ddns-server@.service
@@ -5,17 +5,10 @@ Wants=network-online.target
After=vyos-router.service
[Service]
-User=_kea
+User=root
AmbientCapabilities=CAP_NET_BIND_SERVICE
Environment="KEA_LOCKFILE_DIR=/run/lock/kea"
-ConfigurationDirectory=kea
-RuntimeDirectory=kea lock/kea
-RuntimeDirectoryPreserve=yes
-LogsDirectory=kea
-LogsDirectoryMode=0750
-StateDirectory=kea
-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'
+ExecStart=/usr/libexec/vyos/system/kea-vrf-helper %i /usr/sbin/kea-dhcp-ddns -c /var/run/kea/kea-%i-dhcp-ddns.conf
Restart=on-failure
[Install]
diff --git a/src/etc/systemd/system/isc-kea-dhcp4-server@.service b/src/etc/systemd/system/isc-kea-dhcp4-server@.service
index 588cca216..28521e755 100644
--- a/src/etc/systemd/system/isc-kea-dhcp4-server@.service
+++ b/src/etc/systemd/system/isc-kea-dhcp4-server@.service
@@ -5,21 +5,12 @@ Wants=network-online.target
After=vyos-router.service
[Service]
-User=_kea
+User=root
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 -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'
+ExecStart=/usr/libexec/vyos/system/kea-vrf-helper %i /usr/sbin/kea-dhcp4 -c /var/run/kea/kea-%i-dhcp4.conf
Restart=on-failure
[Install]
diff --git a/src/etc/systemd/system/isc-kea-dhcp6-server@.service b/src/etc/systemd/system/isc-kea-dhcp6-server@.service
index 7196239af..072a2ef5f 100644
--- a/src/etc/systemd/system/isc-kea-dhcp6-server@.service
+++ b/src/etc/systemd/system/isc-kea-dhcp6-server@.service
@@ -5,21 +5,12 @@ Wants=network-online.target
After=vyos-router.service
[Service]
-User=_kea
+User=root
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 -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'
+ExecStart=/usr/libexec/vyos/system/kea-vrf-helper %i /usr/sbin/kea-dhcp6 -c /var/run/kea/kea-%i-dhcp6.conf
Restart=on-failure
[Install]
diff --git a/src/init/vyos-router b/src/init/vyos-router
index 34c216cd6..5365a40f1 100755
--- a/src/init/vyos-router
+++ b/src/init/vyos-router
@@ -504,6 +504,18 @@ start ()
nfct helper add tns inet6 tcp
nft --file /usr/share/vyos/vyos-firewall-init.conf || log_failure_msg "could not initiate firewall rules"
+ # Create needed kea directories
+ mkdir -p /var/run/kea /run/lock/kea
+ chmod 750 /var/run/kea /run/lock/kea
+ chown _kea:_kea /var/run/kea /run/lock/kea
+ if [ -d /opt/vyatta/etc/config ]; then
+ if [ ! -d /opt/vyatta/etc/config/dhcp ]; then
+ mkdir /opt/vyatta/etc/config/dhcp
+ chmod 750 /opt/vyatta/etc/config/dhcp
+ chown _kea:vyattacfg /opt/vyatta/etc/config/dhcp
+ fi
+ fi
+
# Ensure rsyslog is the default syslog daemon
SYSTEMD_SYSLOG="/etc/systemd/system/syslog.service"
SYSTEMD_RSYSLOG="/lib/systemd/system/rsyslog.service"
diff --git a/src/system/kea-vrf-helper b/src/system/kea-vrf-helper
new file mode 100755
index 000000000..b4dd6a349
--- /dev/null
+++ b/src/system/kea-vrf-helper
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+VRF=$1
+shift
+
+export KEA_DHCP_DATA_DIR=/config/dhcp
+export KEA_HOOK_SCRIPTS_PATH=/usr/libexec/vyos/system
+export KEA_LOCKFILE_DIR=/run/lock/kea
+
+ip vrf exec $VRF \
+ setpriv --reuid=_kea --regid=_kea --init-groups \
+ --inh-caps +net_bind_service,+net_raw \
+ --ambient-caps +net_bind_service,+net_raw \
+ $@