sexta-feira, 10 de fevereiro de 2012

Emulando JunOS no GNS3

Emulando JunOS no GNS3 – Parte 1
Este artigo explica como emular o JunOS em uma máquina virtual utilizando o Qemu no Windows. Na verdade, esse tutorial é uma mistura do HOWTO do Olive com algumas alterações para o Windows.
Depois de pesquisar muito no Google, percebemos a carência de artigos em português sobre o assunto, mesmo nos sites e fóruns mais conhecidos sobre tecnologias cisco. Esse é um dos principais fatores que fazem os estudantes desistirem de configurar o GNS3 para emular o JunOS. Outro fator importante com certeza é a complexidade, que é muito superior e mais trabalhosa comparada à emulação de equipamentos Cisco, onde só configuramos o caminho da IOS e geralmente já está funcionando.
A tarefa se resume em instalar o Qemu, instalar o FreeBSD na máquina virtual, instalar o JunOS no FreeBSD, criar a imagem e finalmente configurá-la no GNS3. O apelido dado ao JunOS rodando em um PC ao invés de um roteador é “Olive”, esse termo normalmente é confundido com algum tipo de software. Saiba mais sobre esse assunto nesse link. Vamos começar?
Arquivos Necessários
Todos os arquivos exceto o GNS3 já possuem versões atualizadas, decidimos instalar essas versões por motivos de compatibilidade:
- GNS3 [link] – utilizamos a versão 0.7.4.
- Qemu [link] – versão 0.11.0
- FreeBSD [link] – Baixar uma versão acima da 4.5 pois as versões anteriores não suportam a interface Intel e1000 (driver da porta emX).
- FileZilla [link] – Versão 0.9.39
- JunOS – Utilizamos a versão jinstall-8.5R1.14-domestic-signed.tgz.
Instalando o Qemu
- Descompacte o arquivo qemu-0.11.0.patched.win32.zip em uma pasta de sua escolha. Não é necessário instalação, ele já está pronto para o uso.
- O Qemu é um emulador cli, para utilizar os comandos “qemu” e” qemu-img”, é necessário abrir o MS-DOS e entrar na pasta onde os arquivos foram descompactados.
 - Vamos criar a imagem para instalar o FreeBSD, utilizamos  o formato qcow2 com 4GB de espaço em disco:
C:\Qemu> qemu-img create -f qcow2 Multihop.img 4G
Note que o Qemu criou o arquivo “Multihop.img” dentro da pasta do Qemu:
C:\Qemu> dir *.img
Agora vamos instalar o FreeBSD na imagem criada no passo anterior,  copie o arquivo 4.11-RELEASE-i386-miniinst.iso para a pasta do Qemu e execute o comando abaixo, o parâmetro –m informa a quantidade de memória que será utilizada para a máquina virtual:
C:\Qemu> qemu -m 256 -hda Multihop.img -cdrom 4.11-RELEASE-i386-miniinst.iso \ -boot d –localtime
Vai aparecer a tela de instalação do FreeBSD, aperte enter e aguarde a próxima tela:

Na tela seguinte, escolha “Skip kernel configuration and continue with installation”:

Escolha a instalação Standard:

Aperte <Enter> na próxima tela, abrirá a tela do FDISK Partition Editor, aperte a tecla <A> e a tecla <Q> para iniciar a configuração:




Emulando JunOS no GNS3 – Parte 2
Escolha “Standard: Install a standard MBR (no boot manager)”:

Aperte <Enter> na próxima tela e vai abrir o FreeBSD Disklabel Editor, aperte <C> para criar a primeira partição, primeiro vamos criar a raiz “/” com 1024M, após apertar <C>, o FreeBSD vai perguntar o tamanho da partição, digite “1024M”, na tela seguinte, ele pergunta o tipo de partição, responda “FS – A File system”, e por último, ele pergunta o ponto de montagem, escreva “/” e aperte enter a tela vai ficar assim:

Crie mais uma partição “/config” com 12M, seguindo os mesmos passos acima, depois crie uma partição com 1024M, porém invez de escolher “FS – a file system” Escolha “Swap” para criar a partição de memória virtual, e por ultimo, aperte <C>, vai aparecer a tela de escolha do tamanho da partição, aperte <Enter> para ele pegar o restante,  escolha “FS – a file system” e crie a partição “/var”, sua tela deve ficar exatamente assim:

Aperte <Q> para finalizar e na próxima tela escolha “User – Average user – binary and doc only” e aperte <espaço>:

Na próxima tela escolha [No] para a pergunta “Would you like to install the FreeBSD ports collection?” [No]
Aperte <tab> e escolha [OK] e prossiga para a próxima tela, e responda “CD/DVD”:

Ele vai perguntar se você tem certeza que deseja continuar, responda [Yes] e prossiga a instalação:

Após concluir a instalação responda [No] para todas as perguntas até chegar na parte de setar o password do root:
Would you like to configure any Ethernet or SLIP/PPP network devices? [No]
Do you want this machine to function as a network gateway? [No]
Do you want to configure inetd? [No]
Do you want to have anonymous FTP access to this machine? [No]
Do you want to configure this machine as an NFS client? [No]
Do you want to select a default security profile? [No]
Customize your system console settings? [No]
Do you like to set this machine’s time zone now? [No]
Enable Linux binary compatibility? [No]
Does this system have a non-USB mouse? [No]
Install  FreeBSD package colletion? [No]
Add initial user accounts to the system? [No]
Adicione o password e responda [No] novamente na próxima tela, agora você vai voltar para a tela inicial de instalação do FreeBSD, aperte <tab> e escolha “Exit Install”. Confirme e aguarde o reboot do sistema, após o reboot, ele vai voltar para a tela inicial de instalação, aperte “Ctrl-Alt-2” e escreva  “quit”.

Concluímos a instalação do FreeBSD, agora vamos para a instalação do Junos.


Emulando JunOS no GNS3 – Parte 3

- Instalação do JunOS
Vamos instalar o JunOS no nosso FreeBSD, utilizamos a imagem JunOS 8.5R1.14, você pode tentar outras imagens, porém espere por resultados diferentes do tutorial. Vamos iniciar o FreeBSD com a placa de rede virtual Intel e1000.
qemu -m 256 -hda Multihop.img -boot c -localtime \
-net nic,macaddr=00:aa:00:60:01:01,model=e1000 -net user


Após iniciar o sistema, efetue o login como “root” e digite o password que foi definido na instalação, agora utilize o comando dhclient para pegar um IP e um gateway:
dhclient em0
netstat -r


Use o “ifconfig” e perceba que o FreeBSD pegou um endereço IP, e o endereço de gateway 10.0.2.2/24. No meu caso foi definido o IP 10.0.2.15/24 para a máquina virtual.
Endereço da máquina virtual:     10.0.2.15/24
Endereço da máquina real:          10.0.2.2/24
Agora que a conectividade entre as duas máquinas estão funcionando, temos que transferir o JunOS para a máquina virtual, no tutorial que utilizamos do blog do GNS3, o criador do tutorial Jeremy Grossmann utilizou o SCP no Mac OS X, porém decidimos utilizar FTP.  Instale algum servidor de FTP de sua escolha, decidimos utilizar o FileZilla. Após instalado, mantenha as configurações padrões:


Agora vamos criar o usuário do FreeBSD, no menu escolha Edit/Users, na tela de usuários, clique em “Add” e crie o login desejado, após isso, o programa vai pedir para mostrar o caminho onde os arquivos vão ser disponibilizados, configure e clique em OK.


Copie o arquivo jinstall-8.5R1.14-domestic-signed.tgz para a pasta especificada no passo anterior. Agora a máquina virtual está pronta para baixar o arquivo, execute os seguintes comandos no FreeBSD:
# ftp
ftp> ftp
(to) 10.0.2.2
login: Multihop
(Enter)

