Servidor DHCP Kea 3.0.2

Introdução ao Servidor DHCP Kea do ISC

O pacote ISC Kea contém os programas de servidor para DHCP. Isso é o sucessor do antigo servidor DHCP do ISC, o qual ficou fora de suporte em dezembro de 2022.

[Nota]

Nota

Esse pacote é conhecido por construir e funcionar adequadamente usando-se uma plataforma LFS 13.0.

Informação do Pacote

  • Transferência (HTTP): https://downloads.isc.org/isc/kea/3.0.2/kea-3.0.2.tar.xz

  • Transferência (FTP):

  • Soma de verificação MD5 da transferência: a673e95637b708b3b1926c696cdf168b

  • Tamanho da transferência: 6,3 MB

  • Espaço em disco estimado exigido: 231 MB (47 MB instalado; adicionar 425 MB para testes)

  • Tempo de construção estimado: 6,4 UPCs (com paralelismo=4; adicionar 17 UPCs para testes)

Dependências do Kea

Exigidas

Boost-1.90.0 e log4cplus-2.1.2

Opcionais

BIND-9.20.19, MIT Kerberos V5-1.22.2, Valgrind-3.26.0, Botan, cppcheck, libyang e plantuml

Opcionais (para regerar documentação)

Doxygen-1.16.1, Graphviz-14.1.2, sphinx_rtd_theme-3.1.0 e texlive-20250308 (ou install-tl-unx)

Estruturas opcionais de retaguarda de base de dados

MariaDB-11.8.6 ou MySQL e PostgreSQL-18.2

Configuração do Núcleo

Você precisa ter suporte a Packet Socket. Suporte a IPv6 é opcional. Habilite as seguintes opções no kernel e reinicialize se necessário:

[*] Networking support --->                                                [NET]
  Networking options --->
    <*/M> Packet socket                                                 [PACKET]
    [*]   TCP/IP networking                                               [INET]
    <*>     The IPv6 protocol --->                                        [IPV6]

Instalação do Servidor DHCP Kea do ISC

Primeiro, aplique algumas correções exigidas para boost-1.90.0:

sed -e "/asio_wrapper/a#include <boost/asio/deadline_timer.hpp>" \
    -i src/lib/asiolink/interval_timer.cc                        \
       src/lib/asiodns/io_fetch.cc                               \
       src/lib/asiodns/tests/io_fetch_unittest.cc                &&
sed -e "/lexical_cast.hpp/a #include <boost/static_assert.hpp>"  \
    -i src/lib/log/logger_level_impl.cc

Agora, instale o Servidor DHCP Kea do ISC executando os seguintes comandos:

mkdir build &&
cd    build &&

meson setup ..             \
      --prefix=/usr        \
      --sysconfdir=/etc    \
      --localstatedir=/var \
      --buildtype=release  \
      -D crypto=openssl    \
      -D runstatedir=/run  &&

ninja

Se os testes foram habilitados, execute ninja test para testar os resultados. Existem testes que exigem uma base de dados ativa quando quaisquer dos ganchos de base de dados forem construídos. Alguns testes possivelmente falhem se o suporte a IPv6 não estiver funcional.

Para instalar a suíte Servidor DHCP Kea do ISC, emita os seguintes comandos como o(a) usuário(a) root:

ninja install

Corrija alguns caminhos rigidamente codificados no conjunto de comandos sequenciais keactrl e no arquivo de configuração dele:

sed -e "s:\${prefix}/::" -i /usr/sbin/keactrl             &&
sed -e "s:\${prefix}//etc:/etc:" -i /etc/kea/keactrl.conf

Crie alguns diretórios e corrija as configurações de permissão deles como o(a) usuário(a) root:

install -dm0750 /var/lib/kea
install -dm0750 /var/log/kea

Explicações do Comando

-D crypto=openssl: Permite usar OpenSSL para comunicação com o agente de controle e para atualizações de DNS. Use -D crypto=botan se você quiser usar a Botan. O provedor padrão é OpenSSL.

