¿Cómo emular enrutadores de CISCO en el PC?

Spread the love

A principios de éste año leí en TechRepublic un artículo interesantísimo sobre un emulador de IOS, es decir, una aplicación que permite correr nativamente un IOS en un PC de escritorio, nada de simulaciones extrañas y malucas con funcionalidades reducidas! Y durante los últimos días he escuchado a mis compañeros de la academia hablar del «descubrimiento». Pues en ésta entrada les dejo, tanto a ellos como a mis lectores regulares un ejemplo funcional de Dynagen/Dynamips con dos enrutadores conectados por enlaces seriales. Espero que lo encuentren útil y me retroalimenten lo que vayan probando una vez que usen el contenido de esta entrada.

¿Cómo funciona la emulación?

La primera pregunta que se estarán haciendo es ¿qué es lo maravilloso de éste progrma que no tienen los simuldores como eSim, RouterSim o Boson?, bueno, la palabra clave es emulación. Los programas mencionados son simuladores, es decir, son programas que imitan lo que hacen los enrutadores, son básicamente bases de datos de comandos que se traducen en órdenes para el programa que la almacena. Por otro lado, un emulador como Dynamips, es básicamente una máquina virtual, que reserva memoria y ejecuta un sistema operativo sobre esa máquina virtual (el IOS), es decir, es como ejecutar un enrutador en Windows o Linux y en teoría tendríamos todo lo que se podría ejecutar en un enrutador real.

Una cosa técnica que hay que aclarar, es que el programa emulador se llama Dynamips y fue diseñado originalmente para emular plataformas de la serie 7200, eso no es difícil de deducir ya que los archivos de ejemplo parten todos de especificaciones para ésta plataforma y además, los puertos de funcionamiento por defecto son 7200. Dynamips es un servidor de emulación que inicia procesos independientes por cada enrutador configurado y va informando el estado de la emulación. Por ejemplo, si el emulador no encuentra una imagen válida del IOS, es ésta consola la que informa lo sucedido. El otro programa involucrado es Dynagen, que es una especie de consola de administración, responsable de leer e interpretar los archivos de configuración de la emulación, es decir, si se quiere emular una red de tres enrutadores se crea un archivo de configuración (bastante simple por cierto) donde se especifica la configuración física de los enrutadores y las conexiones, éste archivo es luego ejecutado y si todo es exitoso se abre la consola de Dynagen que permite abrir consolas a los enrutadores, iniciarlos, reiniciarlos, subir configuraciones y detenerlos entre otras acciones. Existe un tercer programa llamado GNS3, éste programa es la versión gráfica de Dynagen, muy sencillo de manejar, pero no soporta todas las características de éste último (o por lo menos no sé cómo), yo por ejemplo no he podido usar las interfaces seriales en éste programa, mientras que con Dynagen sí como veremos más adelante.

Preparación

Obviamente lo primero que debemos hacer es descargar los programas, ambos se descargan juntos, la versión que yo tengo instalada (dynagen 0.10.1; dynamips-0.8.0-RC1_Win_XP) tiene un tamaño de 3,68MB. La instalación en Windows es directa, lo único que pregunta es aceptar los términos de la Licencia que es GNU y luego leer el archivo de Readme donde hay unas referencias a fuentes directas y revisiones desde la versión 0.4.0. El programa crea tres carpetas en «archivos de programa/Dynamips», éstas son images, docs y sample_labs. En images se supone que debemos guardar las imagenes de IOS que no se proporcionan con el software y que queda muy claro que los usuarios deben usar las imágenes que legalmente posean, es decir, de los enrutadores que posean o de la licencia de soporte que tengan por parte de CISCO. Hay que recordar que hay literatura técnica que afirma que cisco se ve a sí mismo como productor de software tanto como de hardware y que el software puede ser (o es) la actividad más importante de Cisco. Por lo tanto, es mejor respetar esos términos y usar IOS legalmente obtenidos, no queremos tener una empresita como CISCO demandándonos ¿cierto?. Docs tiene un manual corto pero muy sustancioso sobre el uso de las herramientas y sample_labs tiene archivos de configuración de ejemplo que incluyen redes de emulación de conmutación ethernet, frame relay y redes «simples» con enlaces seriales.

