Kea-DHCP Logging through the script-run hook

Carsten Strotmann

2025/03/13

Logging via the shell script extension

This solution uses the script hook (part of the open source version of Kea-DHCP: https://kea.readthedocs.io/en/kea-2.6.1/arm/hooks.html#libdhcp-run-script-so-run-script-support-for-external-hook-scripts ).

Script hook configuration in kea-dhcp4.conf:

    "hooks-libraries": [
      {
        "library": "/usr/lib64/kea/hooks/libdhcp_run_script.so",
        "parameters": {
           "name": "/var/lib/kea/hookscript.sh",
           "sync": false
        }
      }],

The Script (in this example in /var/lib/kea/hookscript.sh must be executable):

#!/bin/sh

logfile="/var/log/kea/kea-hook-script.log"

case "${1}" in
    "lease4_renew")
        echo "lease4_renew: ${QUERY4_TYPE} via ${QUERY4_GIADDR} from ${PKT4_HWADDR} for ${LEASE4_ADDRESS}" >> ${l$
        ;;
    "lease4_expire")
        echo "lease4_expire: ${LEASE4_ADDRESS}" >> ${logfile}
        ;;
    "lease4_recover")
        echo "lease4_recover: ${QUERY4_TYPE} via ${QUERY4_GIADDR} from ${PKT4_HWADDR} for ${QUERY4_YIADDR}" >> ${$
        ;;
    "leases4_committed")
        ;;
    "lease4_release")
        echo "lease4_release: ${QUERY4_TYPE} via ${QUERY4_GIADDR} from ${LEASE4_HWADDR} for ${LEASE4_ADDRESS}" >>$
        ;;
    "lease4_decline")
        echo "lease4_decline: ${QUERY4_TYPE} via ${QUERY4_GIADDR} from ${PKT4_HWADDR} for ${QUERY4_YIADDR}" >> ${$
        ;;
esac

Content of the created logfile in /var/log/kea/kea-hook-script.log:

lease4_renew: DHCPREQUEST via 192.168.1.122 from 00:60:6e:65:a2:e5 for 172.22.1.100
lease4_renew: DHCPREQUEST via 192.168.1.122 from 00:60:6e:65:a2:e5 for 172.22.1.100
lease4_renew: DHCPREQUEST via 192.168.1.122 from 00:60:6e:65:a2:e5 for 172.22.1.100
lease4_renew: DHCPREQUEST via 192.168.1.122 from 00:60:6e:65:a2:e5 for 172.22.1.100
lease4_release: DHCPRELEASE via 192.168.1.122 from 00:60:6e:65:a2:e5 for 172.22.1.100
lease4_renew: DHCPDISCOVER via 192.168.1.122 from 00:60:6e:65:a2:e5 for 172.22.1.100
lease4_renew: DHCPDISCOVER via 192.168.1.122 from 00:60:6e:65:a2:e5 for 172.22.1.100
lease4_expire: 172.22.1.100
lease4_renew: DHCPREQUEST via 192.168.1.122 from 00:60:6e:65:a2:e5 for 172.22.1.100
lease4_renew: DHCPREQUEST via 192.168.1.122 from 00:60:6e:65:a2:e5 for 172.22.1.100