====== gns3 ====== gns3 dynamips cisco redes virtualización Gns3 es un cliente gráfico para la simulación de redes con máquinas (enrutadores e intercambiadores) del fabricante cisco. ===== Instalación ===== Instalo GNS3 para la versión 5.0 (actualmente squeeze) de Debian: aptitude update && aptitude install gns3 En la fecha en la que lo instalo (10/12/2009) el paquete está roto para la versión 'prueba' (squeeze). Al intentar arrancar gns3: (Con cualquier usuario) gns3& Violación de segmento Si vemos el log: dmesg | tail [ 5546.751049] gns3[8529]: segfault at 5 ip 080882e5 sp bfd23930 error 4 in python2.5[8048000+f8000] Buscando por internet encuentro el siguiente informe de error (bug): http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=558680 Descargo manualmente los siguientes paquetes: sip4_4.7.6-1_i386.deb python-sip4_4.7.6-1_i386.deb python-elementtree_1.2.6-14_all.deb python-qt4-common_4.4.2-4_all.deb python-qt4_4.4.2-4_i386.deb De los siguientes sitios: * http://packages.debian.org/squeeze * ftp://ftp.debian.org/debian/pool/main Y los instalo en el mismo orden el que los muestro, por cuestiones de dependencias: dpkg -i sip4_4.7.6-1_i386.deb ... Ahora ya puedo arrancar gns3: **IMPORTANTE**: arrancar como superusuario (root), porque se necesitan esos permisos para poder interactuar más tarde con la interfaz de bucle invertido. gns3& ===== Configuración de la nube ===== El elemento nube sirve para enlazar la red virtual con cualquier interfaz de red real de la máquina donde se ejecuta gns3. Para ello se requiere de una interfaz de bucle invertido (windows) o de un puente (GNU/linux). En GNU/Linux no es posible enlazar directamente un router virtual a nuestra máquina por dos motivos: * Las bibliotecas libpcap y Winpcap son distintas. * Diferencias en las pilas de internet entre GNU/Linux y Windows (p.ej.NDIS) Para más información: http://www.gns3.net/phpBB/topic18.html Para solucinarlo me he basado en el siguiente enlace: http://joshatterbury.com/tutorials/configuring-dynamips-to-use-a-linux-tap-interface/ 1. Crear una interfaz virtual (tap0) y un puente (br0) que enlace dicha interfaz virtual con nuestra interfaz de red (eth3 en mi caso). Para hacer el trabajo más cómodo crearemos un guión para automatizar los pasos: 1.1 Crear el guión nano /usr/local/crear_puente.sh Con el siguiente contenido: #!/bin/bash ############# Variables ############# Tap="tap0" Interfaz="eth3" Ip_puente="192.168.1.30" Puerta_puente="192.168.1.1" Puente="br0" Mascara=24 ############# Comandos ############# # Creamos el puente brctl addbr $Puente # Lo activamos ip l s dev $Puente up # Create la interfaz de red virtual tunctl -t $Tap # La activamos ip l s dev $Tap up # Añadimos al puente la interfaz virtual brctl addif $Puente $Tap # Añadimos al puente la interfaz de red brctl addif $Puente $Interfaz # Eliminamos la ip de la interfaz de red y la ponemos en modo promiscuo ifconfig $Interfaz 0.0.0.0 promisc # Configuramos el puente con la ip y máscara de subred que tenía la interfaz de red ip a a $Ip_puente/$Mascara dev $Puente # Le asignamos la puerta de enlace al puente ip r a default via $Puerta_puente 1.2 Grabamos y salimos 1.3 Lo hacemos ejecutable: chmod +x /usr/local/crear_puente.sh 1.4 Para mayor comodidad creamos un guión para deshacer el puente: nano /usr/local/quitar_puente.sh Con el siguiente contenido: #!/bin/bash Tap="tap0" Interfaz="eth3" Ip_puente="192.168.1.30" Puerta_puente="192.168.1.1" Puente="br0" Mascara=24 ####################################### ifconfig $Puente down brctl delif $Puente $Interfaz brctl delif $Puente $Tap brctl delbr $Puente tunctl -d $Tap ifconfig $Interfaz up ifconfig $Interfaz $Ip_puente/$Mascara route add default gw $Puerta_puente 1.5 Grabamos y salimos 1.6 Lo hacemos ejecutable: chmod +x /usr/local/crear_puente.sh 1.7 Creamos el puente: (Como root) ./usr/local/crear_puente.sh Verificamos: (Como root) ifconfig br0 Link encap:Ethernet HWaddr 00:16:6f:a9:ad:3c inet addr:192.168.1.30 Bcast:0.0.0.0 Mask:255.255.255.0 inet6 addr: fe80::1063:99ff:fef9:170f/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:24 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:4459 (4.3 KiB) eth3 Link encap:Ethernet HWaddr 00:16:6f:a9:ad:3c inet6 addr: fe80::216:6fff:fea9:ad3c/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:50183 errors:1 dropped:1 overruns:0 frame:0 TX packets:42352 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:44744048 (42.6 MiB) TX bytes:16718320 (15.9 MiB) Interrupt:17 Base address:0x6000 Memory:dfcff000-dfcfffff lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2499 errors:0 dropped:0 overruns:0 frame:0 TX packets:2499 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:158552 (154.8 KiB) TX bytes:158552 (154.8 KiB) tap0 Link encap:Ethernet HWaddr 2a:8f:ee:f9:65:33 inet6 addr: fe80::288f:eeff:fef9:6533/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:180 errors:0 dropped:0 overruns:0 frame:0 TX packets:71 errors:0 dropped:16 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:18602 (18.1 KiB) TX bytes:4817 (4.7 KiB) 2. Configurar la nube para que salga por la interfaz tap0. 2.1 Ejecutamos gns3: (Como root) gns3& 2.2 Creamos una nube 2.3 Pulsamos dos veces sobre la nube 2.4 Seleccionamos la solapa 'NIO TAP' 2.5 En la caja de texto justo debajo de 'TAP interface (require root access)' teclear 'tap0' 2.6 Pulsar en el botón 'ADD' 2.7 Pulsar en el botón 'OK'