DevSecOps

15 jun, 2018

IOS On Unix Correia 2.1 – Configurando um emulador de rede para routers e switches

Publicidade

A Cisco desenvolveu um laboratório online para simulações de rede chamado Cisco Learning Labs. Uma das principais ferramentas do laboratório é o Cisco Packet Tracer, para uso dos alunos do programa Cisco Netacad.

Entretanto, a Cisco inovou esse laboratório com o desenvolvimento de um software que emula roteadores e switches de camada dois. Esse software foi nomeado como IOS on Unix (IOU), ou seja, um Internetworking Operating System (IOS) executado em sistemas operacionais Unix ou em seus derivados, tais como o Linux.

A Cisco utiliza em seus laboratórios práticos para aplicar o exame CCIE e tem sido largamente utilizado por estudantes que pretendem obter certificações Cisco de nível professional.

De alguma forma, uma versão do Cisco IOU foi disponibilizado na Internet e foram surgindo novas versões com pequenas modificações. As mais conhecidas, são: flyxj e a asasel’s. Cada uma dessas novas versões possui suas próprias características, tais como o sistema operacional e funcionalidades.

Todas essas versões foram criadas dentro de um ambiente virtual, ou seja, criados em Vmware ou Virtual Box, por exemplo. Inclusive, já existem versões em formato de Live CD, que permitem o administrador dar um boot em qualquer equipamento que tenha uma unidade de CD-ROM e utilizar o IOU.

O IOU Correia é uma versão personalizada do Cisco IOU, com fins exclusivos para estudos, seja para certificações Cisco ou laboratórios virtuais para conhecer melhor determinadas características de protocolos, tecnologias, ou ainda para reproduzir determinados cenários de rede. Abaixo, as características dessa versão:

  • Debian Netinst é uma versão mínima do sistema operacional linux Debian;
  • TCPDump é uma software para captura de pacotes em modo texto;
  • VPCS (Virtual PC Simulator) é um simulador de PCs, podendo criar até 9 computadores virtuais e usá-los como se fossem hosts reais;
  • SNMPWALK conjunto de ferramentas/comandos para validar as configurações de SNMP realizadas no laboratório;

DsnIff é um conjunto de ferramentas de redes e segurança. Sua utilização é recomendada para obter informações sobre a segurança da rede, tais como interceptação de tráfego de rede. OpenSSH Server é uma ferramenta de conectividade podendo ser utilizada para realizar a transferência de arquivos, bem como acesso remoto ao sistema operacional com criptografia de dados.

O artigo mostrará como utilizar as funções básicas do Cisco IOU Correia e apresentará algumas referências para mostrar como utilizar as ferramentas disponibilizadas nesta versão.

Funcionamento

A estrutura do IOU é formada por um pequeno conjunto de scripts baseados em bash e perl, arquivos de texto e a própria versão do Cisco IOS desenvolvida para rodar em sistemas operacionais baseados em Unix, tais como o Linux. Os arquivos podem ser copiados para outra distribuição Linux, desde que seja respeitado alguns procedimentos, que serão vistos ao longo da documentação. Os principais arquivos, são:

  • i86bi_linux-adventerprisek9-ms: Sistema operacional Cisco IOS layer 3;
  • i86bi_linuxl2-upk9-ms: Sistema operacional Cisco IOS layer 2;
  • wrapper-linux: Aplicativo responsável por executar o IOS;
  • iourc: Arquivo de texto contendo a licença de uso do Cisco IOU;
  • NETMAP: Arquivo de texto responsável pela conexão física entre os roteadores e switches.
  • A topologia física é elaborada a partir desse arquivo;
  • router_star.sh e switch_star.sh: Script bash utilizado para iniciar os roteadores e/ou switches;
  • router_shut.sh e switch_star.sh: Script bash utilizado para encerrar os roteadores e/ou switches;
  • iou2net.pl: Script perl utilizado para criar uma conexão virtual entre os roteadores e/ou switches e a rede local.

O aplicativo wrapper é responsável por tornar acessível o acesso via console nos roteadores e switches, além de permitir que o administrador escolha algumas características desses equipamentos, como: definir a quantidade dos equipamentos (roteador e switch) para o laboratório, tamanho da memória RAM e NVRAM, quantidade de interfaces Ethernet ou Serial, entre outras opções.

Quando executado, o wrapper localizará o arquivo NETMAP, responsável pelo mapeamento das conexões físicas dos equipamentos – neste momento a topologia está criada. O wrapper abrirá no linux algumas portas TCP, para que através dela possa ser feito o console nos equipamentos. O número das portas TCP são especificadas pelo próprio administrador de rede e cada equipamento terá uma porta TCP individual.

Recomenda-se criar um script para que sejam iniciados todos os equipamentos na sequência; dessa forma, o administrador ganha tempo e torna-se um processo automatizado. Para que o acesso aos equipamentos seja possível remotamente, será necessário configurar um endereço IP na placa de rede do Linux.

O wrapper disponibilizará as portas TCP previamente configuradas pelo administrador, tornando possível o acesso via telnet nos equipamentos, apenas especificando o endereço IP configurado na interface do Linux, seguido da porta TCP, onde as portas corresponderá aos equipamentos.

Figura 1: Identificando o endereço IP e porta TCP para acessar o roteador.

No exemplo da figura 1, através do comando “ifconfig”, pode-se observar o endereço IP configurado na interface de rede do Linux. Neste caso, usa-se a interface eth4 e endereço IP 192.0.2.1. Uma das portas disponibilizadas para acesso é a 2001 e o laboratório está configurado somente com um roteador, apenas para demonstrar o funcionamento.

