Roteiro de Práticas de Roteamento IGP usando Quagga RIP O objetivo desse roteiro é mostrar como o pacote Quagga pode ser utilizado para construir roteadores com suporte a protocolos de roteamento utilizando Linux. No Linux, as principais funções de roteamento estão implementadas ao nível do Kernel. Contudo, os protocolos de roteamento são considerados aplicações de mais alto nível, e não estão no Kernel. O Quagga não altera as funções de roteamento do Kernel do Linux. Ele é um pacote de alto nível que introduz os protocolos de roteamento e uma interface de gerenciamento de alto nível. A função do Quagga é preencher de forma automática as tabelas de roteamento. É possível fazer um roteador com Linux sem utilizar o Quagga. Nesse caso, as tabelas de roteamento deverão ser configuradas de forma manual.
Pacote Quagga telnet 2602 2604 2605 ripd ospfd bgpd administrador telnet 2601 Zebra rotas Kernel do Linux (Roteamento) roteador O "Quagga Routing Suite" é um conjunto de programas que permite transformar um equipamento com sistema operacional linux em um roteador com suporte aos protocolos de roteamento mais utilizados no mundo IP. Os programas necessários para instalação do Quagga podem ser obtidos no site oficial do projeto: www.quagga.net. O projeto quagga é oriundo de um projeto mais antigo, denominado zebra. Trata-se, na verdade, do mesmo projeto. Quando o projeto ainda se chamava zebra, ele contava com menos participantes. Quando o projeto cresceu, ele foi renomeado, e passou a contar com a contribuição de uma comunidade mais ampla. Como tantos outros programas para linux, o quagga pode ser instalado de duas formas: compilandose os programas fonte ou instalando pacotes já compilados (por exemplo, no formato rpm). O quagga traz o seguinte conjunto de programas: zebra: efetua a comunicação entre os protocolos de roteamento e o kernel do Linux. Não importa qual protocolo de roteamento esteja sendo usado, o programa "zebra" precisará estar sempre rodando. Se o zebra estiver inativo, não haverá criação de rotas nas tabelas de rotemento do linux. É possível acessar esse deamon de maneira remota fazendo-se um telnet na porta TCP 2601. Através do telnet é possível, por exemplo, verificar as tabelas de roteamento remotamente. ripd: implementa o protocolo ripv1 e ripv2 para IPv4. Os parâmetros do rip podem ser configurados remotamente por telnet, através da porta TCP 2602. ospfd: implementa o protocolo ospfv2 para IPv4. Os parâmetros do ospf podem ser configurados remotamente por telnet, através da porta TCP 2604. bgpd: implementa o protocolo bgp para IPv4. Os parâmetros do bgp podem ser configurados remotamente por telnet, através da porta TCP 2605. O quagga traz ainda outros protocolos para IPv6, que não serão utilizados nessa prática.
Programas do Quagga para RIP telnet 2602 ripd administrador telnet 2601 Zebra ripd.conf rotas Kernel do Linux (Roteamento) zebra.conf roteador O "Quagga Routing Suite" utiliza dois programa para implementar roteadores com suporte ao protocolo de roteamento RIP: zebra e ripd. A sintaxe dos comandos do quagga é muito similar aos equipamento que seguem o IOS da cisco. Após dar telnet em um programa, tem-se acesso a um conjunto de comandos que podem ser listados com "?". Sempre que se tiver dúvidas sobre um comando, basta digitar "?" que será fornecido a lista de parâmetros disponíveis para o comando. Por exemplo, se você digitar no zebra: >> show? Serão fornecidas duas opções para completar o comando: route ou ip_forward. A primeira opção mostra as tabelas de roteamento e a segundo mostra se o roteamento está habilitado ou não. Os comandos disponíveis inicialmente via telnet não suportam alterações no roteador, apenas visualização da configuração corrente. Para poder alterar a configuração do roteador (por exemplo, habilitar remotamente o roteamento) é necessário digitar o comando "enable". Após o comando "enable" uma lista mais ampla de opções estará disponível quando se digitar "?".
RIP:Configuração do Cenário (passo 1: configurar VM1) 10.13.14.0/25 vlan 11 10.13.14.128/25 vlan 12 11.13.14.0/25 vlan 21 11.13.14.128/25 vlan 22 10.13.14.1/25.11.12 10.13.14.129/25 11.13.14.1/25.21.22 11.13.14.129/25 VM1 VM2 20.13.14.1.2 20.13.14.2 12.13.14.1/24 12.13.14.2/24.2 Código estudante: (101) 11 12 13 14 - X vlan 2 12.13.14.0/24 O objetivo deste primeiro cenário é ilustrar a utilização do Quagga para configurar roteadores com suporte ao protocolo RIP. Para execução dessa prática será necessário criar duas máquinas virtuais, denominadas de VM1 e VM2 na figura. Conforme mostra o cenário, existem 5 redes interconectadas por dois roteadores. Para simular várias redes distintas, nós utilizaremos VLANs, de forma semelhante ao que foi feito no módulo da disciplina de TCP/IP. 1) Preparação do roteador VM1: 1.a) NA ESPEC. Crie uma pasta no seu diretório na espec, e inicialize uma máquina virtual com o nome VM1 > mkdir quagga > cd quagga > linux32.redes VM1 1.b) NA VM1. Configure o endereço IP na máquina virtual para ganhar acesso a espec. Para evitar conflitos de endereço, utilize parte do seu código de estudante para formar o endereço. Supondo que seu código de estudante é (101) 11 12 13 14 - X, defina o IP da seguinte forma: > ifconfig 20.13.14.1/8 1.c) NA VM1. Faça o download do pacote com os programas necessários para prática > wget 20.0.0.1/~jamhour/pacotes/quagga_rpm.tar.gz > tar -xzf quagga <TAB> > cd quagga <TAB> >./install.sh 1.d) NA VM1. Configure as VLANs, os endereços IP e habilite o roteamento > vconfig add 2 > ifconfig.2 12.13.14.1/24 up > vconfig add 11 > ifconfig.11 10.13.14.1/25 up > vconfig add 12 > ifconfig.12 10.13.14.129/25 up > sysctl -w net.ipv4.ip_forward=1
RIP:Configuração do Cenário (passo 2: configurar VM2) 10.13.14.0/25 vlan 11 10.13.14.128/25 vlan 12 11.13.14.0/25 vlan 21 11.13.14.128/25 vlan 22 10.13.14.1/25.11.12 10.13.14.129/25 11.13.14.1/25.21.22 11.13.14.129/25 VM1 VM2 20.13.14.1.2 20.13.14.2 12.13.14.1/24 12.13.14.2/24.2 Código estudante: (101) 11 12 13 14 - X vlan 2 12.13.14.0/24 2) Preparação do roteador VM2: 2.a) NA ESPEC. Crie uma pasta no seu diretório na espec, e inicialize uma máquina virtual com o nome VM1 > mkdir quagga > cd quagga > linux32.redes VM2 2.b) NA VM2. Configure o endereço IP na máquina virtual para ganhar acesso a espec. Para evitar conflitos de endereço, utilize parte do seu código de estudante para formar o endereço. Supondo que seu código de estudante é (101) 11 12 13 14 - X, defina o IP da seguinte forma: > ifconfig 20.13.14.2/8 2.c) NA VM2. Faça o download do pacote com os programas necessários para prática > wget 20.0.0.1/~jamhour/pacotes/quagga_rpm.tar.gz > tar -xzf quagga <TAB> > cd quagga <TAB> >./install.sh 2.d) NA VM2. Configure as VLANs, os endereços IP e habilite o roteamento > vconfig add 2 > ifconfig.2 12.13.14.2/24 up > vconfig add 21 > ifconfig.21 11.13.14.1/25 up > vconfig add 22 > ifconfig.22 11.13.14.129/25 up > sysctl -w net.ipv4.ip_forward=1
RIP: Verificação das Rotas (passo 3: rotas estáticas em VM1 e VM2) 10.13.14.0/25 vlan 11 10.13.14.1/25.11 20.13.14.1 10.13.14.128/25 vlan 12 11.13.14.0/25 vlan 21.12 10.13.14.129/25 11.13.14.1/25.21 VM1.2 20.13.14.2 12.13.14.1/24 vlan 2 12.13.14.0/24 11.13.14.128/25 vlan 22.22 11.13.14.129/25 VM2 12.13.14.2/24.2 3) Verificação das rotas : 3.a) NA VM1. Verifique o conjunto de rotas estáticas na VM1. Observe que essas rotas foram criadas automaticamente quando da atribuição dos endereços IP às interfaces do roteador. Após verificar as rotas, salve-as em um arquivo txt usando os comandos a seguir: route -n route n > rotasestaticasvm1.txt 3.b) NA VM2. Repita o mesmo procedimento na VM2 route -n route n > rotasestaticasvm2.txt
RIP: Configuração do RIP (passo 4: inicializar o Zebra) Exemplo de arquivo de configuração do zebra hostname VM1 password zebra enable password zebra Descrição das interfaces interface lo Interface de loopback interface sit0 Interface com suporte a multicast Rota default estática ip route 0.0.0.0/0 203.181.89.241 log file zebra.log /etc/quagga/zebra.conf.sample 4) Inicializar e Testar o Zebra Todos os programas do quagga utilizam um arquivo texto de inicialização, que contém parâmetros que controlam o funcionamento do programa. Após a instalação do quagga, um arquivo modelo para cada programa é criado no diretório /etc/quagga. O arquivo modelo para o zebra está ilustrado na figura acima. As linhas que começam com são comentários. No arquivo modelo, apenas as linhas que dão o nome ao roteador e definem a senha de acesso via telnet não estão comentadas. 4.a) Na VM1: inicialize o zebra cd /etc/quagga zebra d f zebra.conf.sample OBS. O parâmetro d indica que o zebra deve rodar como deamon. Sem ele, o zebra irá travar o terminal da VM. O parâmetro f indica qual arquivo de configuração deverá ser usado. Sem ele, o arquivo default /etc/quagga/zebra.conf será usado. 4.b) Na VM2: inicialize o zebra cd /etc/quagga zebra d f zebra.conf.sample 4.c) Na espec. Verifique se o zebra está rodando dando um telnet nas VMs. Explore alguns comandos para verificar o funcionamento do zebra. telnet IP_VM1 2601 Password: zebra Router> show ip? Router> show ip route Router > show ip forwar<tab> Router> exit
RIP: Configuração do RIP (passo 5: inicializar o rip) CONFIGURACAO DA VM1 hostname ripd password zebra log stdout interface interface.11 interface.12 router rip redistribute kernel redistribute static network 0.0.0.0/0 line vty CONFIGURACAO DA VM2 hostname ripd password zebra log stdout interface interface.21 interface.22 router rip redistribute kernel redistribute static network 0.0.0.0/0 line vty 5) Configurar e Inicializar o RIP (ripd) Para interpretar os arquivos de configuração mostrados na figura, faça referência ao cenário descrito no passo 3 deste roteiro. O arquivo de configuração do RIP é bastante simples. Basicamente, ele traz as opções de autenticação para cada interface. Para que as mensagens RIP sejam aceitas por outros roteadores, as opções de autenticação precisam ser idênticas. As opções de redistribuição indicam que além das rotas rip recebidas, as rotas estáticas e aquelas criadas pelo kernel também serão distribuídas. A opção network indica que serão aceitas rotas oriundas de qualquer range de endereço IP. 5.a) Na VM1: crie um arquivo /quagga/etc/ripd.conf idêntico ao da figura e inicialize o ripd > cd /etc/quagga > vi ripd.conf <INSERT>... Copie o texto da figura... salve com <ESC>wq > ripd d f ripd.conf 5.b) Na VM2: crie um arquivo /quagga/etc/ripd.conf idêntico ao da figura e inicialize o ripd > cd /etc/quagga > vi ripd.conf... Copie o texto da figura... salve com <ESC>wq > ripd d f ripd.conf 5.c) NA espec: verifique a configuração dos roteadores rip > telnet IP_VM 2602 > password zebra > enable > show ru<tab> > exit 5.d) Na VM1: verifique e salve as rotas criadas na VM1 route n route n > rotasripvm1.txt 5.e) Na VM2: verifique e salve as rotas criadas na VM2 route n route n > rotasripvm2.txt
Relatório RIP Responda as seguintes perguntas em um arquivo txt: A) Quais as rotas que apareceram em VM1 antes do RIP B) Quais as rotas que apareceram em VM2 antes do RIP C) Quais as rotas que apareceram em VM1 depois do RIP D) Quais as rotas que apareceram em VM2 depois do RIP Para entrega desse relatório, crie um arquivo texto com as respostas de A até D. Para ilustrar as rotas, use a mesma sintaxe que você obteve com o comando route n. Preferencialmente, copie o texto da rotas diretamente dos arquivos criados nos passos 3a, 3b, 5d e 5e. Para transferir os arquivos de rota para espec utilize o seguinte comando na VM: scp *.txt login_espec@20.0.0.1:. Não esqueça de sair das máquinas virtuais com halt.