Saturday, November 22, 2025

Kea DHCP : Use Kea Control Agent

 

Kea DHCP : Use Kea Control Agent

 

To start Kea control agent, it allows you to manage Kea DHCP via API.

[1]Install and Start Kea control agent.
root@dlp:~# 
apt -y install kea-ctrl-agent curl jq
root@dlp:~# 
vi /etc/kea/kea-dhcp4.conf
"Dhcp4": {
    # add follows
    "control-socket": {
        "socket-type": "unix",
        "socket-name": "/run/kea/kea4-ctrl-socket"
    },
.....
.....

root@dlp:~# 
vi /etc/kea/kea-ctrl-agent.conf
    # line 20 : listening IP address
    "http-host": "127.0.0.1",

    # line 27 : listening port
    "http-port": 8000,

    # line 38 : check the settings
    "authentication": {
        "type": "basic",
        "realm": "Kea Control Agent",
        "directory": "/etc/kea",
        "clients": [
            {
                "user": "kea-api",
                "password-file": "kea-api-password"
            }
        ]
    },

root@dlp:~# 
echo -n password > /etc/kea/kea-api-password

root@dlp:~# 
chown root:_kea /etc/kea/kea-api-password

root@dlp:~# 
chmod 640 /etc/kea/kea-api-password

root@dlp:~# 
systemctl restart kea-dhcp4-server kea-ctrl-agent

[2]This is an example of using command via API.
root@dlp:~# 
curl -u kea-api -s -H "Content-Type: application/json" -d '{"command": "list-commands", "service": ["dhcp4"]}' localhost:8000 | jq

Enter host password for user 'kea-api':   # enter the admin password you set above
[
  {
    "arguments": [
      "build-report",
      "config-backend-pull",
      "config-get",
      "config-hash-get",
      "config-reload",
      "config-set",
      "config-test",
      "config-write",
      "dhcp-disable",
      "dhcp-enable",
      "leases-reclaim",
      "list-commands",
      "server-tag-get",
      "shutdown",
      "statistic-get",
      "statistic-get-all",
      "statistic-remove",
      "statistic-remove-all",
      "statistic-reset",
      "statistic-reset-all",
      "statistic-sample-age-set",
      "statistic-sample-age-set-all",
      "statistic-sample-count-set",
      "statistic-sample-count-set-all",
      "status-get",
      "version-get"
    ],
    "result": 0
  }
]

root@dlp:~# 
curl -u kea-api -s -H "Content-Type: application/json" -d '{"command": "config-get", "service": ["dhcp4"]}' localhost:8000 | jq

Enter host password for user 'kea-api':
[
  {
    "arguments": {
      "Dhcp4": {
        "allocator": "iterative",
        "authoritative": false,
        "boot-file-name": "",
        "calculate-tee-times": false,
        "control-socket": {
          "socket-name": "/run/kea/kea4-ctrl-socket",
          "socket-type": "unix"
        },
.....
.....

root@dlp:~# 
curl -u kea-api -s -H "Content-Type: application/json" -d '{"command": "statistic-get-all", "service": ["dhcp4"]}' localhost:8000 | jq

Enter host password for user 'kea-api':
[
  {
    "arguments": {
      "cumulative-assigned-addresses": [
        [
          0,
          "2025-08-12 17:08:27.006595"
        ]
      ],
      "declined-addresses": [
        [
          0,
          "2025-08-12 17:08:27.006593"
        ]
      ],
      "pkt4-ack-received": [
        [
          0,
          "2025-08-12 17:08:26.993754"
        ]
      ],
.....
.....

No comments:

Post a Comment