Servidor DHCP Kea 2.4.1

Introdução ao Servidor DHCP Kea do ISC

O pacote ISC Kea contém os aplicativos de servidor para DHCP. É o sucessor do antigo servidor DHCP do ISC, que está em fim de vida desde dezembro de 2022.

Esse pacote é conhecido por construir e funcionar corretamente usando uma plataforma LFS 12.1.

Informação do Pacote

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

  • Transferência (FTP):

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

  • Tamanho da transferência: 10 MB

  • Espaço em disco estimado exigido: 1,5 GB (332 MB instalado; adicionar 4 GB para testes)

  • Tempo de construção estimado: 4,1 UPC (com paralelismo=4; adicionar 12 UPC para testes)

Dependências do Kea

Exigidas

Boost-1.84.0 e log4cplus-2.1.1

Opcionais

MIT Kerberos V5-1.21.2, Valgrind-3.22.0; para documentação: Doxygen-1.10.0, Graphviz-10.0.1 e sphinx_rtd_theme-2.0.0; para testes: GoogleTest

Estruturas opcionais de retaguarda de base de dados

MariaDB-10.11.7 ou MySQL e PostgreSQL-16.2

Configuração do Núcleo

Você precisa ter suporte a Packet Socket. Suporte a IPv6 é opcional.

[*] 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, corrija a detecção do Python-3.12 pelo sistema de construção:

sed -e 's/:3/:4/' \
    -i configure

Remova uma etapa de instalação que usa um módulo obsoleto do Python:

sed -e '/dlist="/d' \
    -i src/bin/shell/Makefile.in

Instale o Servidor DHCP Kea do ISC executando os seguintes comandos:

./configure --prefix=/usr        \
            --sysconfdir=/etc    \
            --localstatedir=/var \
            --enable-shell       \
            --with-openssl       \
            --disable-static     \
            --docdir=/usr/share/doc/kea-2.4.1 &&
make

Para testar os resultados, você precisa ter instalado o GoogleTest e mantido o fonte dele. Você também deveria ter passado --with-gtest-source=/caminho/para/diretório_fonte/googletest para configure acima. Execute os testes com make check. Três testes na suíte TLSTest são conhecidos por falharem.

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

make -j1 install

Explicações do Comando

--enable-shell: Permite construir kea-shell, uma interface de linha de comando para o agente de controle.

--with-openssl: Permite usar OpenSSL para comunicação com o agente de controle e para atualizações de DNS.

--disable-static: Essa chave impede a instalação das versões estáticas das bibliotecas.

--with-pgsql ou --with-mysql: Kea do ISC consegue armazenar as concessões em uma base de dados. Isso pode ser útil em ambientes grandes executando um cluster de servidores DHCP. Usar a estrutura de retaguarda memfile (que é um arquivo CSV armazenado localmente) é possível de qualquer maneira.

--enable-generate-docs: Se a documentação for para ser reconstruída, adicione essa opção. Diversas dependências precisam estar instaladas para gerar a documentação.

make -j1 install: O ISC não recomenda nenhuma forma de paralelismo ou opções de tarefa de servidor ao fazer a instalação.

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. Arquivos adicionais de configuração vem oriundos do agente keactrl, que é usado para controlar os servidores de maneira fácil.

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 poderia estar funcionando para redes de intercomunicação pequenas com poucos clientes e baixo tráfego. Para instalações maiores com milhares de clientes, o Kea do ISC pode ser configurado para usar bases de dados (mariadb ou postgresql) para armazenar as concessões e construir um cluster com múltiplos nós. Ele pode ser integrado ao Stork do ISC, que é um painel de gerenciamento para o Kea do ISC.

Se você quiser iniciar o Servidor DHCP na inicialização, instale o conjunto de comandos sequenciais de inicialização /etc/rc.d/init.d/kea-dhcpd incluído no pacote blfs-bootscripts-20240209 :

make install-kea-dhcpd

Arquivos de Configuração

/etc/kea/keactrl.conf, /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 Controle do Kea

