====== GNS3 utilizando IOU ====== Todos conhecem ou já ouviram falar do GNS3, quem não conhece o GNS3 é um software que consegue emular roteadores utilizando a imagem do IOS da Cisco(sistema operacional que é executado nos roteadores). Segundo a própria Cisco: O Cisco IOS no UNIX (IOU) é uma versão totalmente funcional do IOS que é executada como um processo UNIX (Solaris) no modo de usuário. O IOU é construído como uma imagem nativa do Solaris e é executado como qualquer outro programa. O IOU suporta todos os protocolos e recursos independentes da plataforma. Sendo assim o que ficou entendido o IOU foi criado pela própria Cisco para uso interno. Com relação à funcionalidade, IOU é muito semelhante ao GNS3, mas não requer quase os recursos que vários roteadores virtuais fazem. O IOU permite que você crie uma topologia de rede em um único PC sem a necessidade de roteadores físicos. Isso é útil para validar projetos de rede, testes de prova de conceito e auto-estudo de certificação. Para todas as dúvidas legais sobre o uso do IOU segue link [[http://evilrouters.net/2011/01/18/cisco-iou-faq/]] e é bom ler todo. ===== Antes de configurar o IOU ===== Bom eu penei um pouco antes de conseguir fazer funcionar. Depois de algumas tentativas conseguir fazer funcionar e criei uma teoria, porém não tive tempo de comprovar. O pulo do gato que eu percebi e a versao da VM GNS3 tem que combinar com a versão do GNS3. Sendo assim nesse site tenho as respectivas versões do GNS3 com a VM GNS3. [[https://github.com/GNS3/gns3-gui/releases]] Nos meus testes utilizei o windows 10 veja a versão. {{ :infra-estrutura:cisco:gns3winver.png?direct |}} A versões do GNS3 e VM GNS3 e respectivo arquivo: * GNS3 - 2.1.15 - Arquivo GNS3-2.1.15-all-in-one.exe * GNS3 VM - 2.1.15 - Arquivo GNS3.VM.VirtualBox.2.1.15.zip O gns3 consigo rodar com virtualbox e vmware. Utilizaremos o Virtualbox. Após tudo instalado vm e gns3 importe a VM normalmente(Não vou passar isso porque considero muito simples e não é difícil, mas mesmo assim caso haja alguma dúvida mailme). ===== Criando um switch IOU ===== Para criar o switch vamos ao menu **Edit -> Preferences ** {{ :infra-estrutura:cisco:gns3editpreferences.png?direct |}} Depois clique em **IOU Devices** e depois em **New** {{ :infra-estrutura:cisco:gns3preferences_iou_devices.png?direct |}} Logo em seguida clique em **Next** {{ :infra-estrutura:cisco:gns3newswitch.png?direct |}} Nesta tela temos algumas opções vamos a elas: * **Name**: Será o nome do dispositivo, pode ser o nome que quiser contanto que seja único. * **Image** **New Image**: Indica que iremos adicionar uma nova imagem. * **Type**: Como estamos adicionando um switch então selecione **L2 image**. * **IOU Image**: É a imagem propriamente dita. Para emular switch vamos utilizar a imagem i86bi-linux-l2-ipbasek9-15.1g.bin. {{ :infra-estrutura:cisco:gns3namesettings.png?direct |}} A tela com a imagem selecionada. {{ :infra-estrutura:cisco:gns3namesettings1.png?direct |}} ===== Criando um roteador IOU ===== O processo para criar um roteador IOU e praticamente o mesmo. Menu **Edit->preferences**. {{ :infra-estrutura:cisco:gns3editpreferences.png?direct |}} Clique em IOU Devices e depois **New** {{ :infra-estrutura:cisco:gns3preferences_iou_devices.png?direct |}} Clique em **Next**. {{ :infra-estrutura:cisco:gns3newswitch.png?direct |}} Selecione **New Image** e em Type escolha **L3 Image**. {{ :infra-estrutura:cisco:gns3routernamesetting.png?direct |}} Selecione a imagem i86bi-linux-l3-adventerprisek9-12.4.bin. {{ :infra-estrutura:cisco:gns3routernamesetting1.png?direct |}} Depois clique em **Finish** ===== Criando e aplicando a licença ===== As imagens Cisco’s IOS-On-UNIX (IOU) são protegidas por um mecanismo de licença que requer que usuáros tem q gerar uma licença valida internamente na Cisco. Para uso das imagens IOU devesse obter uma licença que é baseado no nome do computador e no endereço IP para obter essa licença. Devido ao uso do nome do computador e endereço IP para calcular a licença fica dificil utilizar uma licença gerada em uma máquina em outra. Para isso alguém que ainda não descobri criou um script em python que gera a licença. Segue abaixo o código. #! /usr/bin/python3 print("*********************************************************************") print("Cisco IOU License Generator - Kal 2011, python port of 2006 C version") import os import socket import hashlib import struct # get the host id and host name to calculate the hostkey hostid=os.popen("hostid").read().strip() hostname = socket.gethostname() ioukey=int(hostid,16) for x in hostname: ioukey = ioukey + ord(x) print("hostid=" + hostid +", hostname="+ hostname + ", ioukey=" + hex(ioukey)[2:]) # create the license using md5sum iouPad1 = b'\x4B\x58\x21\x81\x56\x7B\x0D\xF3\x21\x43\x9B\x7E\xAC\x1D\xE6\x8A' iouPad2 = b'\x80' + 39*b'\0' md5input=iouPad1 + iouPad2 + struct.pack('!i', ioukey) + iouPad1 iouLicense=hashlib.md5(md5input).hexdigest()[:16] print("\nAdd the following text to ~/.iourc:") print("[license]\n" + hostname + " = " + iouLicense + ";\n") with open("iourc.txt", "wt") as out_file: out_file.write("[license]\n" + hostname + " = " + iouLicense + ";\n") print("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nAlready copy to the file iourc.txt\n ") print("You can disable the phone home feature with something like:") print(" echo '127.0.0.127 xml.cisco.com' >> /etc/hosts\n") Com a VM GNS3 rodando ela utiliza uma interface acessivel ao computador localhost com isso podemos obter o endereço IP da VM GSN3 conforme figura abaixo: {{ :infra-estrutura:cisco:gns3vm.png?direct |}} o endereço ip da VM GNS3 é 192.168.56.3 este e o endereço da interface do virtualbox como podemos constatar abaixo. {{ :infra-estrutura:cisco:gns3virtualboxinterface.png?direct |}} Então vamos conectar na VM GNS pela interface **Virtualbox Host-Only Network**. Endereço VM GNS3: 192.168.56.3 Usuário: gns3 senha: gns3 {{ :infra-estrutura:cisco:gns3putty.png?direct |}} Clique em OK {{ :infra-estrutura:cisco:gns3putty2.png?direct |}} Escolha a opção Shell {{ :infra-estrutura:cisco:gns3putty3.png?direct |}} Você ira cair na shell do Linux da VM GNS3, vá até o diretório **/opt/gns3/images/IOU**. Agora e somente executar o script e obter a licença. {{ :infra-estrutura:cisco:gns3ciscoioukeygen.png?direct |}} Agora você tem duas opções ou copia a string abaixo ou utiliza algum software de transferência tipo WinSCP e copia o arquivo gerado iourc.txt que você precisara jogar nas preferencias do GNS3. [license] gns3vm = 73635fd3b0a13ad0; Clique em **Edit->Preferences**. {{ :infra-estrutura:cisco:gns3editpreferences.png?direct |}} Depois vá em **IOS on UNIX** e cole a string acima ou clique em browse indique o arquivo iourc.txt e depois clique em OK. {{ :infra-estrutura:cisco:gnslicenca.png?direct |}} Obs: Sem a licença você não consegue subir os switches e roteadores ele gera um erro. ===== Emulando o router e switch IOU ==== Agora vamos colocar os dois itens na area de trabalho do GNS3 e testar o switch e roteador. {{ :infra-estrutura:cisco:gns3areatrabalho.png?direct |}} Vamos ao **show version** de ambos. Roteador IOU {{ :infra-estrutura:cisco:gns3showversion.png?direct |}} Switch IOU {{ :infra-estrutura:cisco:gns3showversionswitch.png?direct |}} === Configurações === Roteador IOU {{ :infra-estrutura:cisco:gns3confrouter.png?direct |}} Switch IOU {{ :infra-estrutura:cisco:gns3confswitch.png?direct |}} === Testes com ping === Ping a partir do roteador IOU {{ :infra-estrutura:cisco:gns3pingrouter.png?direct |}} Ping a partir do switch IOU {{ :infra-estrutura:cisco:gns3pingswitch.png?direct |}} ===== Considerações finais ===== Mas porque utilizar esses firmware IOU? eles tem melhor performance já vi relatos de fórum de pessoas conseguir montar ambiente com mais de 100 roteadores rodando tranquilamente. Fora que você pode testar as features de switch suporte a QinQ, etc. Vou testa-ló e vou reportando quando puder. Vlw