====== 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'