-D postgresql=enabled ou -D mysql=enabled: O ISC Kea pode armazenar as concessões dentro de uma base de dados. Isso pode ser útil em ambientes grandes que executam um cluster de servidores DHCP. Usar a estrutura de retaguarda memfile (que é um arquivo CSV armazenado localmente) é possível e esse método é o que a configuração padrão apresentada aqui usa.

-D tests=enabled: Essa opção é exigida para construir a suíte de teste. Usar essa opção faz com que o tamanho da construção aumente significativamente, de forma que ela deveria ser habilitada somente se você for executar a suíte de teste.

-D krb5=enabled: Essa chave permite integração com Kerberos para autenticação de computadores clientes em um ambiente corporativo.

Configurando o Servidor DHCP Kea do ISC

O suporte de IPv4, IPv6 e DDNS foi dividido em servidores separados que executam independentemente um do outro. Cada um deles tem o próprio arquivo dele de configuração.

Observe que o Agente de Controle Kea está obsoleto desde a versão 3.0.0. Não confunda kea-ctrl-agent com keactrl.

Consulte-se o Manual de Referência do(a) Administrador(a) do Kea para informações detalhadas acerca da configuração do Kea do ISC, pois ele é um sistema bastante capaz. A configuração mostrada abaixo é o mínimo para colocar um servidor DHCP em execução, mas já inclui configuração para DDNS (Dynamic DNS). Essa configuração é melhor para redes pequenas de intercomunicação com poucos clientes e baixas quantidades de tráfego da rede de intercomunicação. Para instalações maiores com milhares de clientes, o Kea do ISC pode ser configurado para usar bases de dados (tais como mariadb ou postgresql) para armazenar as concessões e construir um cluster com múltiplos nós. Ele pode ser integrado com o Stork do ISC, que é um painel de gerenciamento para o Kea do ISC.

Se você quiser iniciar o Servidor DHCP na inicialização, instale a unidade kea-dhcpd.service incluída no pacote blfs-systemd-units-20251204:

make install-kea-dhcpd

Arquivos de Configuração

/etc/kea/kea-ctrl-agent.conf, /etc/kea/kea-dhcp4.conf, /etc/kea/kea-dhcp6.conf e /etc/kea/kea-dhcp-ddns.conf

Configuração do Kea Usando Unidades do Systemd

Quatro unidades de serviço são usadas para iniciar vários processos de segundo plano fornecidos pelo Kea:

  • Agente de Controle

    O Agente de Controle é um processo de segundo plano que permite (re)configuração do serviço DHCP do Kea via API do REST. Execute systemctl enable kea-ctrl-agent se esse processo de segundo plano for necessário.

  • Servidor DHCP de IPv4

    Esse processo de segundo plano lida com solicitações de endereços IPv4. Execute systemctl enable kea-dhcp4-server para tê-lo iniciado pelo systemd.

  • Servidor DHCP de IPv6

    Esse processo de segundo plano lida com solicitações de endereços IPv6. Execute systemctl enable kea-dhcp6-server para tê-lo iniciado pelo systemd.

  • DNS Dinâmico

    Esse processo de segundo plano é usado para atualizar um servidor DNS dinamicamente quando Kea atribui um endereço IP para um dispositivo. Execute systemctl enable kea-ddns-server para tê-lo iniciado pelo systemd.

O serviço Netconf não é instalado porque as dependências exigidas não são instaladas pelo BLFS, e configurá-lo corretamente é complicado.

Configuração do Agente de Controle

A configuração fornecida poderia ser usada sem mudanças. No entanto, no BLFS, objetos como soquetes são armazenados em /run em vez de em /tmp.