keactrl é usado para controlar os servidores independentes (IPv4, IPv6, DDNS). O arquivo de configuração dele, /etc/kea/keactrl.conf, é instalado por padrão e inclui muitas configurações de caminho que são definidas devido ao configure ao tempo da construção. Também inclui configurações para especificar qual dos servidores deveria ser iniciado.

  • Agente de Controle

    O Agente de Controle é um processo de segundo plano que permite a (re)configuração do serviço DHCP do Kea via API REST. Configure ctrl_agent=yes para iniciar o agente de controle (serviço que fornece uma API REST); configure ctrl_agent=no caso o agente de controle não seja necessário.

  • Servidor DHCP de IPv4

    Esse processo de segundo plano lida com solicitações de endereços IPv4. Configure dhcp4=yes para iniciá-lo; configure dhcp4=no caso o serviço DHCP para IPv4 não seja desejado.

  • Servidor DHCP de IPv6

    Esse processo de segundo plano lida com solicitações de endereços IPv6. Configure dhcp6=yes para iniciá-lo; configure dhcp6=no caso o serviço DHCP para IPv6 não seja desejado.

  • DNS Dinâmico

    Esse processo de segundo plano é usado para atualizar um servidor DNS dinamicamente quando Kea atribui um endereço IP a um dispositivo. Configure dhcp_ddns=yes para habilitá-lo; configure dhcp_ddns=no caso as atualizações dinâmicas de DNS não sejam desejadas.

O serviço Netconf não é instalado porque as dependências exigidas não são abrangidas pelo atual livro do BLFS. .

Com o seguinte comando, o Kea será configurado para iniciar o serviço DHCP para IPv4 e a atualização dinâmica do DNS, enquanto o agente de controle e o serviço DHCP para IPv6 permanecerão inativos. Ajuste o comando para atender às tuas necessidades nos serviços iniciados e execute como o(a) usuário(a) root:

sed -e "s/^dhcp4=.*/dhcp4=yes/" \
    -e "s/^dhcp6=.*/dhcp6=no/" \
    -e "s/^dhcp_ddns=.*/dhcp_ddns=yes/" \
    -e "s/^ctrl_agent=.*/ctrl_agent=no/" \
    -i /etc/kea/keactrl.conf

Configuração do Agente de Controle

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

cat > /etc/kea/kea-ctrl-agent.conf << "EOF"
// Inicia /etc/kea/kea-ctrl-agent.conf
{
  // Esta é uma configuração básica para o Agente de Controle do Kea.
  // Interface RESTful para estar disponível em 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/kea4-ctrl-socket"
      },
      "dhcp6": {
        "socket-type": "unix",
        "socket-name": "/run/kea6-ctrl-socket"
      },
      "d2": {
        "socket-type": "unix",
        "socket-name": "/run/kea-ddns-ctrl-socket"
      }
    },

    "loggers": [
      {
        "name": "kea-ctrl-agent",
        "output_options": [
          {
            "output": "/var/log/kea-ctrl-agent.log",
            "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
          }
        ],
        "severity": "INFO",
        "debuglevel": 0
      }
    ]
  }
}
// Termina /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"
// Inicia /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/kea4-ctrl-socket"
    },

    "lease-database": {
      "type": "memfile",
      "lfc-interval": 3600
    },

    "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 DNS
    "ddns-send-updates" : true,
    "ddns-qualifying-suffix": "your.domain.tld",
    "dhcp-ddns" : {
      "enable-updates": true
    },

    "subnet4": [
      {
        "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-dhcp4.log",
            "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
          }
        ],
        "severity": "INFO",
        "debuglevel": 0
      }
    ]
  }
}
// Termina /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.18.24 executando, o Kea do ISC poderá atualizar o 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"
// Inicia /etc/kea/kea-dhcp-ddns.conf
{
  "DhcpDdns": {
    "ip-address": "127.0.0.1",
    "port": 53001,
    "control-socket": {
      "socket-type": "unix",
      "socket-name": "/run/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-ddns.log",
            "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
          }
        ],
        "severity": "INFO",
        "debuglevel": 0
      }
    ]
  }
}
// Termina /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.18.24.

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-shell
Bibliotecas Instaladas: libkea-asiodns.so, libkea-asiolink.so, libkea-cc.so, libkea-cgfclient.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-process.so, libkea-stats.so, libkea-tcp.so, libkea-util.so e libkea-util-io.so
Diretórios Instalados: /etc/kea, /usr/include/kea, /usr/lib/kea, /usr/lib/python3.12/site-packages/kea, /usr/share/kea, /usr/share/doc/kea-2.4.1 e /var/lib/kea

Descrições Curtas

keactrl

Ferramenta para controlar (iniciar/parar) os processos do servidor.

kea-admin

kea-admin é um conjunto de comandos sequenciais de shell que oferece manutenção de base de dados.

kea-ctrl-agent

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 que fornece endereços IPv4.

kea-dhcp6

O processo de segundo plano do servidor que fornece endereços IPv6.

kea-dhcp-ddns

O processo de segundo plano do servidor que realiza as atualizações dinâmicas de DNS.

kea-lfc

O processo de serviço kea-lfc 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

Cliente RESTful para os serviços do Kea do ISC.