8. DHCP (Dynamic Host Configuration Protocol)

El Dynamic Host Configuration Protocol (DHCP) automatiza la entrega de direcciones IP y parámetros esenciales de red. Gracias a él, los administradores pueden desplegar cientos de dispositivos sin configurar manualmente cada uno.

En este tema exploraremos su función, el famoso intercambio DORA, los parámetros incluidos en cada concesión y las diferencias entre DHCPv4 y DHCPv6, junto con herramientas prácticas para diagnosticarlo.

8.1 Función: asignar direcciones IP automáticamente

DHCP reemplazó a BOOTP ofreciendo asignaciones automáticas, temporales y con mayor variedad de opciones. Su misión es garantizar que cada host reciba una dirección única, compatible con la topología vigente, y los datos necesarios para comunicarse fuera de su subred.

Al centralizar la configuración se reducen errores humanos, se detectan conflictos rápidamente y se puede registrar qué dispositivo utilizó cada IP.

8.2 Proceso DORA (Discover, Offer, Request, Acknowledge)

El flujo típico de DHCPv4 se resume en cuatro mensajes:

  1. Discover: el cliente envía un broadcast buscando servidores DHCP disponibles.
  2. Offer: el servidor responde ofreciendo una dirección libre y sus parámetros.
  3. Request: el cliente solicita formalmente la dirección propuesta (o renueva una existente).
  4. Acknowledge: el servidor confirma la concesión y registra el tiempo de arrendamiento.

Si el cliente ya tenía una concesión válida, inicia con Request y el servidor responde con ACK o NAK según corresponda.

8.3 Parámetros entregados

Además de la dirección IP y la máscara, DHCP provee opciones como:

  • Gateway por defecto (opción 3): necesario para salir de la subred.
  • Servidores DNS (opción 6): permiten resolver nombres de dominio.
  • Dominio de búsqueda (opción 15): agrega sufijos automáticos a los nombres cortos.
  • Servidor de tiempo (opción 42): sincroniza relojes mediante NTP.
  • Opciones personalizadas: rutas estáticas (121), VoIP, PXE para arranque por red, entre otras.

La flexibilidad de las opciones evita configuraciones manuales repetitivas en impresoras, teléfonos IP o máquinas virtuales.

8.4 Renovación y liberación (T1, T2)

Cada concesión incluye un tiempo de arrendamiento. De forma predeterminada:

  • T1 (50 %): el cliente intenta renovar con el servidor que le otorgó la IP. Si obtiene ACK, reinicia el temporizador.
  • T2 (87,5 %): si no recibió respuesta en T1, envía un broadcast para que cualquier servidor continúe el proceso.
  • Expiración: si nadie responde antes del 100 %, la dirección vuelve al pool y el cliente debe iniciar un Discover.

Los usuarios pueden forzar la liberación con ipconfig /release y solicitar una nueva IP con ipconfig /renew en Windows.

8.5 Diferencias entre DHCPv4 y DHCPv6

DHCPv6 se diseñó para complementar a SLAAC y ofrece dos modos principales:

Característica DHCPv4 DHCPv6
Identificador del cliente MAC y transacción. DUID (unique identifier) y IAID por interfaz.
Mensajes especiales Discover/Offer/Request/ACK. Solicit, Advertise, Request, Reply, Renew, Rebind, Confirm, Decline.
Integración Sustituye redes manuales. Puede coexistir con SLAAC para DNS (modo stateless) o entregar direcciones completas (stateful).
Relay Agentes de relay en switches/routers. Relay específicos para IPv6 con opción 18 (Interface-ID).

Mientras IPv4 depende casi siempre de DHCP, en IPv6 es común combinarlo con SLAAC para reducir la administración manual.

8.6 Diagnóstico en Windows con PowerShell

Para revisar el estado actual de las concesiones:

Get-NetIPConfiguration |
  Select-Object InterfaceAlias, IPv4Address, IPv4DefaultGateway, DNSServer, DhcpServer

Si hay problemas para renovar:

ipconfig /release
ipconfig /renew

Y para inspeccionar registros históricos en un servidor DHCP de Windows:

Get-DhcpServerv4Lease -ComputerName SRV-DHCP |
  Select-Object IPAddress, ClientId, HostName, LeaseExpiryTime

Estos comandos permiten comprobar quién tiene cada dirección y cuándo caduca su concesión.

8.7 Scripts en Python para analizar archivos DHCP

En entornos mixtos, los logs suelen almacenarse en texto plano. El siguiente script busca mensajes DORA dentro de un registro exportado:

from pathlib import Path

def contar_eventos(ruta_log):
    eventos = {"DISCOVER": 0, "OFFER": 0, "REQUEST": 0, "ACK": 0}
    for linea in Path(ruta_log).read_text(encoding="utf-8").splitlines():
        for evento in eventos:
            if evento in linea.upper():
                eventos[evento] += 1
    return eventos

if __name__ == "__main__":
    estadisticas = contar_eventos("dhcp.log")
    for evento, cantidad in estadisticas.items():
        print(f"{evento}: {cantidad}")

Con este resumen puedes detectar rápidamente si el servidor está respondiendo o si los clientes se quedan esperando algún mensaje específico.

8.8 Conclusión

DHCP es la columna vertebral de la configuración automática de redes IPv4 e IPv6. Dominar su proceso, opciones y herramientas de diagnóstico evita interrupciones masivas y facilita los cambios de direccionamiento.

En el próximo tema profundizaremos en el subneteo, técnica que se apoya en DHCP para distribuir direcciones optimizadas según las necesidades de cada segmento.