Kea Administrator Reference Manual
From:     https://kea.readthedocs.io/en/latest/index.html






Kea Administrator Reference Manual Kea is an open source implementation of the Dynamic Host Configuration Protocol (DHCP) servers, developed and maintained by Internet Systems Consortium (ISC). This is the reference guide for Kea version 2.3.9-git. Links to the most up-to-date version of this document (in PDF, HTML, and plain text formats) can be found on Read the Docs. Other useful Kea information can be found in our Knowledgebase.
  1. Introduction
    1. 1. Supported Platforms
      1. 1.1. Regularly Tested Platforms
      2. 1.2. Best-Effort
      3. 1.3. Community-Maintained
      4. 1.4. Unsupported Platforms
    2. 2. Required Software at Runtime
    3. 3. Kea Software
  2. Quick Start
    1. 1. Quick Start Guide Using tarball
    2. 2. Quick Start Guide Using Native Packages
    3. 3. Quick Start Guide for DHCPv4 and DHCPv6 Services
    4. 4. Running the Kea Servers Directly
  3. Installation
    1. 3.1. Packages
      1. 3.1.1. Installation From Cloudsmith Packages
      2. 3.1.2. Caveats When Upgrading Kea Packages
    2. 3.2. Installation Hierarchy
    3. 3.3. Build Requirements
    4. 3.4. Installation From Source
      1. 3.4.1. Download Tar File
      2. 3.4.2. Retrieve From Git
      3. 3.4.3. Configure Before the Build
      4. 3.4.4. Build
      5. 3.4.5. Install
      6. 3.4.6. Cross-Building
    5. 3.5. DHCP Database Installation and Configuration
      1. 3.5.1. Building with MySQL Support
      2. 3.5.2. Building with PostgreSQL support
    6. 3.6. Hammer Building Tool
    7. 3.7. Running Kea From a Non-root Account on Linux
    8. 3.8. Deprecated Features
      1. 3.8.1. Sysrepo 0.x or 1.x
      2. 3.8.2. libreload command
  4. Kea Database Administration
    1. 1. Databases and Schema Versions
    2. 2. The kea-admin Tool
    3. 3. Supported Backends
      1. 3.1. Memfile
        1. 3.1.1. Upgrading Memfile Lease Files From an Earlier Version of Kea
      2. 3.2. MySQL
        1. 3.2.1. MySQL 5.7 vs MySQL 8 vs MariaDB 10 and 11
        2. 3.2.2. First-Time Creation of the MySQL Database
        3. 3.2.3. Upgrading a MySQL Database From an Earlier Version of Kea
        4. 3.2.4. Improved Performance With MySQL
      3. 3.3. PostgreSQL
        1. 3.3.1. First-Time Creation of the PostgreSQL Database
        2. 3.3.2. Initialize the PostgreSQL Database Using kea-admin
        3. 3.3.3. Upgrading a PostgreSQL Database From an Earlier Version of Kea
        4. 3.3.4. PostgreSQL without OpenSSL support
        5. 3.3.5. Improved Performance With PostgreSQL
      4. 3.4. Using Read-Only Databases With Host Reservations
      5. 3.5. Limitations Related to the Use of SQL Databases
        1. 3.5.1. Year 2038 Issue
    4. Kea Configuration
      1. 1. JSON Configuration
        1. 1.1. JSON Syntax
        2. 1.2. Comments and User Context
        3. 1.3. Simplified Notation
      2. 2. Kea Configuration Backend
        1. 2.1. Applicability
        2. 2.2. CB Capabilities and Limitations
        3. 2.3. CB Components
        4. 2.4. Configuration Sharing and Server Tags
        5. 2.5. Configuration Files Inclusion
    5. Managing Kea with keactrl
      1. 1. Overview
      2. 2. Command Line Options
      3. 3. The keactrl Configuration File
      4. 4. Commands
      5. 5. Overriding the Server Selection
      6. 6. Native Packages and systemd
    6. The Kea Control Agent
      1. 1. Overview of the Kea Control Agent
      2. 2. Configuration
      3. 3. Secure Connections
      4. 4. Starting and Stopping the Control Agent
      5. 5. Connecting to the Control Agent
    7. The DHCPv4 Server
      1. 1. Starting and Stopping the DHCPv4 Server
      2. 2. DHCPv4 Server Configuration
        1. 2.1. Introduction
        2. 2.2. Lease Storage
          1. 2.2.1. Memfile - Basic Storage for Leases
          2. 2.2.2. Why Is Lease File Cleanup Necessary?
          3. 2.2.3. Lease Database Configuration
          4. 2.2.4. Tuning Database Timeouts
        3. 2.3. Hosts Storage
          1. 2.3.1. DHCPv4 Hosts Database Configuration
          2. 2.3.2. Using Read-Only Databases for Host Reservations With DHCPv4
          3. 2.3.3. Tuning Database Timeouts for Hosts Storage
        4. 2.4. Interface Configuration
        5. 2.5. Issues With Unicast Responses to DHCPINFORM
        6. 2.6. IPv4 Subnet Identifier
        7. 2.7. IPv4 Subnet Prefix
        8. 2.8. Configuration of IPv4 Address Pools
        9. 2.9. Sending T1 (Option 58) and T2 (Option 59)
        10. 2.10. Standard DHCPv4 Options
        11. 2.11. Custom DHCPv4 Options
        12. 2.12. DHCPv4 Private Options
        13. 2.13. DHCPv4 Vendor-Specific Options
        14. 2.14. Nested DHCPv4 Options (Custom Option Spaces)
        15. 2.15. Unspecified Parameters for DHCPv4 Option Configuration
        16. 2.16. Support for Long Options
        17. 2.17. Stateless Configuration of DHCPv4 Clients
        18. 2.18. Client Classification in DHCPv4
          1. 2.18.1. Setting Fixed Fields in Classification
          2. 2.18.2. Using Vendor Class Information in Classification
          3. 2.18.3. Defining and Using Custom Classes
          4. 2.18.4. Required Classification
        19. 2.19. DDNS for DHCPv4
          1. 2.19.1. DHCP-DDNS Server Connectivity
          2. 2.19.2. When Does the kea-dhcp4 Server Generate a DDNS Request?
          3. 2.19.3. kea-dhcp4 Name Generation for DDNS Update Requests
          4. 2.19.4. Sanitizing Client Host Name and FQDN Names
        20. 2.20. Next Server (siaddr)
        21. 2.21. Echoing Client-ID (RFC 6842)
        22. 2.22. Using Client Identifier and Hardware Address
        23. 2.23. Authoritative DHCPv4 Server Behavior
        24. 2.24. DHCPv4-over-DHCPv6: DHCPv4 Side
        25. 2.25. Sanity Checks in DHCPv4
        26. 2.26. Storing Extended Lease Information
        27. 2.27. Multi-Threading Settings
        28. 2.28. Multi-Threading Settings With Different Database Backends
        29. 2.29. IPv6-Only Preferred Networks
        30. 2.30. Lease Caching
        31. 2.31. Temporary Allocation on DHCPDISCOVER
      3. 3. Host Reservations in DHCPv4
        1. 3.1. Address Reservation Types
        2. 3.2. Conflicts in DHCPv4 Reservations
        3. 3.3. Reserving a Hostname
        4. 3.4. Including Specific DHCPv4 Options in Reservations
        5. 3.5. Reserving Next Server, Server Hostname, and Boot File Name
        6. 3.6. Reserving Client Classes in DHCPv4
        7. 3.7. Storing Host Reservations in MySQL or PostgreSQL
        8. 3.8. Fine-Tuning DHCPv4 Host Reservation
        9. 3.9. Global Reservations in DHCPv4
        10. 3.10. Pool Selection with Client Class Reservations
        11. 3.11. Subnet Selection with Client Class Reservations
        12. 3.12. Multiple Reservations for the Same IP
        13. 3.13. Host Reservations as Basic Access Control
      4. 4. Shared Networks in DHCPv4
        1. 4.1. Local and Relayed Traffic in Shared Networks
        2. 4.2. Client Classification in Shared Networks
        3. 4.3. Host Reservations in Shared Networks
      5. 5. Server Identifier in DHCPv4
      6. 6. How the DHCPv4 Server Selects a Subnet for the Client
        1. 6.1. Using a Specific Relay Agent for a Subnet
        2. 6.2. Segregating IPv4 Clients in a Cable Network
      7. 7. Duplicate Addresses (DHCPDECLINE Support)
      8. 8. Statistics in the DHCPv4 Server
      9. 9. Management API for the DHCPv4 Server
      10. 10. User Contexts in IPv4
      11. 11. Supported DHCP Standards
        1. 11.1. Known RFC Violations
      12. 12. DHCPv4 Server Limitations
      13. 13. Kea DHCPv4 Server Examples
      14. 14. Configuration Backend in DHCPv4
        1. 14.1. Supported Parameters
        2. 14.2. Enabling the Configuration Backend
      15. 15. Kea DHCPv4 Compatibility Configuration Parameters
        1. 15.1. Lenient Option Parsing
        2. 15.2. Ignore DHCP Server Identifier
        3. 15.3. Ignore RAI Link Selection
        4. 15.4. Exclude First Last Addresses in Subnets Bigger Than /24
      16. 16. Address Allocation Strategies in DHCPv4
        1. 16.1. Allocators Comparison
        2. 16.2. Iterative Allocator
        3. 16.3. Random Allocator
        4. 16.4. Free Lease Queue Allocator
    8. The DHCPv6 Server
      1. 1. Starting and Stopping the DHCPv6 Server
      2. 2. DHCPv6 Server Configuration
        1. 2.1. Introduction
        2. 2.2. Lease Storage
          1. 2.2.1. Memfile - Basic Storage for Leases
          2. 2.2.2. Why Is Lease File Cleanup Necessary?
          3. 2.2.3. Lease Database Configuration
          4. 2.2.4. Tuning Database Timeouts
        3. 2.3. Hosts Storage
          1. 2.3.1. DHCPv6 Hosts Database Configuration
          2. 2.3.2. Using Read-Only Databases for Host Reservations with DHCPv6
          3. 2.3.3. Tuning Database Timeouts for Hosts Storage
        4. 2.4. Interface Configuration
        5. 2.5. IPv6 Subnet Identifier
        6. 2.6. IPv6 Subnet Prefix
        7. 2.7. Unicast Traffic Support
        8. 2.8. Configuration of IPv6 Address Pools
        9. 2.9. Subnet and Prefix Delegation Pools
        10. 2.10. Prefix Exclude Option
        11. 2.11. Standard DHCPv6 Options
        12. 2.12. Common Softwire46 Options
          1. 2.12.1. Softwire46 Container Options
          2. 2.12.2. S46 Rule Option
          3. 2.12.3. S46 BR Option
          4. 2.12.4. S46 DMR Option
          5. 2.12.5. S46 IPv4/IPv6 Address Binding Option
          6. 2.12.6. S46 Port Parameters
        13. 2.13. Custom DHCPv6 Options
        14. 2.14. DHCPv6 Vendor-Specific Options
        15. 2.15. Nested DHCPv6 Options (Custom Option Spaces)
        16. 2.16. Unspecified Parameters for DHCPv6 Option Configuration
        17. 2.17. Controlling the Values Sent for T1 and T2 Times
        18. 2.18. IPv6 Subnet Selection
        19. 2.19. Rapid Commit
        20. 2.20. DHCPv6 Relays
        21. 2.21. Relay-Supplied Options
        22. 2.22. Client Classification in DHCPv6
          1. 2.22.1. Defining and Using Custom Classes
          2. 2.22.2. Required Classification
        23. 2.23. DDNS for DHCPv6
          1. 2.23.1. DHCP-DDNS Server Connectivity
          2. 2.23.2. When Does the kea-dhcp6 Server Generate a DDNS Request?
          3. 2.23.3. kea-dhcp6 Name Generation for DDNS Update Requests
          4. 2.23.4. Sanitizing Client FQDN Names
          5. 2.24. DHCPv4-over-DHCPv6: DHCPv6 Side
          6. 2.25. Sanity Checks in DHCPv6
          7. 2.26. Storing Extended Lease Information
          8. 2.27. Multi-Threading Settings
          9. 2.28. Multi-Threading Settings With Different Database Backends
          10. 2.29. Lease Caching
        24. 3. Host Reservations in DHCPv6
          1. 3.1. Address/Prefix Reservation Types
          2. 3.2. Conflicts in DHCPv6 Reservations
          3. 3.3. Reserving a Hostname
          4. 3.4. Including Specific DHCPv6 Options in Reservations
          5. 3.5. Reserving Client Classes in DHCPv6
          6. 3.6. Storing Host Reservations in MySQL or PostgreSQL
          7. 3.7. Fine-Tuning DHCPv6 Host Reservation
          8. 3.8. Global Reservations in DHCPv6
          9. 3.9. Pool Selection with Client Class Reservations
          10. 3.10. Subnet Selection with Client Class Reservations
          11. 3.11. Multiple Reservations for the Same IP
          12. 3.12. Host Reservations as Basic Access Control
        25. 4. Shared Networks in DHCPv6
          1. 4.1. Local and Relayed Traffic in Shared Networks
          2. 4.2. Client Classification in Shared Networks
          3. 4.3. Host Reservations in Shared Networks
        26. 5. Server Identifier in DHCPv6
        27. 6. DHCPv6 Data Directory
        28. 7. Stateless DHCPv6 (INFORMATION-REQUEST Message)
        29. 8. Support for RFC 7550 (now part of RFC 8415)
        30. 9. Using a Specific Relay Agent for a Subnet
        31. 10. Segregating IPv6 Clients in a Cable Network
        32. 11. MAC/Hardware Addresses in DHCPv6
        33. 12. Duplicate Addresses (DHCPDECLINE Support)
        34. 13. Statistics in the DHCPv6 Server
        35. 14. Management API for the DHCPv6 Server
        36. 15. User Contexts in IPv6
        37. 16. Supported DHCPv6 Standards
        38. 17. DHCPv6 Server Limitations
        39. 18. Kea DHCPv6 Server Examples
        40. 19. Configuration Backend in DHCPv6
          1. 19.1. Supported Parameters
          2. 19.2. Enabling the Configuration Backend
        41. 20. Kea DHCPv6 Compatibility Configuration Parameters
          1. 20.1. Lenient Option Parsing
        42. 21. Address Allocation Strategies in DHCPv6
          1. 21.1. Allocators Comparison
          2. 21.2. Iterative Allocator
          3. 21.3. Random Allocator
          4. 21.4. Free Lease Queue Allocator (Prefix Delegation Only)
        43. Database Connectivity
        44. Lease Expiration
          1. 1. Lease Reclamation
          2. 2. Lease Reclamation Configuration Parameters
          3. 3. Configuring Lease Reclamation
          4. 4. Configuring Lease Affinity
          5. 5. Reclaiming Expired Leases via Command
        45. Congestion Handling
          1. 1. What is Congestion?
          2. 2. Configuring Congestion Handling
        46. The DHCP-DDNS Server
          1. 1. Overview
            1. 1.1. DNS Server Selection
            2. 1.2. Conflict Resolution
            3. 1.3. Dual-Stack Environments
          2. 2. Starting and Stopping the DHCP-DDNS Server
          3. 3. Configuring the DHCP-DDNS Server
            1. 3.1. Global Server Parameters
            2. 3.2. Management API for the D2 Server
            3. 3.3. TSIG Key List
            4. 3.4. Forward DDNS
              1. 3.4.1. Adding Forward DDNS Domains
                1. 3.4.1.1. Adding Forward DNS Servers
            5. 3.5. Reverse DDNS
              1. 3.5.1. Adding Reverse DDNS Domains
                1. 3.5.1.1. Adding Reverse DNS Servers
              2. 3.5.2. Per-DNS-Server TSIG Keys
            6. 3.6. User Contexts in DDNS
            7. 3.7. Example DHCP-DDNS Server Configuration
          4. 4. DHCP-DDNS Server Statistics
            1. 4.1. NCR Statistics
            2. 4.2. DNS Update Statistics
            3. 4.3. Per-TSIG-Key DNS Update Statistics
          5. 5. DHCP-DDNS Server Limitations
          6. 6. Supported Standards
        47. The LFC Process
          1. 1. Overview
          2. 2. Command-Line Options
        48. Client Classification
          1. 1. Client Classification Overview
            1. 1.1. Classification Steps
          2. 2. Built-in Client Classes
          3. 3. Using Expressions in Classification
            1. 3.1. Logical Operators
            2. 3.2. Substring
            3. 3.3. Concat
            4. 3.4. Split
            5. 3.5. Ifelse
            6. 3.6. Hexstring
          4. 4. Configuring Classes
          5. 5. Using Static Host Reservations in Classification
          6. 6. Configuring Subnets With Class Information
          7. 7. Configuring Pools With Class Information
          8. 8. Using Classes
          9. 9. Classes and Hooks
          10. 10. Debugging Expressions
      3. Hook Libraries
        1. 1. Introduction
        2. 2. Installing Hook Packages
        3. 3. Configuring Hook Libraries
          1. 3.1. Order of Configuration:
          2. 3.2. User Contexts in Hooks
        4. 4. Available Hook Libraries
        5. 5. libdhcp_bootp.so: Support for BOOTP Clients
          1. 5.1. BOOTP Hooks Limitations
        6. 6. libdhcp_cb_cmds.so: Configuration Backend Commands
          1. 6.1. Command Structure
          2. 6.2. Control Commands for DHCP Servers
          3. 6.3. Metadata
          4. 6.4. The remote-server4-del, remote-server6-del Commands
          5. 6.5. The remote-server4-get, remote-server6-get Commands
          6. 6.6. The remote-server4-get-all, remote-server6-get-all Commands
          7. 6.7. The remote-server4-set, remote-server6-set Commands
          8. 6.8. The remote-global-parameter4-del, remote-global-parameter6-del Commands
          9. 6.9. The remote-global-parameter4-get, remote-global-parameter6-get Commands
          10. 6.10. The remote-global-parameter4-get-all, remote-global-parameter6-get-all Commands
          11. 6.11. The remote-global-parameter4-set, remote-global-parameter6-set Commands
          12. 6.12. The remote-network4-del, remote-network6-del Commands
          13. 6.13. The remote-network4-get, remote-network6-get Commands
          14. 6.14. The remote-network4-list, remote-network6-list Commands
          15. 6.15. The remote-network4-set, remote-network6-set Commands
          16. 6.16. The remote-option-def4-del, remote-option-def6-del Commands
          17. 6.17. The remote-option-def4-get, remote-option-def6-get Commands
          18. 6.18. The remote-option-def4-get-all, remote-option-def6-get-all Commands
          19. 6.19. The remote-option-def4-set, remote-option-def6-set Commands
          20. 6.20. The remote-option4-global-del, remote-option6-global-del Commands
          21. 6.21. The remote-option4-global-get, remote-option6-global-get Commands
          22. 6.22. The remote-option4-global-get-all, remote-option6-global-get-all Commands
          23. 6.23. The remote-option4-global-set, remote-option6-global-set Commands
          24. 6.24. The remote-option4-network-del, remote-option6-network-del Commands
          25. 6.25. The remote-option4-network-set, remote-option6-network-set Commands
          26. 6.26. The remote-option6-pd-pool-del Command
          27. 6.27. The remote-option6-pd-pool-set Command
          28. 6.28. The remote-option4-pool-del, remote-option6-pool-del Commands
          29. 6.29. The remote-option4-pool-set, remote-option6-pool-set Commands
          30. 6.30. The remote-option4-subnet-del, remote-option6-subnet-del Commands
          31. 6.31. The remote-option4-subnet-set, remote-option6-subnet-set Commands
          32. 6.32. The remote-subnet4-del-by-id, remote-subnet6-del-by-id Commands
          33. 6.33. The remote-subnet4-del-by-prefix, remote-subnet6-del-by-prefix Commands
          34. 6.34. The remote-subnet4-get-by-id, remote-subnet6-get-by-id Commands
          35. 6.35. The remote-subnet4-get-by-prefix, remote-subnet6-get-by-prefix Commands
          36. 6.36. The remote-subnet4-list, remote-subnet6-list Commands
          37. 6.37. The remote-subnet4-set, remote-subnet6-set Commands
          38. 6.38. The remote-class4-del, remote-class6-del Commands
          39. 6.39. The remote-class4-get, remote-class6-get Commands
          40. 6.40. The remote-class4-get-all, remote-class6-get-all Commands
          41. 6.41. The remote-class4-set, remote-class6-set Commands
        7. 7. libdhcp_class_cmds.so: Class Commands
          1. 7.1. The class-add Command
          2. 7.2. The class-update Command
          3. 7.3. The class-del Command
          4. 7.4. The class-list Command
          5. 7.5. The class-get Command
        8. 8. libdhcp_ddns_tuning.so: DDNS Tuning
          1. 8.1. Procedural Host-Name Generation
            1. 8.1.1. DHCPv4 Host-Name Generation
            2. 8.1.2. DHCPv6 Host-Name Generation
          2. 8.2. Skipping DDNS Updates
        9. 9. libdhcp_flex_id.so: Flexible Identifier for Host Reservations
          1. 9.1. The replace-client-id Flag
          2. 9.2. The ignore-iaid Flag
        10. 10. libdhcp_flex_option.so: Flexible Option Actions for Option Value Settings
        11. 11. libddns_gss_tsig.so: Sign DNS Updates With GSS-TSIG
        12. 12. libdhcp_ha.so: High Availability Outage Resilience for Kea Servers
          1. 12.1. Supported Configurations
          2. 12.2. Clocks on Active Servers
          3. 12.3. HTTPS Support
          4. 12.4. Server States
          5. 12.5. Scope Transition in a Partner-Down Case
          6. 12.6. Load-Balancing Configuration
          7. 12.7. Load Balancing With Advanced Classification
          8. 12.8. Hot-Standby Configuration
          9. 12.9. Passive-Backup Configuration
          10. 12.10. Lease Information Sharing
          11. 12.11. Controlling Lease-Page Size Limit
          12. 12.12. Timeouts
          13. 12.13. Pausing the HA State Machine
          14. 12.14. Control Agent Configuration
          15. 12.15. Multi-Threaded Configuration (HA+MT)
          16. 12.16. Parked-Packet Limit
          17. 12.17. Controlled Shutdown and Maintenance of DHCP Servers
          18. 12.18. Upgrading From Older HA Versions
          19. 12.19. Control Commands for High Availability
            1. 12.19.1. The ha-sync Command
            2. 12.19.2. The ha-scopes Command
            3. 12.19.3. The ha-continue Command
            4. 12.19.4. The ha-heartbeat Command
            5. 12.19.5. The status-get Command
            6. 12.19.6. The ha-maintenance-start Command
            7. 12.19.7. The ha-maintenance-cancel Command
            8. 12.19.8. The ha-maintenance-notify Command
            9. 12.19.9. The ha-reset Command
            10. 12.19.10. The ha-sync-complete-notify Command
          20. 13. libdhcp_host_cache.so: Host Cache Reservations for Improved Performance
            1. 13.1. The cache-flush Command
            2. 13.2. The cache-clear Command
            3. 13.3. The cache-size Command
            4. 13.4. The cache-write Command
            5. 13.5. The cache-load Command
            6. 13.6. The cache-get Command
            7. 13.7. The cache-get-by-id Command
            8. 13.8. The cache-insert Command
            9. 13.9. The cache-remove Command
            10. 14. libdhcp_host_cmds.so: Host Commands
            11. 14.1. The subnet-id Parameter
            12. 14.2. The operation-target Parameter
            13. 14.3. The reservation-add Command
            14. 14.4. The reservation-get Command
            15. 14.5. The reservation-get-all Command
            16. 14.6. The reservation-get-page Command
            17. 14.7. The reservation-get-by-hostname Command
            18. 14.8. The reservation-get-by-id Command
            19. 14.9. The reservation-del Command
            20. 14.10. The reservation-update Command
            21. 14.11. General Mentions
          21. 15. libdhcp_lease_cmds.so: Lease Commands for Easier Lease Management
            1. 15.1. The lease4-add, lease6-add Commands
            2. 15.2. The lease6-bulk-apply Command
            3. 15.3. The lease4-get, lease6-get Commands
            4. 15.4. The lease4-get-all, lease6-get-all Commands
            5. 15.5. The lease4-get-page, lease6-get-page Commands
            6. 15.6. The lease4-get-by-*, lease6-get-by-* Commands
            7. 15.7. The lease4-del, lease6-del Commands
            8. 15.8. The lease4-update, lease6-update Commands
            9. 15.9. The lease4-wipe, lease6-wipe Commands
            10. 15.10. The lease4-resend-ddns, lease6-resend-ddns Commands
            11. 15.11. The lease4-write, lease6-write Commands
          22. 16. libdhcp_lease_query.so: Leasequery Support
            1. 16.1. DHCPv4 Leasequery
            2. 16.2. DHCPv4 Leasequery Configuration
            3. 16.3. DHCPv6 Leasequery
            4. 16.4. DHCPv6 Leasequery Configuration
            5. 16.5. DHCPv4 Bulk Leasequery
            6. 16.6. DHCPv6 Bulk Leasequery
            7. 16.7. Bulk Leasequery Configuration
            8. 16.8. Updating Existing Leases in SQL Lease Backends
          23. 17. libdhcp_legal_log.so: Forensic Logging
            1. 17.1. Log File Naming
            2. 17.2. Configuring the Forensic Logging Hooks
            3. 17.3. DHCPv4 Log Entries
            4. 17.4. DHCPv6 Log Entries
            5. 17.5. Database Backend
          24. 18. libdhcp_limits.so: Limits to Manage Lease Allocation and Packet Processing
            1. 18.1. Configuration
            2. 18.2. Lease Limiting
            3. 18.3. Rate Limiting
          25. 19. libdhcp_mysql_cb.so: Configuration Backend for MySQL
          26. 20. libdhcp_pgsql_cb.so: Configuration Backend for PostgreSQL
          27. 21. libdhcp_radius.so: RADIUS Server Support
            1. 21.1. Compilation and Installation of the RADIUS Hook
            2. 21.2. RADIUS Hook Configuration
          28. 22. libca_rbac.so: Role-Based Access Control
            1. 22.1. Role-Based Access Control (RBAC) Overview
            2. 22.2. Role-Based Access Control Configuration
              1. 22.2.1. Role Assignment
              2. 22.2.2. Role Configuration
              3. 22.2.3. API Commands
              4. 22.2.4. Access Control Lists
              5. 22.2.5. Response Filters
              6. 22.2.6. Global Parameters
            3. 22.3. Sample Configuration
            4. 22.4. Accept/Reject Algorithm
            5. 22.5. Custom Hook Commands and Command Redefinition
            6. 22.6. Extensive Example
          29. 23. libdhcp_run_script.so: Run Script Support for External Hook Scripts
          30. 24. libdhcp_stat_cmds.so: Statistics Commands for Supplemental Lease Statistics
            1. 24.1. The stat-lease4-get, stat-lease6-get Commands
          31. 25. libdhcp_subnet_cmds.so: Subnet Commands to Manage Subnets and Shared Networks
            1. 25.1. The subnet4-list Command
            2. 25.2. The subnet6-list Command
            3. 25.3. The subnet4-get Command
            4. 25.4. The subnet6-get Command
            5. 25.5. The subnet4-add Command
            6. 25.6. The subnet6-add Command
            7. 25.7. The subnet4-update Command
            8. 25.8. The subnet6-update Command
            9. 25.9. The subnet4-del Command
            10. 25.10. The subnet6-del Command
            11. 25.11. The subnet4-delta-add Command
            12. 25.12. The subnet6-delta-add Command
            13. 25.13. The subnet4-delta-del Command
            14. 25.14. The subnet6-delta-del Command
            15. 25.15. The network4-list, network6-list Commands
            16. 25.16. The network4-get, network6-get Commands
            17. 25.17. The network4-add, network6-add Commands
            18. 25.18. The network4-del, network6-del Commands
            19. 25.19. The network4-subnet-add, network6-subnet-add Commands
            20. 25.20. The network4-subnet-del, network6-subnet-del Commands
          32. 26. libdhcp_user_chk.so: User Check
          33. Statistics
          34. 1. Statistics Overview
          35. 2. Statistics Lifecycle
          36. 3. Commands for Manipulating Statistics
            1. 3.1. The statistic-get Command
            2. 3.2. The statistic-reset Command
            3. 3.3. The statistic-remove Command
            4. 3.4. The statistic-get-all Command
            5. 3.5. The statistic-reset-all Command
            6. 3.6. The statistic-remove-all Command
            7. 3.7. The statistic-sample-age-set Command
            8. 3.8. The statistic-sample-age-set-all Command
            9. 3.9. The statistic-sample-count-set Command
            10. 3.10. The statistic-sample-count-set-all Command
          37. 4. Time Series
        13. Management API
          1. 1. Data Syntax
          2. 2. Control Agent Command Response Format
          3. 3. Using the Control Channel
          4. 4. Commands Supported by Both the DHCPv4 and DHCPv6 Servers
            1. 4.1. The build-report Command
            2. 4.2. The config-get Command
            3. 4.3. The config-reload Command
            4. 4.4. The config-test Command
            5. 4.5. The config-write Command
            6. 4.6. The leases-reclaim Command
            7. 4.7. The libreload Command
            8. 4.8. The list-commands Command
            9. 4.9. The config-set Command
            10. 4.10. The shutdown Command
            11. 4.11. The dhcp-disable Command
            12. 4.12. The dhcp-enable Command
            13. 4.13. The status-get Command
            14. 4.14. The server-tag-get Command:
            15. 4.15. The config-backend-pull Command:
            16. 4.16. The version-get Command
          5. 5. Commands Supported by the D2 Server
          6. 6. Commands Supported by the Control Agent
        14. Logging
          1. 1. Logging Configuration
            1. 1.1. Loggers
              1. 1.1.1. The name (string) Logger
              2. 1.1.2. The severity (string) Logger
              3. 1.1.3. The debuglevel (integer) Logger
              4. 1.1.4. The output_options (list) Logger
                1. 1.1.4.1. The output (string) Option
                2. 1.1.4.2. The flush (boolean) Option
                3. 1.1.4.3. The maxsize (integer) Option
                4. 1.1.4.4. The maxver (integer) Option
                5. 1.1.4.5. The pattern (string) Option
            2. 1.2. Logging Message Format
              1. 1.2.1. Example Logger Configurations
            3. 1.3. Logging During Kea Startup
          2. 2. Logging Levels
        15. The Kea Shell
          1. 1. Overview of the Kea Shell
          2. 2. Shell Usage
          3. 3. TLS Support
        16. Integration With External Systems
          1. 1. YANG/NETCONF
            1. 1.1. Overview
            2. 1.2. Installing NETCONF
              1. 1.2.1. Installing libyang From Sources
              2. 1.2.2. Installing sysrepo From Sources
              3. 1.2.3. Installing libyang-cpp From Sources
              4. 1.2.4. Installing sysrepo-cpp From Sources
            3. 1.3. Compiling With NETCONF
            4. 1.4. Quick Sysrepo Overview
            5. 1.5. Supported YANG Models
            6. 1.6. Using the NETCONF Agent
            7. 1.7. Configuration
            8. 1.8. A kea-netconf Configuration Example
            9. 1.9. Starting and Stopping the NETCONF Agent
            10. 1.10. A Step-by-Step NETCONF Agent Operation Example
              1. 1.10.1. Setup of NETCONF Agent Operation Example
              2. 1.10.2. Example of Error Handling in NETCONF Operation
              3. 1.10.3. NETCONF Operation Example with Two Pools
              4. 1.10.4. NETCONF Operation Example with Two Subnets
              5. 1.10.5. NETCONF Operation Example With Logging
              6. 1.10.6. Migrating YANG Data From a Prior Sysrepo Version
          2. 2. GSS-TSIG
            1. 2.1. GSS-TSIG Overview
            2. 2.2. GSS-TSIG Compilation
            3. 2.3. GSS-TSIG Deployment
              1. 2.3.1. Kerberos 5 Setup
              2. 2.3.2. BIND 9 with GSS-TSIG Configuration
              3. 2.3.3. Windows Active Directory Configuration
              4. 2.3.4. GSS-TSIG Troubleshooting
            4. 2.4. Using GSS-TSIG
              1. 2.4.1. GSS-TSIG Automatic Key Removal
              2. 2.4.2. GSS-TSIG Configuration for Deployment
            5. 2.5. GSS-TSIG Statistics
            6. 2.6. GSS-TSIG Commands
              1. 2.6.1. The gss-tsig-get-all Command
              2. 2.6.2. The gss-tsig-get Command
              3. 2.6.3. The gss-tsig-list Command
              4. 2.6.4. The gss-tsig-key-get Command
              5. 2.6.5. The gss-tsig-key-expire Command
              6. 2.6.6. The gss-tsig-key-del Command
              7. 2.6.7. The gss-tsig-purge-all Command
              8. 2.6.8. The gss-tsig-purge Command
              9. 2.6.9. The gss-tsig-rekey-all Command
              10. 2.6.10. The gss-tsig-rekey Command
          3. Monitoring Kea With Stork
            1. 1. Kea Statistics in Grafana
          4. Kea Security
            1. 1. TLS/HTTPS Support
              1. 1.1. Building Kea with TLS/HTTPS Support
              2. 1.2. TLS/HTTPS Configuration
              3. 1.3. OpenSSL Tuning
            2. 2. Securing a Kea Deployment
              1. 2.1. Component-Based Design
              2. 2.2. Limiting Application Permissions
              3. 2.3. Securing Kea Administrative Access
              4. 2.4. Securing Database Connections
              5. 2.5. Information Leakage Through Logging
              6. 2.6. Cryptography Components
              7. 2.7. TSIG Signatures
              8. 2.8. Raw Socket Support
              9. 2.9. Remote Administrative Access
              10. 2.10. Authentication for Kea's RESTful API
            3. 3. Kea Security Processes
              1. 3.1. Vulnerability Handling
              2. 3.2. Code Quality and Testing
              3. 3.3. Fuzz Testing
              4. 3.4. Release Integrity
              5. 3.5. Bus Factor
          Appendices API Reference Manual Pages Kea Messages Manual Configuration Templates Kea Flow Diagrams Kea Configuration File Syntax (BNF) Acknowledgments