Configurando um laboratório

A máquina virtual é composta por dois arquivos de extensão ‘vmdk’ e o sistema operacional encontra-se no arquivo ‘IOUCorreia.vmdk’, e o ‘LAB.vmdk’ deverá ser adicionado como um HD SATA. A adição do segundo HD será realizada pelas configurações do VirtualBox ou VM Server.

A configuração de um laboratório exigirá do administrador um conhecimento básico para edição de arquivos de texto em modo texto no Linux. Entretanto, também será possível criar todos os arquivos no editor de sua preferência e posteriormente transferi-los para o Linux via SSH, por exemplo.

A seguir, será descrito os passos necessários para criar um laboratório com uma topologia de dois roteadores. Este laboratório será conectado ao GNS3, VPCS e ao sistema operacional hospedeiro, ou seja, o sistema operacional que você está rodando nativo no seu computador.

Passo 1: Criar um novo diretório para armazenar os arquivos de configuração e topologia do novo laboratório, que neste exemplo recebeu o nome “lab_imasters”:

root@ioucorreia:~# cd iou/hdext root@ioucorreia:~/iou/hdext# mkdir

Passo 2: Copiar os arquivos essenciais para iniciar a configuração do laboratório e acessar o diretório para iniciar as configurações dos arquivos:

root@ioucorreia:~/iou/hdext# cp sample/* lab_imasters root@ioucorreia:~/iou/hdext# cd lab_imasters

Passo 3: Na figura 2, as linhas são responsáveis por inicializar e especificar as instâncias de cada roteador (2010 e 2020).

Figura 2: Arquivo router_start.sh para configurar parâmetros de inicialização da topologia.

Passo 4: O arquivo NETMAP (figura 3) está especificando as conexões físicas entre os roteadores, através dos números de suas instâncias. O primeiro valor à esquerda do sinal de dois pontos indica a instância do roteador e o segundo, à direita, indica a interface do roteador:

10:2/0 20:2/0
# Comentário
# O roteador de instância 10 está utilizando a interface serial 2/0 para conectar-se ao roteador # instância 20 na interface serial 2/0.

Figura 3: Arquivo para mapear as interfaces (NETMAP).

Passo 5: Este comando é necessário para que seja iniciada a topologia. Este comando é necessário para que seja feito o console no roteador. Observe que o número 2010 representa a porta TCP aberta e que está listada no arquivo router.sh, ou seja, depois que for configurado o acesso remoto para a máquina virtual, basta utilizar o endereço IP e porta para acessar a console do roteador.

root@ioucorreia:~/iou/hdext/lab_imasters# bash router_start.sh
root@ioucorreia:~/iou/hdext/lab_imasters# telnet 200.200.200.1 2010

O comando router_shut.sh é necessário para que seja encerrado o laboratório:

root@ioucorreia:~/iou/hdext/lab_imasters# bash router_shut.sh

Conexão com GNS3

O script iou2net.pl será responsável por realizar a conexão com o GNS3 e poderá ser utilizado de duas maneiras, sendo elas:

bash iou2net.pl 20000:200.200.200.2:30000 -p 20 &

Onde: 20000 é o número da porta local que será aberta; 192.0.2.2 é o endereço IP do computador onde o GNS3 está sendo executado e 30000 é o número da porta remota aberta no GNS3; 20 indica a instância do roteador que fora configurado no arquivo NETMAP.

Observação: Utilizando este exemplo no GNS3, a configuração do NIO UDP seria assim: nio_udp:30000:192.0.2.1:20000.

O endereço IP da interface de rede do IOU, configurada para conexão com hospedeiro (vboxnet0 ou vmnet8), é 192.0.2.1. Antes de inicializar, é fundamental acrescentar a linha “50:1/0@ioucorreia 100:0/0@ioucorreia” no final do arquivo NETMAP e executar o comando a seguir:

bash iou2net.pl -i eth4 -p 100 &

Onde: -i especifica a interface de rede do Linux a ser utilizada. Neste exemplo, foi utilizado a placa de rede eth4 e 100 indica a instância do roteador.

Conexão com o VPCS

O Virtual PC Simulator (VPCS) é um software livre de código aberto e tem como objetivo simular computadores, sendo que o número máximo de computadores não deve ultrapassar nove. Através do VPCS é possível utilizar os comandos ping e traceroute para validar os roteadores da topologia.

Para conectar o VPCS aos roteadores da topologia, será necessário antes acessar o diretório dos computadores virtuais, inicializar o vpcs32, e por último conectá-lo a topologia, conforme descrito na figura 4:

Figura 4: Conectar os computadores virtuais a topologia de rede.

Conexão com o hospedeiro ou rede local

O procedimento para conexão começa com a escolha de um ID dentro do arquivo NETMAP, neste exemplo (figura 5) utilizamos o valor 100, que representará a conexão com a interface de rede do Linux eth4.

Figura 5: Arquivo NETMAP configurado para estabelecer conexão com o hospedeiro ou rede local

Observação: Caso seja necessário criar uma nova interface com a rede, será necessário adicionar uma segunda placa de rede no Linux e criar um novo script, incluindo as mesmas linhas do script original.

Referências

Ao longo das pesquisas alguns sites foram úteis e contribuíram para que fosse possível elaborar este artigo. São eles:

Versão do IOU Correia disponibilizada no site: