quarta-feira, 29 de abril de 2015

Instalação Manual do Emulador GNS3 no Linux

Olá Pessoal.

Neste artigo irei apresentar ao leitor os procedimentos para instalação da nova versão do emulador GNS3 1.3.2 no Linux Ubuntu (Debian) de maneira manual, através dos pacotes disponibilizados para download. Atualmente esse procedimento é importante porque a versão mais recente do software ainda não está atualizada nos repositórios APT, embora haja comentários nas listas de discussão de que em breve o repositório deve ser atualizado com uma versão mais recente, ainda sem nenhuma previsão. A propósito, a instalação do GNS3 via PPA é bastante simples de ser realizada através dos comandos abaixo. O problema atual deste procedimento é que o usuário irá instalar a antiga versão 0.8.7 do software, compatível apenas com os laboratórios legados que possuem extensão .net

sudo add-apt-repository ppa:gns3/ppa
sudo apt-get update
sudo apt-get install dynamips gns3

Pois bem, vamos aos procedimentos para instalar manualmente a nova versão 1.3.2. O primeiro passo é o usuário acessar a plataforma GNS3 Jungle (www.gns3.com) para baixar o arquivo fonte da versão mais recente do emulador, que atualmente é o arquivo denominado GNS3-1.3.2.source.zip. Uma observação desnecessária é que para acessar a plataforma o usuário deverá cadastrar uma conta ou fornecer suas credenciais. ;-)



Antes de manipular o arquivo baixado, é necessário instalar uma série de dependências relacionadas ao GNS3 (primeiro bloco) e ao Dynamips (segundo bloco), através dos seguintes comandos:

sudo apt‐get install python3‐setuptools
sudo apt‐get install python3‐pyqt4
sudo apt‐get install python3‐ws4py
sudo apt‐get install python3‐zmq
sudo apt‐get install python3‐tornado
sudo apt‐get install python3‐netifaces

sudo apt-­get install cmake
sudo apt‐get install libelf‐dev
sudo apt‐get install uuid‐dev
sudo apt‐get install libpcap‐dev

Depois de baixado o pacote com os arquivos fonte, o usuário pode utilizar qualquer ferramenta de sua preferência para extrair os arquivos para um diretório qualquer. A extração deste arquivo vai criar um diretório denominado GNS3-1.3.2.source com os seguintes arquivos:

  • dynamips-0.2.14.zip
  • gns3-gui-1.3.2.zip
  • gns3-server-1.3.2.zip
  • iouyap-0.95.zip
  • vpcs-0.6.zip

Cada um destes arquivos zipados é um componente importante da suíte GNS3, por isso estarei tratando individualmente a instalação de cada um deles, destacando que os blocos de comandos abaixo devem ser realizados a partir do diretório GNS3-1.3.2.source onde foram extraídos os arquivos baixados na primeira etapa. O usuário pode utilizar sua conta tradicional de usuário, sendo que as execuções que requerem privilégios administrativos iniciam com "sudo".

###--- Instalação do Dynamips
cd GNS3-­1.2.1-­source
unzip dynamips-­0.2.14.zip
cd  dynamips­-0.2.14
mkdir build
cd build
cmake ..
make
sudo make install
sudo setcap cap_net_admin,cap_net_raw=ep /usr/local/bin/dynamips

###---Instalação do GNS3 Server
unzip gns3­-server-­1.2.1.zip
cd gns3­-server-­1.2.1
sudo python3 setup.py install

###--- Instalação do GNS3 GUI (Interface Gráfica)
unzip gns3­-gui-­1.2.1.zip
cd gns3­-gui­-1.2.1
sudo python3 setup.py install

Até este ponto o GNS3 já está instalado e preparado para emular as imagens dos roteadores Cisco a partir do emulador Dynamips. Agora basta executar o GNS3 através do comando gns3, destacando que ao executar o aplicativo no Ubuntu o usuário pode fixar facilmente seu ícone no menu lateral.

Na sequência iremos instalar os demais emuladores que fazem parte da ferramenta para que ela possa ser totalmente explorada. Repare no destaque em amarelo que durante a instalação do IOU é necessário que o usuário tenha uma conta no GitHub para conseguir sincronizar o diretório /iniparser.

###--- Instalação do IOU (+ Dependências)
sudo apt­-get install libssl1.0.0:i386
sudo ln ­-s /lib/i386-­linux-­gnu/libcrypto.so.1.0.0 /lib/libcrypto.so.4
sudo apt-­get install bison
sudo apt­-get install flex
sudo apt­-get install git
git clone http://github.com/ndevilla/iniparser.git
cd iniparser
make
sudo cp libiniparser.* /usr/lib/
sudo cp src/iniparser.h /usr/local/include
sudo cp src/dictionary.h /usr/local/include
cd ..
unzip iouyap-­0.95.zip
cd iouyap­-0.95
sudo make install
sudo cp iouyap /usr/local/bin

###--- Instalação do VPCS
unzip vpcs­-0.6.zip
cd vpcs-­0.6/src
./mk.sh
sudo cp vpcs /usr/local/bin/

Pronto! Depois de instalado o software, o diretório GNS3-1.3.2.source utilizado durante os procedimentos já pode ser removido. Há menos de 2 dias escrevi um post sobre a versão 1.3.1 e hoje já estamos discutindo a instalação da versão 1.3.2, por isso fiquem sempre atentos às novas versões disponibilizadas na GNS3 Jungle.

Samuel.

segunda-feira, 27 de abril de 2015

Correção na Ferramenta de Conversão do GNS 1.3.1

Olá Pessoal.

Recentemente foi lançada a nova versão 1.3.1 do emulador GNS3. Assim como na versão anterior, para baixá-lo é necessário que o usuário crie uma conta na plataforma da ferramenta, denominada GNS3 Jungle, através do link www.gns3.com. A nova versão está disponível para Windows , Linux e MAC, sendo que na plataforma da ferramenta, além do download do software, é disponibilizado um how-to explicando como fazer sua instalação nos diferentes sistemas operacionais. 


Na nova versão foram corrigidos alguns bugs, inclusive em relação ao processo de conversão dos tradicionais laboratórios .net (do antigo GNS 0.8.7) para o novo formato .gns3 utilizado pelo software desde sua versão 1.0. A boa notícia é que com essa correção na ferramenta de conversão já estou providenciando (e testando) para que todos os laboratórios avançados da segunda edição do livro "Laboratórios de Tecnologias Cisco em Infraestrutura de Redes" sejam devidamente convertidos para o novo formato .gns3. 

Esse processo de atualização dos laboratórios deve ocorrer nos próximos dias, embora ainda por tempo indeterminado, pensando naqueles que já têm o livro e os laboratórios instalados em suas máquinas, irei manter no repositório os arquivos legados do instalador do GNS3 0.8.7 e um pacote zipado com todos os laboratórios no antigo formato .net. 

Obs.: Notem que não irei disponibilizar as novas versões do GNS3 no repositório do blog porque fazê-lo, a partir da versão 1.0, seria uma violação dos novos termos de uso do software. No entanto, isso não é um problema porque a ferramenta continua gratuita, sendo necessário que seus usuários criem uma conta na plataforma do software.

Abraço.

Samuel.

sábado, 11 de abril de 2015

Roteamento Dinâmico no Linux Usando o Quagga

Olá Pessoal,

Quagga é um software open source para ambientes Unix (Linux, FreeBSD, Solaris, etc) que provê suporte aos principais protocolos de roteamento dinâmico abertos: RIPv2 (IPv4), RIPng (IPv6), OSPFv2 (IPv4), OSPFv3 (IPv6) e BGP-4 (famílias IPv4 e IPv6). O software especializado em roteamento foi desenvolvido por Kunishiro Ishiguro e atulmente está na versão 0.99.24. O Quagga é na verdade uma suíte composta por um daemon principal denominado zebra, além de outro daemons adicionais responsáveis por cada um dos protocolos de roteamento dinâmico, a destacar: ripdripngdospfdospf6d e bgpd, além de outros. Um detalhe é que o suporte a OSPFv3 para IPv6 ainda não é considerado estável porque possui problemas. 


Embora haja outras soluções open source de roteamento no Linux, a exemplo do BIRD e do XORP, o Quagga é uma das soluções mais populares porque sua interface de linha de comando é bastante similar ao sistema IOS da Cisco, o que torna sua operação natural para aqueles que já trabalham com caixas da Cisco. O objetivo deste artigo é listar os passos necessários para instalar o Quagga e manipular seus principais arquivos de configuração para reproduzir aquelas configurações de roteamento dinâmico tradicionalmente realizadas nos roteadores Cisco. Por isso nosso foco está na ferramenta em si, não nas configurações de roteamento propriamente ditas.

A primeira etapa consiste na instalação do Quagga, tarefa bastante simples e rápida através do APT em distribuições Linux baseadas no Debian:

root@Router:/# apt-get install quagga

Observação: Antes de fazer qualquer configuração de roteamento, é importante lembrar que o Linux não se comporta como roteador por padrão, negando todo o encaminhamento de pacotes entre redes distintas. Para instruir o kernel do Linux a permitir roteamento entre redes, tanto em ambientes IPv4 como IPv6, podemos utilizar os comandos abaixo:

root@Router:/# echo "1" > /proc/sys/net/ipv4/ip_forward
root@Router:/# echo "1" > /proc/sys/net/ipv6/conf/all/forwarding

Depois de instalado, os arquivos de configuração ficam armazenados em /etc/quagga. Uma boa prática para facilitar as configurações futuras é criar um diretório dentro do próprio diretório de configurações (/etc/quagga) com exemplos dos arquivos de configuração (disponíveis na documentação) para cada um dos daemons, procedimento que pode ser realizado através dos comandos abaixo:

root@Router:/# mkdir /etc/quagga/examples
root@Router:/# cp /usr/share/doc/quagga/examples/* /etc/quagga/examples

O primeiro arquivo de configuração importante que fica em /etc/quagga é denomindo daemons. Esse arquivo é bastante simples e deve ser editado para permitir aqueles daemons associados com os protocolos de roteamento dinâmico que o administrador pretende configurar na rede. Por exemplo, se queremos configurar o OSPF na rede, temos que ativar os daemons zebra (a base do Quagga) e o ospfd (responsável pelo OSPF).

#--- em /etc/quagga/daemons
# This file tells the quagga package which daemons to start
zebra=yes
bgpd=no
ospfd=yes
ospf6d=no
ripd=no
ripngd=no

Sempre que houver alguma alteração nesse arquivo ou nos demais arquivos de configuração do Quagga, o serviço deve ser reinicializado para que as alterações sejam aplicadas, procedimento que pode ser realizado através do comando abaixo:

root@Router:/# /etc/init.d/quagga restart

Os demais arquivos de configuração existentes no diretório /etc/quagga vão depender dos protocolos de roteamento dinâmico que serão utilizados na rede. Continuando com o exemplo do OSPF, precisamos criar dois arquivos de configuração que podem ser copiados a partir daquele diretório de exemplos. Além disso, é interessante dedicar um usuário/grupo para a ferramenta e é importante dar os devidos privilégios de acesso para que as configurações possam ser devidamente interpretadas pelo SO:

root@Router:/# cp /etc/quagga/examples/zebra.conf /etc/quagga
root@Router:/# cp /etc/quagga/examples/ospfd.conf /etc/quagga
root@Router:/# chown quagga.quagga /etc/quagga/*.conf
root@Router:/# chmod 640 /etc/quagga/*.conf

Se estivéssemos trabalhando com outros protocolos de roteamento seria necessário criar o respectivo arquivo de configuração associado ao daemon, por ex.: ripd.conf (RIP), ripngd.conf (RIPNG), bpgd.conf (BGP-4) e ospf6d.conf (OSPFv3). As configurações de roteamento dinâmico são realizadas através de edição nos arquivos de configuração (.conf). Outra opção é deixar o arquivo de configuração em branco para que as configurações sejam posteriormente realizadas via interface de linha de comando (acesso telnet), similar o que ocorre nas caixas Cisco. Cada daemon do Quagga, quando executado, passa a responder acessos telnet do localhost em suas respectivas portas padrões, que são:

  • 2601 - zebra 
  • 2602 - ripd
  • 2603 - ripng
  • 2604 - ospfd
  • 2605 - bgpd
  • 2606 - ospf6d

