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