¡Esta es una revisión vieja del documento!
Tabla de Contenidos
GNS3
GNS3 es un simulador gráfico de red que permite diseñar topologías de red complejas y poner en marcha simulaciones sobre ellos, permitiendo la combinación de dispositivos tanto reales como virtuales. Alternativa libre y gratuita al Packet Tracer de Cisco.
Las notas aquí recogidas están centradas en la versión para Linux
Para permitir completar simulaciones, GNS3 está estrechamente vinculada con Dynamips, un emulador de IOS que permite a los usuarios ejecutar imágenes de IOS.4
Instalación
Linux
En el caso de Arch Linux:
yay -S gns3-gui gns3-server qemu docker vpcs dynamips libvirt ubridge inetutils
qemu: emula máquinas completas (CPU, disco, NIC, etc.). Esto permite ejecutar imágenes de routers, firewalls y sistemas operativos reales dentro de una topología.docker: Permite usar contenedores Docker como nodos de una topología GNS3. Es útil para levantar Linux, servicios de red, servidores, etc., de forma ligera.vpcsVirtual PC Simulator. Proporciona PCs virtuales muy ligeros para usarlos como hosts finales en tus laboratorios. Consumen apenas 2 MB por instancia y ofrecen soporte básico de redes como establecer una dirección IP y comandos de red comoarp,pingytraceroute.dynamips: emulador de hardware Cisco antiguo, principalmente routers de las familias que utilizaban IOS clásico (7200, 3700, 3600, 2600 y 1700)libvirt: capa de administración de virtualización para Linux. GNS3 puede utilizarla para gestionar máquinas virtuales, normalmente mediante QEMU/KVM.ubridge: utilidad que permite conectar/puentear interfaces de red entre distintos componentes de una topología, por ejemplo interfaces virtuales, TAP, Ethernet, etc.inetutils: colección de herramientas clásicas de red (comoping,telnet,ftp, etc.).
GNS3
│
┌──────────────┼──────────────┐
│ │ │
QEMU Dynamips Docker
│ │ │
VM/router Cisco IOS Contenedor
│
libvirt
│
KVM/QEMU
VPCS ──► PCs virtuales ligeros
uBridge ──► conexiones/puentes de red
inetutils ──► utilidades de red
Dynamips
Dynamips está obsoleto porque emula hardware antiguo basado en MIPS (como los routers Cisco de las series 7200 o 3700). Hoy en día, la industria utiliza la virtualización de imágenes de sistemas operativos reales ejecutados sobre hipervisores (QEMU/KVM).
En lugar de buscar un programa completo alternativo, lo ideal es que dejes de usar Dynamips y cambies el tipo de imágenes que corres dentro de tu propio GNS3:
- Cisco IOSv / IOSvL2 (vIOS): Son imágenes oficiales de Cisco optimizadas para correr de forma virtual mediante QEMU. Consumen muchísima menos memoria RAM y CPU que Dynamips, no requieren configurar Idle-PC y soportan características modernas de routing y switching.
- Cisco IOU / IOL (IOS on Unix / Linux): Son imágenes de IOS compiladas directamente para correr como procesos nativos en Linux. Son extremadamente ligeras y estables.
Terminología
VPCS
VPCS significa Virtual PC Simulator. Es un pequeño programa que simula un ordenador de forma muy sencilla. Proporciona una consola con las funciones de red que necesitas para practicar (establecer direcciones IP y comandos de red como ping, arp y traceroute).
Uso
Topología básica: dos clientes conectados por un switch
Dispositivos:
- VPCS x2
- Switch ethernet
Establecer una dirección IP en un VPCS:
ip <DIRECCION_IP> [<MASCARA_RED>] [<PUERTA_ENLACE>]
También podemos indicar la máscara de subred con notación CIDR: ip 10.1.1.2/24
Para ver la configuración de red actual:
show ip
También vale el atajo sh en lugar de show.
Para guardar las configuraciones de estos dispositivos virtuales:
save
En caso de dispositivos Cisco:
wr
Imágenes de Cisco IOS
Poder añadir routers y switches de Cisco. Es necesario usar QEMU para virtualizar este tipo de dispositivos.
Para obtener imágenes:
En GNS3, añadimos una nueva plantilla (template)
Es importante establecer un valor de “Idle-PC” porque de lo contrario podría utilizar el 100 % de la CPU (revisar este tema para entenderlo y explicarlo mejor).
Contenedores Docker
Para añadir como clientes contenedores Docker. La ventaja de usar los contendores Docker en Linux es que no necesitamos crear máquinas virtuales con QEMU lo que hace que el consumo de RAM y CPU sea mucho menor.
Cuando añadimos un contenedor Docker a nuestra topología, con el botón derecho sobre él podremos configurar la red.
Vamos a Edit → Preferences → Dockery. En Docker containers pulsamos en New y comenzaremos a configurar el contenedor que queramos.
Por ejemplo:
- Imagen:
alpine:latest - Name: Alpine Linux
- Adapters: 1
- Start command:
sh - Console type: telnet
Desde ese momento, lo tendremos disponible en la sección Browse End Devices (donde están los VPCS, Cloud, NAT…).
En el momento en que la arrastremos a nuestro proyecto, GNS3 descargará la imagen.
Una vez arrancado el contenedor, la configuración de red se lee y edita desde él, pero también con el botón derecho sobre el contenedor y eligiendo Edit Config.
La persistencia de los datos debe ser configurada como volúmenes en las plantillas para que sobreviva a reinicios.
Cambiar aspecto de los dispositivos
Cuando lo hemos añadido a un proyecto, podemos pulsar con el botón derecho sobre el dispositivo y elegir Change symbol. Elegimos el diseño que nos guste.
Si queremos aplicarlo a un tipo de dispositivo, podemos modificarlo en la propia plantilla del dispositivo pulsando con el botón derecho y eligiendo Configure template. En el apartado Symbol, elegiremos el que queremos.
Routers CISCO
Ejemplo para la siguiente topología:
---------- -----------
| Router1 | ----------------------- | Router2 |
----------- 1.1.1.1 1.1.1.2 -----------
| |
192.168.1.1 | | 192.168.2.1
| |
| |
----------- -----------
| Switch1 | | Switch2 |
----------- -----------
| |
| |
--------- ----------
| VPCS1 | | VPCS2 |
--------- ----------
192.168.1.2 192.168.2.2
Para la configuración desde su consola.
Entrar en el modo de configuración global:
config t
Elegimos la primera interfaz:
int f0/0
Configuramos:
ip add 1.1.1.1 255.0.0.0 no sh
Vamos con la otra interfaz:
int f0/1 ip add 192.168.1.1 255.255.255.0 no sh
Queda aplicar el protocolo de enrutamiento:
router rip network 1.0.0.0 network 192.168.1.0
En el otro router:
config t int f0/0 ip add 1.1.1.2 255.0.0.0 no sh int f0/1 ip add 192.168.2.1 255.255.255.0 no sh router rip network 1.0.0.0 network 192.168.2.0
Para revisar la configuración de cada router:
sh ip int br
Para comprobar el protocolo de enrutamiento:
sh ip route
