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
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
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
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.