DHCP

⚠️ page non corrigée

Serveur DHCPv4

Au vu que ISC DHCP n'est plus maintenu depuis la fin de 2022 source ISC, j'ai décidé de prendre Kea.

À ce que je vois, la différence entre ISC et Kea DHCP est une configuration en JSON. C'est un format que j'apprécie, car il est plus simple et j'ai pris l'habitude de l'utiliser.

Pour le moment, le 2025-08-20 où j'écris ceci, j'ai un conteneur sous Debian 12 avec le paquet kea-dhcp4-server et le service kea-dhcp4-server.service activé. (Ce qui semble logique...)

Configuration

Ce que j'ai fait, j'ai deux fichiers dans le dossier /etc/kea, le fichier kea-dhcp4.conf et kea-dhcp4_subnets.json. Le premier fichier est la configuration du serveur, et le deuxième correspond aux subnets.

Le fichier kea-dhcp4.conf:

{
    "Dhcp4": {
        "authoritative": true,

        "valid-lifetime": 604800,

        "interfaces-config": {
            "interfaces": [ "eth0" ]
        },

        "lease-database": {
            "type": "memfile",
            "persist": true,
            "name": "/var/lib/kea/dhcp4.leases"
        },

        "subnet4": [
            <?include "/etc/kea/kea-dhcp4_subnets.json"?>
        ],

        "loggers": [
            {
                "name": "kea-dhcp4",
                "severity": "INFO",
                "output_options": [
                    {"output": "/var/log/kea/kea-dhcp4.log"}
                ]
            }
        ]
    }
}

Ensuite, un extrai du fichier kea-dhcp4_subnets.json et un peu tronqué:

{
    "id": 240,
    "subnet": "10.128.240.0/16",
    "option-data": [
        {
            "name": "routers",
            "data": "10.128.240.254"
        },
        {
            "name": "domain-name-servers",
            "data": "10.128.240.3"
        },
        {
            "name": "domain-name",
            "data": "dhcp.johann-infra.net"
        }
    ],

    "reservations": [
        {
            "hostname": "authoritative-ns",
            "hw-address": "BC:24:11:EA:59:32",
            "ip-address": "10.128.240.2",
            "option-data": [
                {
                    "name": "domain-name",
                    "data": "iaas.johann-infra.net"
                }
            ]
        }
//      [...]
    ]
}