jueves, 21 de mayo de 2020

GNS3 con recursos de Azure

GNS3 es uno de los simuladores, mas utilizados en el mercado de las telecomunicaciones, las ventajas y facilidades con las que cuenta para poder virtualizar una topología completa es impresionante.

Si tienes un proyecto en puerta o algún cambio en una red que se encuentra en producción, puedes agregar imágenes específicas de alguna versión de IOS Cisco (por decir una marca) para simular la reacción y el impacto que se tendría en la red.

También puedes practicar con laboratorios más precisos, e incluso replicar bugs ya identificados por el fabricante.

Para comenzar a utilizar esta herramienta, necesitas generar una cuenta gratuita para poder descargar el software mas actualizado.

Es muy amplio el mundo de GNS3, solo para que imagines un poco de lo que se puede hacer, te muestro una pantalla de los appliance que se pueden importar al día de hoy (Mayo 2020)


Al ser una lista muy grande, en resumen, son 138 appliance que se pueden utilizar. Este articulo no tratará de cómo utilizarlos. Para eso ya existen los mismos foros de GNS3 que te lo pueden explicar paso a paso.

Después de la recomendación que te hago de utilizar GNS3, ahora te voy a decir una mala noticia, es un programa muy demandante en cuanto a recursos, necesitamos muchas virtualizaciones, lo cual, si no contamos con espacio en disco duro, velocidad en procesador o RAM, vamos a terminar con un dolor de cabeza por no poder correr alguna aplicación correctamente.

La recomendación que te hago es adquirir un espacio en azure para poder trabajar esos laboratorios de forma rápida y sin que tu maquina se sobrecaliente o sufras de lentitud.

Para ello, lo primero que tenemos que hacer es crear una cuenta en Azure, necesitaremos un número telefónico y una tarjeta de crédito. Antes de continuar con este artículo, quisiera darle el crédito a NetworkChuck por su video

“CCNA Lab in the Azure Cloud for FREE! - GNS3 Setup in Microsoft Azure”

Una vez que tengas tu cuenta en Azure, deberás tener el acceso a un dashboard, que a mi punto de vista esta muy detallado, si tienes experiencia con data center te agradara ver toda la información que se puede mostrar, pero también si no tienes nada de experiencia vas a tener que leer mas sobre este articulo o buscar algún video serio que te explique bien la relación de costos.

Para la prueba que vamos a realizar, vamos a utilizar un servicio gratuito, que es por 30 días, es para que tu logres evaluar Azure y compres lo que usas.

Esa es una gran ventaja que tiene Azure, que lleva un conteo de los recursos que se utiliza.

También es una desventaja, porque si no estas familiarizado con estos servicios, deberas poner mucha atención en las letras chiquitas. Por ejemplo, los costos que se pueden generar por tener un servicio, son: costo por almacenamiento, costo por aumento de procesador, costo por RAM, costo por servicio, costo por maquina virtual, costo por recursos, costo por monitoreo, costo por alertas, costo por velocidad en transmisión, costo consultas. Y podría seguir así pero no quiero quitarte más ti tiempo.

Cuando generes tu cuenta, por favor fíjate que es lo que estas utilizando. No queremos que a vuelta del mes tu tarjeta de crédito se quede sobregirada.

Como mencione, la prueba no tiene ningún costo durante los primeros 30 días. Esto talvez te ayude a sacar ese proyecto que aun tienes detenido.
Te muestro algunas ventanas del portal de Azure






Una vez que tengas tu dashboard, vamos a entrar a la línea de comandos, con powershell.


Se desplegará una pantalla como la siguiente


Y es justo el momento en que tienes que buscar el video de NetworkChuck para poder ver el código para generar el servidor para GNS3.

 el nombre del video que te menciono es:

CCNA Lab in the Azure Cloud for FREE! - GNS3 Setup in Microsoft Azure


En dado caso que no quieras hacerlo aquí te dejo el código, donde tendremos que cambiar las variables iniciales por las de nuestra preferencia, en el caso que pertenezcas a America, la locación mantenla igual.

 
$location = 'southcentralus'
$user = "cbtnuggetsadmin"
$password = convertto-securestring 'CBTNu$$ets!@#4' -asplaintext -force

