Saltar a contenido

08 · DHCP: IPs Automáticas y Dinámicas

Configurar IPs manualmente es tedioso y propenso a errores humanos. En este laboratorio aprenderás a automatizar el proceso con un servidor DHCP (Dynamic Host Configuration Protocol).

🏗️ Topología del Laboratorio

Copia y pega este YAML en Topología → Importar:

name: "lab-06-dhcp"
nodes:
  - name: Server-DHCP
    type: HOST
    x: 300
    y: 100
  - name: Cliente-1
    type: HOST
    x: 100
    y: 300
  - name: Cliente-2
    type: HOST
    x: 500
    y: 300
  - name: SWITCH-1
    type: SWITCH
    x: 300
    y: 200
links:
  - source: Server-DHCP
    target: SWITCH-1
  - source: Cliente-1
    target: SWITCH-1
  - source: Cliente-2
    target: SWITCH-1

🛠️ Paso 1: Preparando el Servidor

El servidor DHCP necesita tener una IP estática propia para poder responder.

En Server-DHCP (Terminal):

ip addr add 192.168.1.1/24 dev eth1
ip link set eth1 up

🚀 Paso 2: Lanzando el Servidor DHCP

Usaremos dnsmasq, un servidor ligero que ya viene pre-instalado en los nodos HOST de OpenVeth.

En Server-DHCP (Terminal):

# Rango de IPs + gateway automático (opción DHCP 3)
dnsmasq --no-daemon \
  --dhcp-range=192.168.1.50,192.168.1.150,12h \
  --dhcp-option=3,192.168.1.1 \
  --interface=eth1
Deja esta terminal abierta para ver los logs en tiempo real.

La opción 3 es el código DHCP para "default gateway". DHCP no solo asigna una IP — también le dice al cliente quién es su puerta de enlace, exactamente lo que configurabas a mano en el lab anterior.

⚡ Paso 3: Los Clientes solicitan IP

En Cliente-1 y Cliente-2 (Terminal):

# Asegúrate de que la interfaz esté arriba
ip link set eth1 up

# Solicitar una IP al servidor
udhcpc -i eth1

Verificación: Ejecuta ip addr show eth1 en los clientes. Deberías ver una IP dentro del rango .50 a .150.


❌ Paso 3b: El olvido del gateway

Pará el servidor anterior (Ctrl+C) y levantalo sin la opción 3:

dnsmasq --no-daemon \
  --dhcp-range=192.168.1.50,192.168.1.150,12h \
  --interface=eth1

En los clientes, liberá la IP y pedila de nuevo:

ip addr flush dev eth1
udhcpc -i eth1

El cliente obtiene IP de nuevo. Pero fijate en su tabla de rutas:

ip route show

Antes veías default via 192.168.1.1 dev eth1. Ahora no aparece. DHCP te dio una dirección, pero no te dijo quién es el gateway.

En este lab todos están en la misma red, así que el ping al servidor (192.168.1.1) sigue funcionando. Pero en una red real con router, no podrías salir de tu subred. El síntoma sería: "tengo IP, pero solo veo a mis vecinos".

Regla: DHCP no solo entrega una IP — también entrega parámetros esenciales como el gateway, el DNS y la máscara. Si falta alguno, la red está incompleta.

Restaurá el servidor con la opción 3 antes de seguir:

dnsmasq --no-daemon \
  --dhcp-range=192.168.1.50,192.168.1.150,12h \
  --dhcp-option=3,192.168.1.1 \
  --interface=eth1

🔬 Paso 4: Viendo el diálogo DHCP

Para ver la secuencia completa, primero libera la IP del cliente (si ya tiene una del paso anterior):

# En Cliente-1
ip addr flush dev eth1

Luego hacé clic derecho en el cable que une Cliente-1 con SWITCH-1, seleccioná Sniff Cliente-1, y volvé a pedir IP:

udhcpc -i eth1

Verás la secuencia DORA:

Paso Quién envía Mensaje Destino
1 Cliente Discover Broadcast
2 Servidor Offer Broadcast
3 Cliente Request Broadcast
4 Servidor Ack Broadcast

Todos los mensajes van en broadcast porque al inicio el cliente todavía no tiene IP.


💡 Concepto Clave: El servidor DHCP asigna IPs de forma dinámica, liberando al administrador de red de configurar cada dispositivo manualmente.