Se estarán preguntando «y si ahí están las redes simples con enlaces seriales ¿para qué sigo leyendo esta entrada? ¡pa’ la configuración!» Bueno, no sé qué tantos de uds. tengan acceso (legal) a IOS para enrutadores 7200 😀 recuerden que los ejemplos son para ésta serie de enrutadores y por lo menos para mí esa serie es casi desconocida y evidentemente no tengo imágenes de ese IOS. Yo soy instructor de CCNA y he dictado algunos cursos de CCNP, por lo tanto los enrutadores más avanzados a los que tengo acceso son enrutadores de la serie 2800 y los que uso todo el tiempo son de la serie 2600, por eso me tocó modificar los archivos de configuración para que funcionara con éstas series. Realmente lo único que hice fue ensayar y no fue muy difícil hacerlo funcionar finalmente (después de leer el manual), pero el resultado es impresionante, es decir, con unas escasas líneas de código que no pueden ser más simples, puedo hacer laboratorios como se me antoje sin necesidad de conectar y desconectar cables y en mi propia casa y sobre todo, con todas las prestaciones reales de un enrutador. Como anecdota les cuento que con Dynamips tuve acceso a la configuración del IPS (intrusion prevention system) de CISCO, que no pude hacer con los enrutadores reales de la academia ya que éstos tienen 96MB de memoria y el IPS necesita por lo menos 128MB.

Configuración

Bueno, a lo que vinimos. Básicamente lo que tuve que hacer fue tomar uno de los ejemplos de la carpeta sample_labs (simple1.net), abrirlo con block de notas y cambiar las líneas de 7200 por 2621XM, luego bajo la configuración del modelo escribí la ruta al IOS que tenía almacenado en mi D.D.. En éste sentido leí algunas observaciones respecto al uso de caracteres especiales como tildes en los nombres de carpetas y el uso de \ en Windows y / en Linux. Así que tengan en cuenta ésto cuando modifiquen o creen sus archivos, parece que el sistema es quisquillozo con los caracteres. Y eso fue todo!, sólo hay que dar doble click sobre el archivo .net y esperar que todo salga bien. A continuación les muestro una serie de capturas de pantalla de lo que pasó cuando ejecuté el siguiente archivo de configuración (modificado del original simple1.net). Asegúrense que los archivos .net estén asociados al script dg-local.cmd que se ubica en la misma carpeta de instalación de Dynamips.
ConfRedDGen
Las líneas donde dice wic0/0 = WIC-2T también las agregué yo haciendo ensayos adicionales, pero luego supe que no eran necesarias y las comenté, lo único que tuve que modificar realmente fue la línea de especificación del IOS poniendo los modelos exactos de los enrutadores (con sólo 2600 no me funcionó) y cuidando que no hubiera caracteres especiales en la ruta, agregar la línea model en cada instancia y disfrutar! Lo asombroso es lo simple y lo potente que resulta esta herramienta.

En la siguiente imagen se ve lo que aparece un vez que arranca exitosamente el servidor Dynmips.
ArranqueDMips

Eso es lo que pasa una vez se da doble click en el archivo simple.net la extensión .net está asociada a dg-local.cmd.

ArranqueDGen

Y lo que muestra la consola de Dynamips simultáneamente.

ArranqueDGenDMips

¿Qué se puede hacer con Dynamips/Dynagen?

Aparentemente con éste sistema de emulación se puede hacer cualquier cosa que se pueda hacer con enrutadores reales, hay que recordar que el sistema es un emulador, es decir, no es una simulación en la que un programa intenta hacer lo que hace un enrutador, en éste caso, se crea una máquina virtual que es efectivamente un enrutador y los límites están dados por la capacidad del PC sobre el que se corra el sistema, de hecho los archivos de ejemplo hablan de configuraciones multiservidor, sugiriendo que el sistema se puede correr simultaneamente en varios PCs. Por hora no puedo decir mucho sobre lo que se puede hacer porque la primera vez que probé éste programa, a principios de éste año, no me funcionó muy bien y no volví a sacarle tiempo y apenas ahora que me ha funcionado bien vuelvo a sacarle tiempo.

