diff options
| author | Christian Breunig <christian@breunig.cc> | 2025-09-23 16:42:35 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-23 16:42:35 +0200 |
| commit | 9952d21aa35fd40fe583de1ac20287a6784e8052 (patch) | |
| tree | a38577f8fc1f7770ee53f0ff43c0f81edd790eea | |
| parent | 5bb78168ee43bad1ad93b3353b4753ae94aa3bd5 (diff) | |
| parent | 868e45f86d39936ad04566e702ac95759b738149 (diff) | |
| download | vyos-1x-9952d21aa35fd40fe583de1ac20287a6784e8052.tar.gz vyos-1x-9952d21aa35fd40fe583de1ac20287a6784e8052.zip | |
Merge pull request #4743 from sarthurdev/kea3.0
kea: T7281: Fix Kea 3.0 service failures
22 files changed, 69 insertions, 56 deletions
diff --git a/data/templates/dhcp-server/kea-dhcp-ddns.conf.j2 b/data/templates/dhcp-server/kea-dhcp-ddns.conf.j2 index e734a37f3..5393ec839 100644 --- a/data/templates/dhcp-server/kea-dhcp-ddns.conf.j2 +++ b/data/templates/dhcp-server/kea-dhcp-ddns.conf.j2 @@ -5,10 +5,10 @@ "control-socket": { {% if vrf_context is vyos_defined %} "socket-type": "unix", - "socket-name": "/run/kea/kea-ddns-{{ vrf_context }}-ctrl-socket" + "socket-name": "/var/run/kea/kea-ddns-{{ vrf_context }}-ctrl-socket" {% else %} "socket-type": "unix", - "socket-name": "/run/kea/kea-ddns-ctrl-socket" + "socket-name": "/var/run/kea/kea-ddns-ctrl-socket" {% endif %} }, "tsig-keys": {{ dynamic_dns_update | kea_dynamic_dns_update_tsig_key_json }}, diff --git a/data/templates/dhcp-server/kea-dhcp4.conf.j2 b/data/templates/dhcp-server/kea-dhcp4.conf.j2 index 60c9cf9b2..031b14137 100644 --- a/data/templates/dhcp-server/kea-dhcp4.conf.j2 +++ b/data/templates/dhcp-server/kea-dhcp4.conf.j2 @@ -17,10 +17,10 @@ "control-socket": { {% if vrf_context is vyos_defined %} "socket-type": "unix", - "socket-name": "/run/kea/dhcp4-{{ vrf_context }}-ctrl-socket" + "socket-name": "/var/run/kea/dhcp4-{{ vrf_context }}-ctrl-socket" {% else %} "socket-type": "unix", - "socket-name": "/run/kea/dhcp4-ctrl-socket" + "socket-name": "/var/run/kea/dhcp4-ctrl-socket" {% endif %} }, "lease-database": { diff --git a/data/templates/dhcp-server/kea-dhcp6.conf.j2 b/data/templates/dhcp-server/kea-dhcp6.conf.j2 index 4352bbae7..41e31d35e 100644 --- a/data/templates/dhcp-server/kea-dhcp6.conf.j2 +++ b/data/templates/dhcp-server/kea-dhcp6.conf.j2 @@ -12,10 +12,10 @@ "control-socket": { {% if vrf_context is vyos_defined %} "socket-type": "unix", - "socket-name": "/run/kea/dhcp6-{{ vrf_context }}-ctrl-socket" + "socket-name": "/var/run/kea/dhcp6-{{ vrf_context }}-ctrl-socket" {% else %} "socket-type": "unix", - "socket-name": "/run/kea/dhcp6-ctrl-socket" + "socket-name": "/var/run/kea/dhcp6-ctrl-socket" {% endif %} }, "lease-database": { diff --git a/op-mode-definitions/monitor-log.xml.in b/op-mode-definitions/monitor-log.xml.in index e3bccba87..0195e89b6 100644 --- a/op-mode-definitions/monitor-log.xml.in +++ b/op-mode-definitions/monitor-log.xml.in @@ -44,13 +44,13 @@ <properties> <help>Monitor last lines of DHCP server log</help> </properties> - <command>journalctl --no-hostname --follow --boot --unit kea-dhcp4.service</command> + <command>journalctl --no-hostname --follow --boot --unit isc-kea-dhcp4-server.service</command> <children> <tagNode name="vrf"> <properties> <help>Monitor last lines of DHCP server log on specific vrf</help> </properties> - <command>journalctl --no-hostname --follow --boot --unit "kea-dhcp4@$6.service"</command> + <command>journalctl --no-hostname --follow --boot --unit "isc-kea-dhcp4-server@$6.service"</command> </tagNode> </children> </node> @@ -82,13 +82,13 @@ <properties> <help>Monitor last lines of DHCPv6 server log</help> </properties> - <command>journalctl --no-hostname --follow --boot --unit kea-dhcp6.service</command> + <command>journalctl --no-hostname --follow --boot --unit isc-kea-dhcp6-server.service</command> <children> <tagNode name="vrf"> <properties> <help>Monitor last lines of DHCPv6 server log on specific vrf</help> </properties> - <command>journalctl --no-hostname --follow --boot --unit "kea-dhcp6@$6.service"</command> + <command>journalctl --no-hostname --follow --boot --unit "isc-kea-dhcp6-server@$6.service"</command> </tagNode> </children> </node> diff --git a/op-mode-definitions/show-log.xml.in b/op-mode-definitions/show-log.xml.in index 8c85f4e2c..b437bc273 100755 --- a/op-mode-definitions/show-log.xml.in +++ b/op-mode-definitions/show-log.xml.in @@ -104,13 +104,13 @@ <properties> <help>Show log for DHCP server</help> </properties> - <command>journalctl --no-hostname --boot --unit kea-dhcp4.service</command> + <command>journalctl --no-hostname --boot --unit isc-kea-dhcp4-server.service</command> <children> <tagNode name="vrf"> <properties> <help>Monitor last lines of DHCP server log on specific vrf</help> </properties> - <command>journalctl --no-hostname --follow --boot --unit "kea-dhcp4@$6.service"</command> + <command>journalctl --no-hostname --follow --boot --unit "isc-kea-dhcp4-server@$6.service"</command> </tagNode> </children> </node> @@ -142,13 +142,13 @@ <properties> <help>Show log for DHCPv6 server</help> </properties> - <command>journalctl --no-hostname --boot --unit kea-dhcp6.service</command> + <command>journalctl --no-hostname --boot --unit isc-kea-dhcp6-server.service</command> <children> <tagNode name="vrf"> <properties> <help>Monitor last lines of DHCPv6 server log on specific vrf</help> </properties> - <command>journalctl --no-hostname --boot --unit "kea-dhcp6@$6.service"</command> + <command>journalctl --no-hostname --boot --unit "isc-kea-dhcp6-server@$6.service"</command> </tagNode> </children> </node> diff --git a/python/vyos/kea.py b/python/vyos/kea.py index c7ae94b14..b2b92ef21 100644 --- a/python/vyos/kea.py +++ b/python/vyos/kea.py @@ -60,7 +60,7 @@ kea6_options = { 'capwap_controller': 'capwap-ac-v6', } -kea_ctrl_socket = '/run/kea/dhcp{inet}{vrf_append}-ctrl-socket' +kea_ctrl_socket = '/var/run/kea/dhcp{inet}{vrf_append}-ctrl-socket' def _format_hex_string(in_str): diff --git a/smoketest/scripts/cli/test_service_dhcp-server.py b/smoketest/scripts/cli/test_service_dhcp-server.py index f1abc5216..f32a8796b 100755 --- a/smoketest/scripts/cli/test_service_dhcp-server.py +++ b/smoketest/scripts/cli/test_service_dhcp-server.py @@ -33,9 +33,9 @@ from vyos.template import dec_ip PROCESS_NAME = 'kea-dhcp4' D2_PROCESS_NAME = 'kea-dhcp-ddns' -KEA4_CONF = '/run/kea/kea-dhcp4.conf' -KEA4_D2_CONF = '/run/kea/kea-dhcp-ddns.conf' -KEA4_CTRL = '/run/kea/dhcp4-ctrl-socket' +KEA4_CONF = '/var/run/kea/kea-dhcp4.conf' +KEA4_D2_CONF = '/var/run/kea/kea-dhcp-ddns.conf' +KEA4_CTRL = '/var/run/kea/dhcp4-ctrl-socket' HOSTSD_CLIENT = '/usr/bin/vyos-hostsd-client' base_path = ['service', 'dhcp-server'] interface = 'dum8765' diff --git a/smoketest/scripts/cli/test_service_dhcpv6-server.py b/smoketest/scripts/cli/test_service_dhcpv6-server.py index ab4604165..39142c720 100755 --- a/smoketest/scripts/cli/test_service_dhcpv6-server.py +++ b/smoketest/scripts/cli/test_service_dhcpv6-server.py @@ -26,7 +26,7 @@ from vyos.utils.process import process_named_running from vyos.utils.file import read_file PROCESS_NAME = 'kea-dhcp6' -KEA6_CONF = '/run/kea/kea-dhcp6.conf' +KEA6_CONF = '/var/run/kea/kea-dhcp6.conf' base_path = ['service', 'dhcpv6-server'] subnet = '2001:db8:f00::/64' diff --git a/smoketest/scripts/cli/test_vrf.py b/smoketest/scripts/cli/test_vrf.py index 66a95cd02..59b0b7254 100755 --- a/smoketest/scripts/cli/test_vrf.py +++ b/smoketest/scripts/cli/test_vrf.py @@ -652,7 +652,7 @@ class VRFTest(VyOSUnitTestSHIM.TestCase): # declare fiels process_name = 'kea-dhcp4' - kea4_conf = f'/run/kea/kea-{vrf}-dhcp4.conf' + kea4_conf = f'/var/run/kea/kea-{vrf}-dhcp4.conf' # create interface cidr_mask = subnet.split('/')[-1] @@ -791,7 +791,7 @@ class VRFTest(VyOSUnitTestSHIM.TestCase): # declare fiels process_name = 'kea-dhcp6' - kea6_conf = f'/run/kea/kea-{vrf}-dhcp6.conf' + kea6_conf = f'/var/run/kea/kea-{vrf}-dhcp6.conf' # create interface self.cli_set(['interfaces', 'dummy', interface, 'address', f'{interface_addr}']) 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': { |