$credential = new-object System.Management.Automation.PSCredential ($user, $password);

$domainname = "mygns3server"

new-azresourcegroup -name GNS3 -location $location
New-AzureRmNetworkSecurityGroup -Name GNS3 -ResourceGroupName GNS3 -Location $location

$nsg=Get-AzureRmNetworkSecurityGroup -Name GNS3 -ResourceGroupName GNS3
$nsg | Add-AzureRmNetworkSecurityRuleConfig -Name Allow_All_the_things -Description "Let it all through" -Access Allow -Protocol * -Direction Inbound -Priority 100 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange * | Set-AzureRmNetworkSecurityGroup
new-azvm -resourcegroup GNS3 -location $location -name 'GNS3-SERVER' -image UbuntuLTS -size 'Standard_D4s_v3' -securitygroupname GNS3 -credential $credential -DomainNameLabel $domainname

El $user y password nos van a dar el acceso a nuestro servidor mediante SSH. Si no quieres cambiarlos, no hay problema, solo recuérdalos para que puedas entrar a tu servidor. En el caso del domainname, si vamos a cambiarlo, porque al menos en este ejemplo, ese dominio lo está utilizando NetworkChuck para su laboratorio.

Te voy a poner el ejemplo del laboratorio que yo genere, para que veas la diferencia


$location = 'southcentralus'
$user = "pavelbutzmann"
$password = convertto-securestring 'd3m0#!._4zur3' -asplaintext -force

$credential = new-object System.Management.Automation.PSCredential ($user, $password);

$domainname = "mygns3pavelbutzmann"





new-azresourcegroup -name GNS3 -location $location
New-AzureRmNetworkSecurityGroup -Name GNS3 -ResourceGroupName GNS3 -Location $location


$nsg=Get-AzureRmNetworkSecurityGroup -Name GNS3 -ResourceGroupName GNS3
$nsg | Add-AzureRmNetworkSecurityRuleConfig -Name Allow_All_the_things -Description "Let it all through" -Access Allow -Protocol * -Direction Inbound -Priority 100 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange * | Set-AzureRmNetworkSecurityGroup
new-azvm -resourcegroup GNS3 -location $location -name 'GNS3-SERVER' -image UbuntuLTS -size 'Standard_D4s_v3' -securitygroupname GNS3 -credential $credential -DomainNameLabel $domainname


 El siguiente paso es copiar ese codigo y pegarlo en el powershell de Azure.
A mí me solicitó la confirmación del "domainname", solo le tienes que dar enter.
y comenzará a generar la maquina virtual.

cuando se termine este proceso nos arrojara la validacion de la instalacion con lo siguiente


Hasta este paso solo preparamos la maquina virtual para poder instalar el servidor de GNS3, pero ya tienes listo tu dominio con el cual podrás ingresar a tu servidor por SSH para continuar con la instalación.

Vamos a buscar el dominio de nuestra máquina virtual para poder hacer pruebas de conectividad y disponibilidad.
En el dashboard principal abrimos los "Resource Groups" ya dea desde su icono en el dashboard o desplegando el menú que se encuentra del lado izquierdo superior.


Dentro vamos a ver 3 grupos de recursos que se generaron con las lineas de comando que pusimos en powershell. seleccionaremos el que dice GNS3


Dentro de GNS3 vamos a selecionar la "virtual machine" llamada GNS3-SERVER te puedes apoyar con los iconos para identificarla es la que parece un monitor.


Dentro de la informacion de la maquina virtual, vamos a buscar el DNS name


Del lado derecho de tu nombre de domino aparecera un boton para copiarlo rapido.


Vamos a iniciar el Command Prompt de nuestra maquina local, (CMD) tecleando la ventanita de windows en nuestro teclado y escirbiendo CMD para intentar hacer un ping y validar la conectividad de nuestra maquina virtual


Si el ping es exitoso continua con la guia, de nos ser asi valida que tu maquina virtual se encuentre encendida.
Abre la aplicación de tu preferencia para una conexión de SSH, puede ser alguna de las siguientes, putty, securecrt, mobaxterm, etc.