cat > /etc/kea/kea-ctrl-agent.conf << "EOF"
// Begin /etc/kea/kea-ctrl-agent.conf
{
  // This is a basic configuration for the Kea Control Agent.
  // The RESTful interface will be available at http://127.0.0.1:8000/
  "Control-agent": {
    "http-host": "127.0.0.1",
    "http-port": 8000,
    "control-sockets": {
      "dhcp4": {
        "socket-type": "unix",
        "socket-name": "/run/kea/kea4-ctrl-socket"
      },
      "dhcp6": {
        "socket-type": "unix",
        "socket-name": "/run/kea/kea6-ctrl-socket"
      },
      "d2": {
        "socket-type": "unix",
        "socket-name": "/run/kea/kea-ddns-ctrl-socket"
      }
    },

    "loggers": [
      {
        "name": "kea-ctrl-agent",
        "output_options": [
          {
            "output": "/var/log/kea/kea-ctrl-agent.log",
            "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
          }
        ],
        "severity": "INFO",
        "debuglevel": 0
      }
    ]
  }
}
// End /etc/kea/kea-ctrl-agent.conf
EOF

Configuração do Servidor DHCP de IPv4

Um arquivo de configuração de amostra é criado em /etc/kea/kea-dhcp4.conf. Ajuste o arquivo para atender às tuas necessidades ou sobrescreva-o executando o seguinte comando como o(a) usuário(a) root (você precisará editar esse arquivo de qualquer maneira: pelo menos o campo interfaces, o campo ddns-qualifying-suffix e quase todos os campos em Subnet4):

cat > /etc/kea/kea-dhcp4.conf << "EOF"
// Begin /etc/kea/kea-dhcp4.conf
{
  "Dhcp4": {
    // Add names of your network interfaces to listen on.
    "interfaces-config": {
      "interfaces": [ "eth0", "eth2" ]
    },

    "control-socket": {
      "socket-type": "unix",
      "socket-name": "/run/kea/kea4-ctrl-socket"
    },

    "lease-database": {
      "type": "memfile",
      "lfc-interval": 3600,
      "name": "/var/lib/kea/kea-leases4.csv"
    },

    "expired-leases-processing": {
      "reclaim-timer-wait-time": 10,
      "flush-reclaimed-timer-wait-time": 25,
      "hold-reclaimed-time": 3600,
      "max-reclaim-leases": 100,
      "max-reclaim-time": 250,
      "unwarned-reclaim-cycles": 5
    },

    "renew-timer": 900,
    "rebind-timer": 1800,
    "valid-lifetime": 3600,

    // Enable DDNS - Kea will dynamically update the BIND DNS server
    "ddns-send-updates" : true,
    "ddns-qualifying-suffix": "your.domain.tld",
    "dhcp-ddns" : {
      "enable-updates": true
    },

    "subnet4": [
      {
        "id": 1001,   // Each subnet requires a unique numeric id
        "subnet": "192.168.56.0/24",
        "pools": [ { "pool": "192.168.56.16 - 192.168.56.254" } ],
        "option-data": [
          {
            "name": "domain-name",
            "data": "your.domain.tld"
          },
          {
            "name": "domain-name-servers",
            "data": "192.168.56.2, 192.168.3.7"
          },
          {
            "name": "domain-search",
            "data": "your.domain.tld"
          },
          {
            "name": "routers",
            "data": "192.168.56.2"
          }
        ]
      }
    ],

    "loggers": [
      {
        "name": "kea-dhcp4",
        "output_options": [
          {
            "output": "/var/log/kea/kea-dhcp4.log",
            "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
          }
        ],
        "severity": "INFO",
        "debuglevel": 0
      }
    ]
  }
}
// End /etc/kea/kea-dhcp4.conf
EOF

Configuração do Servidor DHCP de IPv6

A configuração para IPv6 é semelhante à configuração do IPv4. O arquivo de configuração é /etc/kea/kea-dhcp6.conf.

Configuração do DNS Dinâmico

Se existir um servidor BIND-9.20.19 executando, o Kea do ISC poderá atualizar os registros de DNS quando fornecer um endereço IP para um cliente. Um arquivo de configuração de amostra é criado em /etc/kea/kea-dhcp-ddns.conf. Ajuste o arquivo para atender às tuas necessidades ou sobrescreva-o executando o seguinte comando como o(a) usuário(a) root:

cat > /etc/kea/kea-dhcp-ddns.conf << "EOF"
// Begin /etc/kea/kea-dhcp-ddns.conf
{
  "DhcpDdns": {
    "ip-address": "127.0.0.1",
    "port": 53001,
    "control-socket": {
      "socket-type": "unix",
      "socket-name": "/run/kea/kea-ddns-ctrl-socket"
    },

    "tsig-keys": [
      {
        "name"      : "rndc-key",
        "algorithm" : "hmac-sha256",
        "secret"    : "1FU5hD7faYaajQCjSdA54JkTPQxbbPrRnzOKqHcD9cM="
      }
    ],

    "forward-ddns" : {
      "ddns-domains" : [
        {
          "name" : "your.domain.tld.",
          "key-name": "rndc-key",
          "dns-servers" : [
            {
              "ip-address" : "127.0.0.1",
              "port" : 53
            }
          ]
        }
      ]
    },

    "reverse-ddns" : {
      "ddns-domains" : [
        {
          "name" : "56.168.192.in-addr.arpa.",
          "key-name": "rndc-key",
          "dns-servers" : [
            {
              "ip-address" : "127.0.0.1",
              "port" : 53
            }
          ]
        }
      ]
    },

    "loggers": [
      {
        "name": "kea-dhcp-ddns",
        "output_options": [
          {
            "output": "/var/log/kea/kea-ddns.log",
            "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
          }
        ],
        "severity": "INFO",
        "debuglevel": 0
      }
    ]
  }
}
// End /etc/kea/kea-dhcp-ddns.conf
EOF
[Nota]

Nota

O valor de secret é apenas um exemplo. Gere a chave para tua instalação usando o comando rndc-confgen -a ou o comando tsig-keygen, ambos fornecidos por BIND-9.20.19.

Nessa configuração de exemplo, é presumido que o servidor DNS executa na mesma máquina que o Kea (acessível via 127.0.0.1) e que essa máquina tenha o IP 192.168.56.2.

Conteúdo

Aplicativos Instalados: keactrl, kea-admin, kea-ctrl-agent, kea-dhcp4, kea-dhcp6, kea-dhcp-ddns, kea-lfc, kea-msg-compiler e kea-shell
Bibliotecas Instaladas: libkea-asiodns.so, libkea-asiolink.so, libkea-cc.so, libkea-cfgrpt.so, libkea-config.so, libkea-cryptolink.so, libkea-d2srv.so, libkea-database.so, libkea-dhcp_ddns.so, libkea-dhcp.so, libkea-dhcpsrv.so, libkea-dns.so, libkea-eval.so, libkea-exceptions.so, libkea-hooks.so, libkea-http.so, libkea-log.so, libkea-log-interprocess.so, libkea-mysql.so, libkea-pgsql.so, libkea-process.so, libkea-stats.so, libkea-tcp.so, libkea-util.so e libkea-util-io.so
Diretórios Instalados: /etc/kea, /run/kea, /usr/include/kea, /usr/lib/kea, /usr/lib/python3.14/site-packages/kea, /usr/share/kea, /usr/share/doc/kea-3.0.2, /var/lib/kea e /var/log/kea

Descrições Curtas

keactrl

é uma ferramenta para controlar (iniciar/parar) os processos do servidor

kea-admin

é um conjunto de comandos sequenciais de shell que realiza manutenção de base de dados do DHCP

kea-ctrl-agent

é um processo de segundo plano que expõe uma interface de controle RESTful para gerenciar servidores Kea

kea-dhcp4

é o processo de segundo plano do servidor do DHCP que fornece endereços IPv4

kea-dhcp6

é o processo de segundo plano do servidor do DHCP que fornece endereços IPv6

kea-dhcp-ddns

é o processo de segundo plano do servidor do DHCP que realiza atualizações dinâmicas de DNS

kea-lfc

O processo de serviço que remove informações redundantes dos arquivos usados para fornecer armazenamento persistente para a estrutura de retaguarda de base de dados memfile. Ele é executado pelo servidor DHCP do Kea

keashell

é um cliente RESTful para os serviços do DHCP do Kea do ISC