Agora estamos logados no servidor FTP, primeiro vamos alterar o modo de transmissão para binário, caso você esqueça desse comando, o arquivo não vai ser descompactado pois virá corrompido,  vamos mudar a pasta local para /var/tmp e pegar o arquivo:
ftp> binary
ftp> lcd /var/tmp
ftp> get jinstall-8.5R1.14.-domestic-signed.tgz
ftp> bye






Emulando JunOS no GNS3 – Parte 4

Se efetuarmos a instalação agora, será gerado um erro e a imagem não poderá ser instalada, este arquivo possui um binário chamado checkpic, temos que copiar o arquivo /usr/bin/true no arquivo checkpic, após a alteração, vamos recalcular o MD5 e o SHA1 checksums, compactar o arquivo novamente, e instalá-lo com o pkg_add.
# cd /var/tmp
# mkdir jinst-signed
# cd jinst-signed
# tar zxvf ../jinstall-8.5R1.14-domestic-signed.tgz
# mkdir jinst
# cd jinst
# tar zxvf ../jinstall-8.5R1.14-domestic.tgz
# mkdir pkgtools
# cd pkgtools
# tar zxvf ../pkgtools.tgz
# cd bin
# cp /usr/bin/true ./checkpic
# cd ..
# tar zcvf ../pkgtools.tgz *
# cd ..
# rm -rf pkgtools
# tar zcvf ../jinstall-8.5R1.14-domestic.tgz *
# cd ..
# rm -rf jinst
# md5 -q jinstall-8.5R1.14-domestic.tgz > jinstall-8.5R1.14-domestic.tgz.md5
# sha1 -q jinstall-8.5R1.14-domestic.tgz > jinstall-8.5R1.14-domestic.tgz.sha1
# tar zcfv /var/tmp/JunOS-Multihop.tgz *
# pkg_add -f /var/tmp/JunOS-Multihop.tgz

Depois do término da instalação, desligue a máquina virtual com o comando halt, aperte “Crtl+Alt+2” e escreva quit. O passo anterior foi uma pré-instalação, o jinstall foi instalado no bootstrap da máquina virtual, os roteadores Juniper redirecionam todas as saidas para a porta serial,  então vamos executar a máquina virtual, e apertar “Ctrl+Alt+3” para alterar para a porta serial:
qemu -m 256 -hda Multihop.img -boot c -localtime
Aperte <Ctrl+Alt+3> e aguarde
Perceba que a instalação do Junos inicia automaticamente:

Logue como root e perceba que o JunOS foi instalado com sucesso. Agora vamos criar a imagem para adicionar no GNS3, desligue a maquina virtual apertando “Ctrl+Alt+2” e digitando o comando quit. Agora vamos criar 3 imagens de JunOs chamadas R1,R2 e R3. No MS-DOS digite o comando:
C:\Qemu>qemu-img.exe create -b Multihop.img -f qcow2 R1.img
C:\Qemu>qemu-img.exe create -b Multihop.img -f qcow2 R2.img
C:\Qemu>qemu-img.exe create -b Multihop.img -f qcow2 R3.img

Agora entre no GNS e clique em Edit/Preferences. Escolha Qemu e clique na aba JunOS e mostre o caminho das imagens criadas, adicione 256 de RAM e clique em “Use Kqemu” para habilitar a aceleração da máquina virtual:
A
Aplique e dê OK, agora vamos testar, adicione um roteador Juniper e outro Cisco, interligue a placa em0 do Juniper com a FastEthernet do Cisco e vamos verificar se existe conectividade:

Cisco:
R1#ena
R1#conf t
R1#int FastEthernet0/0
R1#ip add 192.168.0.2 255.255.255.0
R1#no shut

Juniper
root@% cli
root> configure
root# set interfaces em0 unit 0 family inet address 192.168.0.1/24
root# set system root-authentication plain-text-password
root# commit
root# exit
root> ping 192.168.0.2

Comunicação OK :) :

Referências:
http://blog.gns3.net/2009/10/olive-juniper/
http://juniper.cluepon.net/index.php/Olive
http://inetpro.org/wiki/Using_QEMU_with_Olive_to_emulate_Juniper_Routers

Sem comentários:

Enviar um comentário