VyOS: Configurar un Servidor DHCP con Ejemplos Prácticos
VyOS incluye un servidor DHCP completo basado en ISC DHCP. La configuración vive bajo set service dhcp-server y sigue el mismo modelo jerárquico que el resto del sistema: se edita en modo configuración, se valida con commit y se persiste con save.
Este post parte del escenario definido en VyOS: Primera Configuración y agrega DHCP para la LAN principal y dos VLANs.
Escenario de referencia
1Internet
2 │
3 eth0 (WAN)
4 │
5 [VyOS]
6 │
7 eth1 LAN principal — 192.168.1.1/24
8 eth1.10 VLAN 10 Servidores — 10.10.10.1/24
9 eth1.20 VLAN 20 Usuarios — 10.10.20.1/24
Cada segmento necesita su propio servidor DHCP, porque VyOS actúa como gateway de cada red.
1. DHCP para la LAN principal
El bloque mínimo de configuración requiere:
- Un nombre de shared-network (agrupa subredes bajo un mismo servidor)
- La subred con su máscara
- El rango de IPs a asignar
- El router (gateway que se entrega al cliente)
- El tiempo de lease
1configure
2
3set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 start '192.168.1.100'
4set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 stop '192.168.1.200'
5set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 default-router '192.168.1.1'
6set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 lease '86400'
7
8commit
9save
El lease de 86400 segundos equivale a 24 horas. Para redes de oficina o hogar es un valor razonable; para redes de invitados con alta rotación, algo entre 3600 y 7200 es más adecuado.
Agregar servidores DNS
1set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 name-server '1.1.1.1'
2set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 name-server '8.8.8.8'
3
4commit
5save
Se pueden declarar múltiples name-server. Los clientes los reciben en el orden en que se configuran.
Agregar sufijo de dominio
1set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 domain-name 'corp.local'
2
3commit
4save
Con esto los clientes resuelven nombres cortos (server1) como server1.corp.local.
2. DHCP para las VLANs
Cada VLAN es una subred independiente. Se pueden agrupar bajo el mismo shared-network o en redes separadas. Usar redes separadas por VLAN es más claro y facilita el troubleshooting.
VLAN 10 — Servidores
1set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 range 0 start '10.10.10.10'
2set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 range 0 stop '10.10.10.50'
3set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 default-router '10.10.10.1'
4set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 lease '86400'
5set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 name-server '10.10.10.1'
6set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 domain-name 'srv.corp.local'
7
8commit
9save
El rango 10.10.10.10 – 10.10.10.50 deja el espacio 10.10.10.51 – 10.10.10.254 libre para asignaciones estáticas o equipos configurados a mano.
VLAN 20 — Usuarios
1set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 range 0 start '10.10.20.50'
2set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 range 0 stop '10.10.20.200'
3set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 default-router '10.10.20.1'
4set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 lease '28800'
5set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 name-server '1.1.1.1'
6set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 name-server '8.8.8.8'
7set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 domain-name 'corp.local'
8
9commit
10save
Lease de 28800 (8 horas): apropiado para estaciones de trabajo en jornada laboral.
3. Reservas estáticas (static mappings)
Una reserva vincula una MAC address a una IP fija. El cliente sigue usando DHCP pero siempre recibe la misma dirección. Esto es preferible a configurar la IP directamente en el equipo porque la gestión queda centralizada en el router.
Reserva para un servidor en VLAN 10
1set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 static-mapping srv-nfs mac 'aa:bb:cc:dd:ee:01'
2set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 static-mapping srv-nfs ip-address '10.10.10.100'
3
4commit
5save
El nombre srv-nfs es una etiqueta local; no tiene que coincidir con el hostname del equipo, pero ayuda a identificar la reserva.
Reserva con opciones adicionales
Es posible sobreescribir DNS y gateway por reserva individual. Útil para equipos que deben usar un DNS interno diferente:
1set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 static-mapping srv-dc mac 'aa:bb:cc:dd:ee:02'
2set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 static-mapping srv-dc ip-address '10.10.10.101'
3set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 static-mapping srv-dc name-server '10.10.10.101'
4
5commit
6save
Nota: La IP de una reserva puede estar dentro o fuera del rango dinámico. Fuera del rango es lo más seguro para evitar conflictos si el pool se agota.
4. Opciones DHCP avanzadas
Opciones personalizadas (option 43, 66, 67, etc.)
VyOS permite inyectar opciones DHCP arbitrarias por su número. Por ejemplo, para entregar la IP de un servidor TFTP (opción 66) a teléfonos IP:
1set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 bootfile-server '10.10.10.5'
2set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 bootfile-name 'firmware.bin'
Múltiples rangos en la misma subred
Si se quiere reservar un bloque intermedio (por ejemplo, para impresoras con IP fija entre .50 y .99):
1set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 start '192.168.1.100'
2set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 stop '192.168.1.149'
3set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 1 start '192.168.1.200'
4set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 1 stop '192.168.1.250'
5
6commit
7save
El bloque 192.168.1.150 – 192.168.1.199 queda libre para asignación manual.
5. Verificación y troubleshooting
Ver leases activos
1show dhcp server leases
Muestra IP asignada, MAC, hostname del cliente y tiempo de expiración.
1show dhcp server leases pool VLAN20
Filtra por pool específico.
Ver estadísticas del servidor
1show dhcp server statistics
Útil para detectar pools exhaustos (pool full) antes de que los usuarios reporten problemas.
Ver la configuración actual
1show service dhcp-server
Liberar un lease manualmente
1clear dhcp server lease ip 192.168.1.105
Útil cuando un equipo cambió de MAC y el lease anterior todavía está activo.
Verificar desde el cliente (Linux)
1# Renovar lease
2sudo dhclient -r eth0 && sudo dhclient eth0
3
4# Ver qué IP y opciones se recibieron
5ip addr show eth0
6cat /etc/resolv.conf
Logs del servidor DHCP
1show log dhcp server
O en tiempo real:
1monitor log | match DHCP
6. Ejemplo completo — configuración final
Resumen de todo lo anterior en un bloque limpio para copiar y adaptar:
1configure
2
3# --- LAN principal ---
4set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 start '192.168.1.100'
5set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 stop '192.168.1.200'
6set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 default-router '192.168.1.1'
7set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 name-server '1.1.1.1'
8set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 name-server '8.8.8.8'
9set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 domain-name 'corp.local'
10set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 lease '86400'
11
12# --- VLAN 10 Servidores ---
13set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 range 0 start '10.10.10.10'
14set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 range 0 stop '10.10.10.50'
15set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 default-router '10.10.10.1'
16set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 name-server '10.10.10.1'
17set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 domain-name 'srv.corp.local'
18set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 lease '86400'
19
20# Reservas VLAN 10
21set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 static-mapping srv-nfs mac 'aa:bb:cc:dd:ee:01'
22set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 static-mapping srv-nfs ip-address '10.10.10.100'
23set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 static-mapping srv-dc mac 'aa:bb:cc:dd:ee:02'
24set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 static-mapping srv-dc ip-address '10.10.10.101'
25
26# --- VLAN 20 Usuarios ---
27set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 range 0 start '10.10.20.50'
28set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 range 0 stop '10.10.20.200'
29set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 default-router '10.10.20.1'
30set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 name-server '1.1.1.1'
31set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 name-server '8.8.8.8'
32set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 domain-name 'corp.local'
33set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 lease '28800'
34
35commit
36save
Resumen de comandos útiles
| Tarea | Comando |
|---|---|
| Ver todos los leases | show dhcp server leases |
| Ver leases de un pool | show dhcp server leases pool VLAN10 |
| Ver estadísticas | show dhcp server statistics |
| Ver configuración | show service dhcp-server |
| Liberar lease por IP | clear dhcp server lease ip <IP> |
| Ver logs en tiempo real | monitor log | match DHCP |
Próximos pasos
Con DHCP en funcionamiento, los siguientes pasos naturales son:
- DNS Forwarder local (
set service dns forwarding) para que VyOS resuelva nombres internos y reenvíe el resto - DHCP Relay si tienes switches de capa 3 y los servidores DHCP están en otra subred
- IPv6 con DHCPv6 (
set service dhcpv6-server) o SLAAC para dual-stack