Una de las cosas más interesantes que he visto y que puede ser la base de la ejecución del sistema en varios PCs, es que los archivos de configuración permiten configurar una interfaz del enrutador para que use efectivamente la interfaz del PC sobre el que se corre el sistema, es decir, que podríamos usar el PC para generar tráfico real de un enrutador, con protocolos de enrutamiento, CDP y cualquier otro protocolo que ejecutemos, incluso podríamos interceptarlo para analizar el tráfico que sale directemante de nuestro equipo como si fuera de un enrutador real. Para saber cómo hacerlo hay que usar un script llamado «Network device list» que muestra las interfaces en el PC y cómo se nombrarían en los archivos de configuración de Dynagen. Leyendo un foro hace poco, leí entre líneas una pregunta sobre cómo ejecutar SDM, el potente programa gráfico de configuración que viene con las nuevas versiones del IOS y con los enrutadores de servicios integrados, de hecho, acabo de hacer dos pruebas de lo que menciono: configuré el enrutador para usar una interfaz de loopback en mi PC y abrí el SDM e intercepté tráfico, esa va a ser la próxima entrada que voy a escribir para que estén pendientes.

El sistema es muy simple y sencillo de usar, la consola de administración Dynagen, tiene comandos realmente simples y puede servir para optimizar el uso de la CPU y la memoria del PC en el que se ejecuta el sistema, aunque hay advertencias que las opciones por defecto son óptimas y que no se deben modificar a menos que se sepa exactamente lo que se está haciendo. Además en la consola se pueden arrancar los enrutadores, abrir consolas a éstos, apagarlos, reiniciarlos, subir archivos de configuración y descargarlos y todo de manera muy similar al CLI del IOS. En otras palabras, si quieren saber qué se puede hacer, usen «? <enter>», ¿se les hace conocido?.

Retroalimentación

Como ya les comenté, apenas empiezo a explorar el sistema, así que les ruego el favor que me envíen o comenten las cosas interesantes que encuentren para que aprendamos todos. Intenten dar tantos detalles como sea posible para poder ejecutar sus aportes y participen también en los foros oficiales. GNS3, la versión gráfica, también es una herramienta muy potente, pero en la página oficial dicen que quienes mantienen el sistema son apenas dos y que por eso no han podido desarrollar mucho más, eso no es un fenómeno aislado y en el mundo de las redes de datos ha costado que algunas herramientas libres pasen a ser privativas por la falta de aportes. Recuerden que los aportes pueden ser simplemente retroalimentación sobre errores y a veces conociendo el código fuente del programa se pueden hacer modificaciones muy simples que pueden generar un cambio importante en la experiencia del usuario o corregir un error de un plumazo.

Conclusiones