Ou seja, para configurar o OSPF na máquina Linux executando o Quagga basta editar manualmente o arquivo ospfd.conf ou mesmo realizar um acesso telnet ao localhost na porta 2604, lógica que vale para o daemon zebra na configuração de roteamento estático (e configurações gerais) e para os demais daemons associados aos outros protocolos de roteamento dinâmico:

root@Router:/# telnet localhost 2604

Por padrão, o acesso telnet aos daemons do Quagga somente são permitidos através do próprio localhost. Para permitir esse acesso através de outras máquinas da rede, o arquivo de configuração /etc/quagga/debian.conf tem que ser editado para permitir outros endereços. Por exemplo, no arquivo de configuração abaixo estamos permitindo acesso telnet aos daemons zebra e ospfd também a partir do host 192.168.100.11, além do localhost (127.0.0.1). 

#--- em /etc/quagga/debian.conf
vtysh_enable=yes
zebra_options=" --daemon -A 127.0.0.1 192.168.100.11"
bgpd_options=" --daemon -A 127.0.0.1 "
ospfd_options=" --daemon -A 127.0.0.1 192.168.100.11"
ospf6d_options="--daemon -A 127.0.0.1"
ripd_options=" --daemon -A 127.0.0.1"
ripngd_options="--daemon -A 127.0.0.1"
isisd_options=" --daemon -A 127.0.0.1"

Outro detalhe importante é que essa configuração via telnet através da linha de comando acaba sendo ruim na prática porque fica fragmentada por daemon, ou seja, para configurações relacionadas a rotas estáticas temos que realizar um acesso telnet na porta 2601 (zebra), enquanto que para realizar as configurações do OSPF temos que fazer outro acesso telnet na porta 2604 (ospfd). Para contornar essa dificuldade, existe uma ferramenta integrada de linha de comando denominada vtysh que permitimos na primeira linha de configuração do exemplo anterior (vtysh_enable=yes).

A ferramenta vtysh salva todas as configurações realizadas via linha de comando em um arquivo único denominado Quagga.conf. Para organizar melhor as configurações dos daemons individuais, podemos definir nas configurações do vtysh que as configurações dos daemons sejam salvas nos respectivos arquivos de configuração, ou seja, uma configuração de OSPF ficará salva apenas no arquivo ospfd.conf e assim por diante. Para fazê-lo é necessário editar o arquivo vtysh.conf e comentar sua primeira linha que permite a integração da configuração:

#--- em /etc/quagga/vtysh.conf
!service integrated-vtysh-config
hostname Quagga-Router
username root
password SENHA

Observação.: Uma dica útil em relação à ferramenta vtysh é que, por padrão, a cada vez que o administrador executa um comando aparece a palavra "END" na tela, o que requer que seja pressionada a tecla "q" para continuar. Para evitar que isso aconteça, basta incluir a seguinte linha no arquivo /etc/environment:  VTYSH_PAGER=more

Apesar das configurações poderem ser realizadas via linha de comando através de acesso remoto (telnet ou vtysh) aos daemons do Quagga, de maneira similar ao que ocorre nas caixas Cisco, particularmente acho que é ainda mais prático fazer essas configurações diretamente nos arquivos de configuração (.conf), afinal a sintaxe é a mesma. Por exemplo, com base no cenário apresentado na figura abaixo, para realizar uma configuração simples do OSPF podemos editar o arquivo /etc/quagga/ospfd.conf da seguinte maneira:


#--- em /etc/quagga/ospfd.conf
!
hostname Quagga-Router
password SENHA
!
interface eth0
  description "Link to Router B" 
  ip address 192.168.200.1/30
  link-detect
!
interface eth1
  description "Link to Network 192.168.100.0/24"
  ip address 192.168.100.1/24
  link detect
!
router ospf
  network 192.168.200.0/30 area 0
  network 192.168.100.0/24 area 0
!

Por fim, vale reforçar que qualquer alteração nos arquivos de configuração requer a reinicialização do serviço Quagga e seus daemons: /etc/init.d/quagga restart. Agora é com vocês...

Samuel.