Vas a conectarte mediante el dominio que obtuvimos de la máquina virtual, así como el usuario y contraseña que configuraste en el script.


Recuerda que es un servidor linux (Ubuntu 16.04.6), por lo que podremos tambien tener permisos de usuario raiz, pero sin la necesidad de teclear un password. solamente con sudo su (para esta maqueta no es necesario entrar en modo root)

Ahora vamos a copiar el siguiente texto dentro de nuestra terminal
cd /tmp

curl https://raw.githubusercontent.com/GNS3/gns3-server/master/scripts/remote-install.sh > gns3-remote-install.sh

sudo bash gns3-remote-install.sh --with-iou --with-i386-repository


y comenzará el proceso de instalación del Servidor de GNS3 remoto.

Es importante que conoscas estos pasos, porque al menos en esta demostración, estamos utilizando los servidores de azure para los recursos, pero si tu tienes un data center con suficientes recursos, puedes evitar todo esto, instalar un Ubuntu server 16.04 y correr el mismo comando de instalación para el servidor GNS3, publicar tu servicio o trabajarlo desde el corporativo y almacenar todos los proyectos localmente.

 Otra nota importante es que este comando a mi me instalo la versión 2.1.21 de GNS3 server, por lo que tu software local, es decir el GNS3-gui que instales en tu máquina, debe de ser la versión 2.1.21 (empatar las versiones de tu servidor en azure con tu software de GNS3)



A mí me apareció el error de incompatibilidad cuando estaba corriendo el servidor e intente emparejar el software de GNS3.

Para descargar versiones anteriores de GNS3, puedes utilizar la siguiente liga.


en el caso de utilizar Windows como yo, deberás instalar la que diga GNS3-x.x.x-all-in-one.exe donde las x sustituyen a la versión que te corresponda.

En mi caso yo instale la versión GNS3-2.1.21-all-in-one.exe

Si quieres saber cuál versión tiene instalada tu servidor teclea “gns3server -v”


Cuando tengamos listo nuestro servidor e instalado nuestro GNS3-gui, vamos a proceder a configurarlo. Primero vamos a ir a Help, setup wizard, para abrir el asistente.



Se abrirá esta pantalla inicial y seleccionaremos utilizar un servidor remoto


Después vamos a pegar el hostname del dominio al que hicimos ping, es decir el nombre de nuestra maquina virtual, en mi caso es

mygns3pavelbutzmann.southcentralus.cloudapp.azure.com

el puerto ya esta configurado, pero en caso de no ser asi, utilizaremos el 3080 TCP.

Dejaremos deshabilitada la opción de autenticación.


Y damos next.

Mostrara una pantalla donde viene el resumen de la configuración.


Si el servidor y el GNS3-gui son de la misma versión y ambos se alcanza, nos aparecerá la siguiente pantalla


Donde ya podremos importar nuestros appliance.

Con esto deberíamos de ver arriba nuestro servidor dentro del software GNS3-gui, y como ya es costumbre en la mayoría de las versiones de GNS3, veremos el desempeño de nuestra maquina o servidor.


Ahora te preguntarás, y cual es la diferencia a que lo tenga localmente en mi máquina:

1.- Tus proyectos deberán ser almacenados en tu servidor remoto

2.- Los recursos que se utilicen, serán solamente del servidor.

3.- deberás contar con una estable conexión a internet obviamente, (en las pruebas que yo realice tenía un enlace de 20Mb de descarga)



Vamos a ver los recursos que puede consumir nuestro laboratorio si agregamos muchos dispositivos, esto lo vamos a validar con el siguiente video.





Ahora solo me queda decir: disfruta tu laboratorio de prueba, y si te decides por comprar el espacio en azure, asegúrate siempre de apagar tu máquina virtual después de utilizarla, puedes programar el apagado de tus maquinas a cierta hora, para no te generen mas consumo del que realmente es.
Si quieres ver cuanto consumo puede generar en pesos, te recomiendo este video.






No hay comentarios.:

Publicar un comentario