Finalmente, tengo que mencionar que los programas resultan bastante livianos para lo que hacen, aunque mi PC (que no es de grandes prestaciones: portátil con WinXP SP2+AMD64+512MB de Ram+60GB de DD) se colgó un poquito cuando emulaba éste archivo de configuración, sobre todo cuando lo conecté con un interfaz del propio PC y ejecuté el SDM y Wireshark.

  • Dynamips/Dynagen y GNS3 son potentes herramientas tanto para aprender y practicar antes de certificar con CISCO, pero también para hacer demostraciones o implementaciones de prueba de alguna tecnología.
  • Éste sistema no es un reemplazo de los enrutadores, es un importante complemento para el trabajo con ellos, incluso se pueden usar para generar configuraciones y probarlas antes de ponerlas en un entorno de producción o para probar en un entorno controlado configuraciones que estén fallando o no estén funcionando bien probando cómo mejorarlas sin miedo de dañar nada.
  • Este sistema ahorra mucho dinero a quienes desean estudiar para una certificación, en Estados Unidos es común que los estudiantes, incluso de CCNA, compren kits completos de estudio (3 enrutadores y 2 switches normalmente). Obviamente en Suramérica, tanto por la capacidad de adquisición como por la percepción de la importancia de las certificaciones, eso no es ni de lejos una costumbre, pero sí nos puede ahorrar dinero si la academia o learning partner donde estudiamos no justifica con sus equipos e instructores el dinero que cuesta hacer un curso de preparación.
  • El sistema indudablemente ahorra tiempo, ya que la emulación no incluye conectar físicamente los equipos y el arranque de los equipos me ha parecido más rápido que con los enrutadores reales (la potencia de los procesadores no son comparables), sin contar que el trabajo en las academias a veces deteriora las interfaces de tal manera que con frecuencia se dañan engañosamente, apareciendo arriba, hasta que se intenta hacer alguna transferencia de datos, momento en el que la interfaz empieza a fluctuar (flapping interfaces).
  • Finalmente, éste es un ejemplo de una tecnología que lleva muchos años desarrollandose y que ahora es un bum pero no sólo en cosas altamente técnicas. Ésta tecnología se llama virtualización y viene tanto de virtualización de servidores como virtualización de sistemas operativos, que permiten emular sistemas operativos de PC de escritorio de manera totalmente aislada del sistema base (evitando dañas los datos reales y evitando dañar instalaciones importantes). La mayoría de las conclusiones mencionadas provienen de las virtudes de la virtualización y dynamips es sólo un ejemplo de un grupo grande de aplicaciones de de ésta tecnología.

Espero que les resulte útil ésta información y me retroalimenten lo que hcen. Próximamente estaré escribiendo sobre cómo conectar un enrutador al propio PC para ejecutar cosas como el SDM y Wireshark.

Enlaces

