Servidor DHCP y DNS con Windows Server en VirtualBox: laboratorio paso a paso
Monta en VirtualBox una red aislada con Windows Server como DHCP y DNS, un cliente Windows y otro Ubuntu, y mira el DORA por dentro con Wireshark.
En esta guía
En esta guía vas a montar una pequeña red de empresa dentro de tu ordenador: un Windows Server que da IP a los equipos por DHCP y resuelve nombres con su propio DNS, un cliente Windows y un cliente Linux. Todo en VirtualBox, en una red aislada que no toca la de tu casa.
Es uno de los mejores laboratorios para entender de verdad qué pasa cuando un equipo se conecta a una red y “le llega internet”, y además es una práctica típica de ASIR y SMR.
Cómo funciona
Cuando un equipo se conecta a una red sin IP fija, habla con el servidor DHCP en cuatro pasos, que se resumen como DORA:
- Discover: el cliente aún no tiene IP y grita por broadcast “¿hay algún servidor DHCP?”.
- Offer: el servidor le ofrece una IP, junto con la máscara, la puerta de enlace, los DNS y el dominio.
- Request: el cliente acepta esa oferta y la pide formalmente.
- ACK: el servidor confirma, y la IP queda prestada durante un tiempo (la concesión).
El DNS, por su parte, traduce nombres a IPs. En este laboratorio usarás tres tipos de registro:
- A: nombre → IP (
servidor.homelab.local→192.168.100.10). - CNAME: un alias de otro nombre (
dns.homelab.local→servidor.homelab.local). - PTR: la búsqueda al revés, IP → nombre. Vive en la zona inversa.
Qué necesitas
- Un PC con 16 GB de RAM (con 8 GB funciona, pero justo) y unos 140 GB libres.
- VirtualBox 7.
- Tres ISO:
- Windows Server 2025 o 2022: la versión de evaluación de 180 días es gratuita en el Microsoft Evaluation Center.
- Windows 11.
- Ubuntu Server 24.04 LTS.
El esquema de red
| Equipo | Función | IP |
|---|---|---|
| Adaptador host-only de tu PC | Puerta de enlace de la red | 192.168.100.1 |
Windows Server SERVIDOR | DNS + DHCP | 192.168.100.10 (fija) |
| Cliente Windows | Cliente | por DHCP (192.168.100.100-200) |
| Cliente Ubuntu | Cliente | por DHCP (192.168.100.100-200) |
El servidor lleva dos tarjetas de red: una en NAT, para que tenga internet, y otra en la red host-only, que es donde reparte las IPs. Los clientes solo van a la host-only, así que no tendrán internet una vez configurados: es una red aislada a propósito.
Cuidado
La red del laboratorio no puede coincidir con la red real de tu casa. Si tu router te da IPs 192.168.100.x, elige otra, por ejemplo 192.168.150.0/24. Si las dos redes se solapan, tu PC tendrá dos tarjetas en la misma red y se quedará sin internet.Consejo
Las capturas de esta guía son de mi práctica de clase, en la que usé la red10.14.0.0/16, el servidor en 10.14.0.10, la puerta de enlace 10.14.0.2 y el dominio calvo.local. Es exactamente el mismo montaje con otras direcciones: en tu laboratorio verás 192.168.100.x y homelab.local si sigues la guía tal cual.Paso 1: crea la red host-only
- En VirtualBox, ve a Archivo → Herramientas → Gestor de red → Redes solo-anfitrión → Crear.
- En Adaptador, marca Configurar adaptador manualmente, con IP
192.168.100.1y máscara255.255.255.0. - En la pestaña Servidor DHCP, desmarca “Habilitar servidor”. El DHCP lo va a dar tu Windows Server; si dejas activado el de VirtualBox, los dos se pelean por los clientes.
Paso 2: crea e instala las tres máquinas
| VM | RAM / CPU / disco | Red durante la instalación | Red al final |
|---|---|---|---|
| SERVIDOR | 4 GB / 2 / 50 GB | 1: NAT · 2: host-only | igual |
| Cliente Windows | 4 GB / 2 / 64 GB | 1: NAT | 1: host-only |
| Cliente Ubuntu | 2 GB / 1 / 20 GB | 1: NAT | 1: host-only |
Algunos detalles que ahorran tiempo:
- Windows Server: elige la edición "(Experiencia de escritorio)". La otra es Server Core, sin ventanas.
- Windows 11: deja activada la instalación desatendida de VirtualBox con un usuario y una contraseña. Así se crea una cuenta local y no te obliga a usar cuenta Microsoft.
- Ubuntu Server: marca “Install OpenSSH server” durante la instalación.
- Instala las Guest Additions en el servidor para poder agrandar la ventana.
Consejo
Instala todo lo que haya que descargar (OpenSSH, paquetes, actualizaciones) mientras los clientes siguen en NAT, y pásalos a host-only al final. Y haz una instantánea de cada VM antes de cada cambio grande.Paso 3: IP fija en el servidor
Abre PowerShell como administrador. Primero mira cómo se llama el adaptador host-only: es el que no tiene una IP 10.0.x.x, que es la del NAT.
Get-NetIPAddress -AddressFamily IPv4 | Format-Table InterfaceAlias, IPAddress
Si se llama distinto de “Ethernet 2”, cámbialo en todos los comandos de esta guía.
New-NetIPAddress -InterfaceAlias "Ethernet 2" -IPAddress 192.168.100.10 -PrefixLength 24
Set-DnsClientServerAddress -InterfaceAlias "Ethernet 2" -ServerAddresses 192.168.100.10
Rename-Computer -NewName "SERVIDOR" -Restart
No pongas puerta de enlace en el adaptador host-only. La salida a internet ya la da el adaptador NAT, y con dos puertas de enlace el servidor se queda sin conexión.
Paso 4: instala los roles DNS y DHCP
Install-WindowsFeature DNS, DHCP -IncludeManagementTools
Add-DhcpServerSecurityGroup
Restart-Service DHCPServer
Paso 5: configura el DNS
# Zona directa (nombres -> IP) y zona inversa (IP -> nombres)
Add-DnsServerPrimaryZone -Name "homelab.local" -ZoneFile "homelab.local.dns"
Add-DnsServerPrimaryZone -NetworkId "192.168.100.0/24" -ZoneFile "100.168.192.in-addr.arpa.dns"
# Registros A con su PTR
Add-DnsServerResourceRecordA -ZoneName "homelab.local" -Name "servidor" -IPv4Address 192.168.100.10 -CreatePtr
Add-DnsServerResourceRecordA -ZoneName "homelab.local" -Name "gateway" -IPv4Address 192.168.100.1 -CreatePtr
# Alias
Add-DnsServerResourceRecordCName -ZoneName "homelab.local" -Name "dns" -HostNameAlias "servidor.homelab.local"
Add-DnsServerResourceRecordCName -ZoneName "homelab.local" -Name "dhcp" -HostNameAlias "servidor.homelab.local"
# Para que el servidor resuelva también nombres de internet
Add-DnsServerForwarder -IPAddress 1.1.1.1
Cuidado
Si te olvidas de la zona inversa,nslookup por IP te dirá “Non-existent domain”. Es el fallo más típico de este laboratorio.Paso 6: configura el DHCP
Add-DhcpServerv4Scope -Name "Homelab" -StartRange 192.168.100.100 -EndRange 192.168.100.200 `
-SubnetMask 255.255.255.0 -LeaseDuration 0.12:00:00 -State Active
Set-DhcpServerv4OptionValue -ScopeId 192.168.100.0 -Router 192.168.100.1 `
-DnsServer 192.168.100.10 -DnsDomain "homelab.local"
Set-DhcpServerv4Binding -InterfaceAlias "Ethernet 2" -BindingState $true
Restart-Service DHCPServer
Con esto, cada cliente recibe una IP entre la .100 y la .200, la puerta de enlace .1, tu servidor como DNS y el dominio homelab.local, con una concesión de 12 horas.
Paso 7: el cliente Windows
Con el adaptador todavía en NAT, abre PowerShell como administrador e instala el servidor SSH:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
Apaga la VM, cambia el Adaptador 1 a solo-anfitrión y arranca. En cmd:
ipconfig /release
ipconfig /renew
ipconfig /all
nslookup 192.168.100.1
Tiene que salir una IP 192.168.100.1xx, el servidor DHCP .10, el sufijo homelab.local, y nslookup debe responder gateway.homelab.local.
Paso 8: el cliente Ubuntu
Con el adaptador en NAT:
sudo apt update && sudo apt install -y openssh-server bind9-host
sudo systemctl enable --now ssh
Pásalo a solo-anfitrión, mira el nombre de la interfaz con ip a (suele ser enp0s3) y edita netplan:
sudo nano /etc/netplan/50-cloud-init.yaml
network:
version: 2
ethernets:
enp0s3:
dhcp4: true
sudo netplan apply
netplan status enp0s3
host 192.168.100.10
host debe responder servidor.homelab.local. En YAML los espacios importan: usa 2 por nivel y nunca tabuladores.
Paso 9: comprueba que todo funciona
En el servidor, mira quién ha cogido IP:
Get-DhcpServerv4Lease -ScopeId 192.168.100.0
Así quedó mi laboratorio, con todo funcionando a la vez:

ipconfig y nslookup) y el cliente Ubuntu (netplan status y host). Abajo, el Administrador de DNS con la zona y sus registros, y la consola DHCP con las dos concesiones. Cada color une un dato del servidor con lo que recibe el cliente. Pulsa para ampliar.Y conéctate a los dos clientes por SSH desde el propio servidor. Si ssh no existe, instala el cliente y abre una ventana nueva de PowerShell:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
ssh usuario@192.168.100.100
Consejo
Para SSH a un Windows, el usuario es el de la cuenta local (lo ves conwhoami), no el nombre del equipo. Y la cuenta tiene que tener contraseña.Paso 10: mira el DHCP por dentro con Wireshark
Abre Wireshark en tu PC, elige el adaptador VirtualBox Host-Only y filtra por dhcp. Luego haz ipconfig /release y ipconfig /renew en el cliente Windows, y reinicia el Ubuntu.
Verás los cuatro paquetes del DORA de cada cliente. Abre el Offer o el ACK y despliega las opciones: ahí está todo lo que configuraste en el paso 6, con la máscara, el router, el DNS, el dominio y las 12 horas de concesión.
Consejo
Curiosidad: Si un cliente ya tenía concesión y solo renueva, verás únicamente Request + ACK. Para ver el DORA completo hay que reiniciar el cliente o liberar la IP primero.Esto es lo que capturé yo:

Fíjate en que, en mi captura, el Offer y el ACK salen del servidor hacia 255.255.255.255: como el cliente todavía no tiene una IP configurada, el servidor le responde por broadcast.
Problemas típicos
| Síntoma | Solución |
|---|---|
| El cliente coge una IP 169.254.x.x | No le llega el DHCP. Comprueba que está en la misma red host-only, que el ámbito está activo y que el DHCP de VirtualBox está desactivado. |
| El cliente coge una IP 192.168.56.x | Está respondiendo el DHCP de VirtualBox. Desactívalo y renueva la IP. |
nslookup por IP falla | Falta la zona inversa o el registro PTR. |
ssh no se reconoce | Instala el cliente OpenSSH y abre una ventana nueva de PowerShell. |
| Tu PC se queda sin internet | La red host-only coincide con la de tu casa. Cámbiala. |
Y la parte de seguridad
- La red host-only está aislada de tu red real, así que puedes romper lo que quieras sin afectar a nadie. Es justo lo que tiene que ser un laboratorio.
- Un DHCP “pirata” es un ataque real. Si alguien conecta un servidor DHCP falso a una red, puede darles a los equipos una puerta de enlace o un DNS suyos y ver o desviar su tráfico. Por eso los switches de empresa tienen DHCP snooping, que solo deja responder al DHCP autorizado.
- El dominio
.localestá reservado para mDNS (Bonjour, Avahi). Para un laboratorio vale, pero en una red real usa un subdominio de un dominio tuyo ohome.arpa.
Siguiente paso
Si tienes un servidor con Proxmox, puedes mover este laboratorio allí y dejarlo encendido siempre: tienes cómo empezar en la guía de Proxmox: cómo crear tu primera máquina virtual y tu primer contenedor. Y si te ha gustado la parte del DNS, el siguiente proyecto natural es Pi-hole para bloquear la publicidad en toda tu casa.