Una de las características más potentes de GNS3 es su integración nativa con Docker. Puedes agregar contenedores como nodos en tus topologías de red — un servidor web, un cliente de prueba, un analizador de tráfico — sin necesidad de VMs completas.
¿Por qué Docker en GNS3?
Los PCs genéricos de GNS3 tienen capacidades limitadas. Docker permite agregar nodos con software real y pre-configurado — un servidor Apache, una imagen de Kali Linux ligera, un cliente de prueba con herramientas de red — usando contenedores que arrancan en segundos y consumen poca RAM.
| Nodo | RAM | Tiempo arranque | Uso |
|---|---|---|---|
| PC genérico GNS3 | ~32 MB | Instantáneo | Ping, tráfico básico |
| Docker container | 50-500 MB | 2-5 segundos | Servidor web, cliente, herramientas |
| VM completa | 1-4 GB | 30-120 segundos | OS completo, GUI |
Requisitos
- GNS3 VM (los contenedores Docker deben correr dentro de la VM, no en el host Windows)
- Docker instalado en la GNS3 VM (viene preinstalado en la VM oficial)
Agregar un contenedor Docker en GNS3
En GNS3 GUI:
Edit → Preferences → Docker → Docker containers → New
Campos a completar:
- Image name: alpine:latest (o cualquier imagen de Docker Hub)
- Name: Alpine-Client
- Start command: (dejar vacío usa el CMD del Dockerfile)
- Console type: telnet (para acceder por consola en GNS3)
- Environment variables: (opcional)
Imágenes Docker útiles para laboratorios
Cliente básico de red (Alpine)
Image: alpine:latest
# Una vez en la consola del contenedor en GNS3:
apk add --no-cache curl wget nmap netcat-openbsd bind-tools
# Configurar IP (si no hay DHCP)
ip addr add 192.168.1.10/24 dev eth0
ip route add default via 192.168.1.1
# Pruebas
ping 192.168.1.1
curl http://192.168.1.20
nmap -sn 192.168.1.0/24
Servidor web ligero
Image: nginx:alpine
# Expone automáticamente un servidor HTTP en el puerto 80
# Útil para probar conectividad HTTP a través de la topología
Contenedor de herramientas de red
# Crear una imagen personalizada con todas las herramientas
# Dockerfile:
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y \
iputils-ping \
iproute2 \
curl \
wget \
netcat-openbsd \
nmap \
tcpdump \
iperf3 \
dnsutils \
&& rm -rf /var/lib/apt/lists/*
CMD ["/bin/bash"]
# Construir y usar en GNS3
docker build -t gns3-tools:latest .
# Luego agregar "gns3-tools:latest" como Docker container en GNS3
Laboratorio práctico: probar NAT con Docker
Topología:
[Docker-Cliente] ----[Switch]---- [R1-NAT] ---- [Docker-Servidor]
192.168.1.10/24 192.168.1.1 203.0.113.10/24
! En R1: configurar NAT overload (PAT)
R1(config)# interface GigabitEthernet0/0
R1(config-if)# ip nat inside
R1(config)# interface GigabitEthernet0/1
R1(config-if)# ip nat outside
R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255
R1(config)# ip nat inside source list 1 interface GigabitEthernet0/1 overload
! En Docker-Cliente:
curl http://203.0.113.10 ! debería llegar al Docker-Servidor vía NAT
! En R1: verificar las traducciones NAT
R1# show ip nat translations
💡 Limitación importante: Los contenedores Docker en GNS3 deben correr en la GNS3 VM, no en tu Windows host. Si ves el error "Docker is not supported on this server", asegúrate de que estás usando la GNS3 VM como servidor, no "local computer".
"La combinación de GNS3 + Docker crea laboratorios que se acercan a la realidad de una infraestructura híbrida — routers IOS reales, contenedores de aplicaciones y todo conectado como en producción."