16 comentarios en “¿Cómo emular enrutadores de CISCO en el PC?”

  1. Gracias por los comentarios.

    Sobre el GNS3, me gustaría que nos aportaran datos más precisos o alguna página en que nos muestren algo similar a lo que publiqué acá.

    Sobre la configuración tengo que confesar que no he bajado todavía la última versión de Dynamips/Dynagen, así que no sé si no sea necesario el cambio que yo propuse. Sólo espero que lo que escribí resulte útil para empezar y genere aportes, tanto a la comunidad de usuarios/desarrolladores de los proyectos, como a mi blog.

    Sobre el último comentario… gracias y ten en cuenta que los IOS no se pueden usar legalmente sin tener la licencia de uso por parte de Cisco, sin embargo el enlace me resulta muy útil, sobre todo porque hay otro enlace en esa página que muestra otros IOS y dice que los IOS se encuentran buscando por Google, muy buen complemento a lo que escribí.

    Finalmente, los IOS que tiene el enlace son un poco viejos, la última versión es la 12.4 e ISDN es una tecnología que está cambiando de mercado y ya no es tan masiva como era antes (siquiera xque era maluca de configurar).

    Hasta pronto.

  2. Hola:

    Tengo el siguiente problema en mi pc. en dias pasados se daño ynecesite llamar al técnico, él me lo ha arreglado y la información que tenia me la paso en una USB, al querer abrir esta me sale encriptado en cisco, alguno de ustedes me puede colaborar con esto, no tengo idea de como recuparar mi información. mi windows es XP. Porfa es urgente. Gracias

  3. hola a todos, tengo una pregunta, cuando le doy el comando console/all para telnet, me dice q no encuentra el archivo, q debo hacer.

    les agradezco de antemano.

  4. Hola amigos,
    estoy preparando la certificación CCNP y utilzo GNS3/dynamips pero tengo problemas con la memoria virtual de XP.
    Tengo una practica con 3 rounter 2621 pero al intentar abrir la consola de uno de ellos se me bloquea y se queda sin memoria, he activado las opciones de ghostios y sparsemem ¿Que mas puedo hacer para disminuir el uso de memoria?
    He probado a recalcular el IDLE PC, una vez calculado este valor ¿es siempre el mismo para ese modelo de router?¿no cambia de un dia para otro?

    Gracias, saludos:D

  5. Hola Cesar,
    visite la pagina citada en el comentario anterior (http://lios.apana.org.au/~cdewick/cisco_dov.html), me parecio muy interesante y me surgieron algunas dudas que quiza me puedas aclarar:

    vi la imagen(de la pagina) del router 1720 con un modulo WIC, entonces ¿por que en el tutorial de dynamips (http://dynagen.org/tutorial.htm#_Toc193248012) dicen que estos routers no se pueden configurar con modulos WIC?

    en la seccion de las IOS(c3620-io3-mz.122-3.bin), ¿no seria c3600(serie)…….?
    ¿por que en algunos nombres de IOS se indica la serie(c2600) mientras en otros se indica el modelo(c3620)?

    ¿Como saber el modelo(1710/1720/1721/1750/1751/1760) de un router con solo ver el frontal de este(c1700)?

    Muchas gracias, saludos:D

  6. Hola Miguel,

    sobre la limitación de los 1720, yo creo que la limitación es del GNS3, cuando yo intenté configurar una topología con Dynamips me topé con dificultades para agregar cierto hardware adicional, se deben referir a eso.

    La nomenclatura de los IOS es un laberinto, mira ésta página oficial sobre versiones de IOS (una de ellas 🙂 ), infortunadamente no hablan específicamente de la plataforma, pero al final hay ejemplos justo de la inconsistencia que señalas, con eso se ve que hay versiones para la serie y para la plataforma particular. Léelo que está muy interesante de todos modos.

    Y sobre la imagen, yo creo que no se puede. La plataforma de hardware usualmente está en algún rinconsito en la parte de atrás.

    Gracias y hasta pronto.

  7. Gracias por el apunte, me estaba volviendo loco con los nombres de las IOS.

    Lo de los enlaces serie en el 1720 tambien me vuelve loco, pues en el tutorial de dynamips(http://dynagen.org/tutorial.htm#_Toc193248005) aparece un ejemplo dodnde utiliza un router 1720 con 2 enlaces serio(s0 y s1):

    # Example 1
    model = 1720
    WIC0/0 = WIC-2T
    WIC0/1 = WIC-1ENET
    # This creates s0, s1, and e0

    Gracias por el enlace a las nomenclaturas de las IOS, Cesar. Saludos 😀

  8. Ey esta muy bueno el tutorial que hiciste.
    Pero mi pregunta es si puedes ayudarme ya que tengo instalado el ultimo GNS3 y yan en la ventana de configuracion del dynamips le digo provar y me dice que esta bien, pero a la hora de conectar dos dispositivos me sale error y no se conectar de resto puedo entrar al router configurarlo pero no se me conectan los dispositivos ya sea un router con el switche o con otro router me sale este error en la parte que dice consola:

    Dynagen management console for Dynamips (adapted for GNS3)
    Copyright (c) 2008-2010 GNS3 Project

    => ———Traceback lines (saved in exception.log)———-
    Traceback (most recent call last):

    File «GNS3Scene.pyo», line 713, in slotAddLink

    File «GNS3Scene.pyo», line 675, in __addLink

    File «GNS3Topology.pyo», line 851, in addLinkFromScene

    File «GNS3UndoFramework.pyo», line 123, in __init__

    TypeError: not all arguments converted during string formatting

    ———————————————————–

    agradeceria si me dices cual es el problema y como lo arreglo

    Gracias

    Pt: en windows como en linux me saca el mismo mensaje

    1. Hola Juan R,

      gracias por el comentario. Yo no tengo mucha experiencia con el GNS3, pero el problema que tienes parece ser que la configuración física del dispositivo no es compatible con las conexiones que necesitas. Debes entrar a la pestaña de Slots y selecciona las interfaces que necesitas para la conexión que me dices. Si quieres conectar con un dispositivo que se encuentra en otra máquina física el procedimiento es el que dice en la entrada ¿qué se puede hacer con GNS3?.

      Gracias y hasta pronto.

      1. Hola, yo tengo el mismo problema y no lo pudesolucionar como dices.
        Este en manual o no la seleccion de las interfaces, no me conecta.
        Sale el error que copio JuanR y desaparece el enlace.

        AYUDA!!!!

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.