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
"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."