2.6. Configuraciones adicionales¶
En determinadas situaciones (empresas más grandes, con mayores requisitos de funcionamiento…) la funcionalidad de DHCP puede ampliarse con dos configuraciones muy interesantes:
DHCP Relay
Kea High Availability (DHCP Failover)
Puedes encontrar mucha información en la web sobre estos dos conceptos, a continuación tienes una pequeña introducción a cada uno de ellos y enlaces a documentación adicionan en https://jorani.us/posts/advanced-isc-kea-dhcpv4-server-installation-configuration-optimization-and-administration/
2.6.1. DHCP Relay¶
Un servidor DHCP relay con Kea permite que los clientes en diferentes redes reciban direcciones IP desde un servidor DHCP central. El relay (agente de retransmisión) recibe los mensajes DHCP de los clientes y los reenvía al servidor Kea, que puede estar en otra subred.
Pasos básicos:
- Configura el relay DHCP en el router o servidor intermedio. En Linux, puedes usar comandos como:
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 67 -j DNAT --to-destination <IP_DEL_SERVIDOR_KEA>:67 iptables -t nat -A PREROUTING -i eth2 -p udp --dport 67 -j DNAT --to-destination <IP_DEL_SERVIDOR_KEA>:67
- También puedes usar dhcrelay si está disponible:
dhcrelay -i eth1 -i eth2 <IP_DEL_SERVIDOR_KEA>
Esto reenvía las solicitudes DHCP de las interfaces eth1 y eth2 al servidor Kea.
Configura Kea normalmente. No necesitas cambiar nada especial en la configuración de Kea para soportar relay; Kea detecta automáticamente los paquetes reenviados.
Verifica las concesiones: En el archivo de leases de Kea (/var/lib/kea/dhcp4.leases), verás la IP del relay en el tercer campo de cada línea.
Resumen: El relay recibe las peticiones de los clientes y las envía al servidor Kea, que responde a través del relay. Así puedes gestionar DHCP en redes separadas desde un único servidor central.
2.6.2. KEA High Availability¶
Kea DHCP ofrece alta disponibilidad (HA) mediante el uso del «HA hook» (módulo de alta disponibilidad). Este módulo permite que dos servidores Kea trabajen en modo activo-pasivo (hot-standby) o balanceo de carga (load-balancing), sincronizando concesiones y asegurando continuidad del servicio.
Pasos básicos para configurar HA en Kea:
Instala Kea en ambos servidores.
Instala el módulo HA: Debes tener el hook(así es como se llama en KEA los módulos que añaden funcionalidad adicional) de alta disponibilidad (libdhcp_ha.so) instalado. En realidad viene instalado si instalaste Kea desde paquetes oficiales. En nuestro caso el paquete kea-dhcp4-server incluye los hooks.
Instala el paquete kea-ctrl-agent en ambos servidores(en las últimas versiones no es obligatorio, pero funciona un poco mejor). Este paquete incluye el servicio que permite la comunicación entre ambos servidores Kea para la sincronización de concesiones.
Configura ambos servidores Kea con archivos de configuración similares, pero con nombres de servidor e IP distintos (server1 y server2).
Ejemplo de configuración en kea-dhcp4.conf y kea-ctrl-agent.conf, tomando como referencia una versión 2.4.1 de kea corriendo en un sistema Debian/Ubuntu. En otros escenarios puede variar la ruta del hook o algún otro parametro:
- Servidor 1 (Primary) - kea-dhcp4.conf
{ "Dhcp4": { "interfaces-config": { "interfaces": ["eth1"] }, "control-socket": { "socket-type": "unix", "socket-name": "/run/kea/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, "hooks-libraries": [ { "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_lease_cmds.so" }, { "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_ha.so", "parameters": { "high-availability": [ { "this-server-name": "server1", "mode": "hot-standby", "heartbeat-delay": 10000, "max-response-delay": 60000, "max-ack-delay": 10000, "max-unacked-clients": 10, "peers": [ { "name": "server1", "url": "http://192.168.6.1:8000/", "role": "primary", "auto-failover": true }, { "name": "server2", "url": "http://192.168.6.2:8000/", "role": "standby", "auto-failover": true } ] } ] } } ], "subnet4": [ { "id": 1, "subnet": "192.168.6.0/24", "pools": [ { "pool": "192.168.6.11 - 192.168.6.60" } ], "option-data": [ { "name": "routers", "data": "192.168.6.1" }, { "name": "domain-name-servers", "data": "192.168.6.1" } ] } ] } }
- Servidor 1 (Primary) - kea-ctrl-agent.conf
{ "Control-agent": { "http-host": "192.168.6.1", "http-port": 8000, "control-sockets": { "dhcp4": { "socket-type": "unix", "socket-name": "/run/kea/kea4-ctrl-socket" } } } }
Servidor 2 (Secondary) - kea-dhcp4.conf
{ "Dhcp4": { "interfaces-config": { "interfaces": ["eth1"] }, "control-socket": { "socket-type": "unix", "socket-name": "/run/kea/kea4-ctrl-socket" }, "lease-database": { "type": "memfile", "lfc-interval": 3600 }, "hooks-libraries": [ { "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_lease_cmds.so" }, { "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_ha.so", "parameters": { "high-availability": [ { "this-server-name": "server2", "mode": "hot-standby", "heartbeat-delay": 10000, "max-response-delay": 60000, "max-ack-delay": 10000, "max-unacked-clients": 10, "peers": [ { "name": "server1", "url": "http://192.168.6.1:8000/", "role": "primary", "auto-failover": true }, { "name": "server2", "url": "http://192.168.6.2:8000/", "role": "standby", "auto-failover": true } ] } ] } } ], "subnet4": [ { "id": 1, "subnet": "192.168.6.0/24", "pools": [ { "pool": "192.168.6.11 - 192.168.6.60" } ], "option-data": [ { "name": "routers", "data": "192.168.6.1" }, { "name": "domain-name-servers", "data": "192.168.6.1" } ] } ] } }
- Servidor 2 (Secondary) - kea-ctrl-agent.conf
{ "Control-agent": { "http-host": "192.168.6.1", "http-port": 8000, "control-sockets": { "dhcp4": { "socket-type": "unix", "socket-name": "/run/kea/kea4-ctrl-socket" } } } }
Después de configurar ambos servidores, inicia los servicios kea-dhcp4 y kea-ctrl-agent en ambos. El servidor primario manejará las solicitudes DHCP, mientras que el secundario permanecerá en espera, listo para asumir el control si el primario falla. Aunque hay varios modos de funcionamiento de HA(https://kb.isc.org/docs/kea-ha-strategies-comparison), el modo hot-standby es el más común. Una salida del log podría mostrar algo como lo siguiente:
vagrant@Servidor1:/var/cache$ sudo journalctl -u kea-ctrl-agent [o cat /var/log/syslog | grep kea-ctrl-agent] Dec 19 15:55:11 Servidor1 systemd[1]: Started kea-ctrl-agent.service - Kea Control Agent. Dec 19 15:55:11 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:55:11.023 INFO [kea-ctrl-agent.dctl/2341.140706753488768] DCTL_STARTING Control-agent starting, pid: 2341, version: 2.2.0 (stable) Dec 19 15:55:11 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:55:11.024 INFO [kea-ctrl-agent.ctrl-agent/2341.140706753488768] CTRL_AGENT_HTTP_SERVICE_STARTED HTTP service bound to address 192.168.6.1:8000 Dec 19 15:55:11 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:55:11.024 INFO [kea-ctrl-agent.dctl/2341.140706753488768] DCTL_CONFIG_COMPLETE server has completed configuration: listening on 192.168.6.1, port 8000, control sockets: dhcp4, 0 lib(s): Dec 19 15:55:11 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:55:11.024 INFO [kea-ctrl-agent.ctrl-agent/2341.140706753488768] CTRL_AGENT_STARTED Kea Control Agent version 2.2.0 started Dec 19 15:56:08 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:08.217 INFO [kea-ctrl-agent.commands/2341.140706753488768] COMMAND_RECEIVED Received command 'ha-heartbeat' Dec 19 15:56:08 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:08.217 INFO [kea-ctrl-agent.ctrl-agent/2341.140706753488768] CTRL_AGENT_COMMAND_RECEIVED command ha-heartbeat received from remote address 192.168.6.2 Dec 19 15:56:08 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:08.217 INFO [kea-ctrl-agent.ctrl-agent/2341.140706753488768] CTRL_AGENT_COMMAND_FORWARDED command ha-heartbeat successfully forwarded to the service dhcp4 from remote address 192.168.6.2 Dec 19 15:56:08 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:08.219 INFO [kea-ctrl-agent.commands/2341.140706753488768] COMMAND_RECEIVED Received command 'dhcp-disable' Dec 19 15:56:08 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:08.219 INFO [kea-ctrl-agent.ctrl-agent/2341.140706753488768] CTRL_AGENT_COMMAND_RECEIVED command dhcp-disable received from remote address 192.168.6.2 Dec 19 15:56:08 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:08.219 INFO [kea-ctrl-agent.ctrl-agent/2341.140706753488768] CTRL_AGENT_COMMAND_FORWARDED command dhcp-disable successfully forwarded to the service dhcp4 from remote address 192.168.6.2 Dec 19 15:56:08 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:08.220 INFO [kea-ctrl-agent.commands/2341.140706753488768] COMMAND_RECEIVED Received command 'lease4-get-page' Dec 19 15:56:08 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:08.220 INFO [kea-ctrl-agent.ctrl-agent/2341.140706753488768] CTRL_AGENT_COMMAND_RECEIVED command lease4-get-page received from remote address 192.168.6.2 Dec 19 15:56:08 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:08.220 INFO [kea-ctrl-agent.ctrl-agent/2341.140706753488768] CTRL_AGENT_COMMAND_FORWARDED command lease4-get-page successfully forwarded to the service dhcp4 from remote address 192.168.6.2 Dec 19 15:56:08 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:08.221 INFO [kea-ctrl-agent.commands/2341.140706753488768] COMMAND_RECEIVED Received command 'ha-sync-complete-notify' Dec 19 15:56:08 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:08.221 INFO [kea-ctrl-agent.ctrl-agent/2341.140706753488768] CTRL_AGENT_COMMAND_RECEIVED command ha-sync-complete-notify received from remote address 192.168.6.2 Dec 19 15:56:08 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:08.221 INFO [kea-ctrl-agent.ctrl-agent/2341.140706753488768] CTRL_AGENT_COMMAND_FORWARDED command ha-sync-complete-notify successfully forwarded to the service dhcp4 from remote address 192.168.6.2 Dec 19 15:56:19 Servidor1 kea-ctrl-agent[2341]: 2025-12-19 15:56:19.796 INFO [kea-ctrl-agent.commands/2341.140706753488768] COMMAND_RECEIVED Received command 'ha-heartbeat'
El protoco DHCP FAILOVER puedes encontrarlo en cualquiera de los sistemas operativos actuales. Si hasta ahora unicámente nos hemos referido a Linux(Ubuntu), su configuración no es muy distinta en Windows.
Windws SRV con GUI: Blog con tutorial paso a paso
PowerShell: Doc. oficial de Microsoft

