quinta-feira, 12 de dezembro de 2013

Laboratório de Roteamento Estático IPv6 no Linux

Olá Pessoal.

No artigo anterior intitulado "Laboratório de Roteamento Estático no Linux" o leitor aprendeu a configurar roteamento estático no Linux. Pois bem, agora chegou a hora do leitor aprender a configurar roteamento estático em redes IPv6 no Linux! Esse artigo irá utilizar a mesma topologia de rede, no entanto todo o plano de endereçamento será baseado em IPv6 (vide figura abaixo). 

Continuaremos a trabalhar em uma topologia que possui uma rede de longa distância conectando duas unidades remotas, uma com 3 sub-redes locais e outra com 2 sub-redes locais. Estarei utilizando a rede 2001:db8:cafe:ffff::/127 na longa distância (WAN), uma boa prática recomendada na RFC 6164, enquanto que as demais serão sub-redes /64.


Seguindo a mesma lógica de raciocínio do artigo anterior (e do livro prático de laboratórios), abaixo trago duas tabelas organizando algumas informações importantes para a configuração do roteamento estático. A primeira tabela apresenta o mapeamento das redes diretamente conectadas nas interfaces dos roteadores, enquanto que a segunda tabela traz uma relação das rotas que precisamos incrementar através da configuração de roteamento estático. 


Preenchidas essas tabelas fica fácil enxergar que no roteador n1-LinuxRouter1 é necessário adicoinar as redes 2001:db8:cafe:8::/64 e 2001:db8:cafe:9::/64; e que no roteador n2-Li;nuxRouter2 é necessário adicionar as redes 2001:db8:cafe:1::/64, 2001:db8:cafe:2::/64 e 2001:db8:cafe:3::/64. Mas antes de fazer qualquer configuração de roteamento estático é importante lembrar que o Linux não se comporta como roteador por padrão, negando todo o encaminhamento de pacotes entre redes distintas. 

Por isso, até esse momento nem mesmo as redes diretamente conectadas em cada unidade remota conseguem se comunicar, mesmo com informações automáticas nas tabelas de roteamento. O comando para instruir o kernel do Linux a fazer roteamento e permitir o tráfego inter-rede deve ser realizado em ambos os roteadores:

nX-LinuxRouterX# echo "1" > /proc/sys/net/ipv6/conf/all/forwarding

Com esse comando as redes diretamente conectadas em cada unidade já passam a se comunicar, no entanto ainda não há comunicação entre as redes das unidades remotas porque cada roteador somente conhece suas redes. Para viabilizar essa comunicação iremos configurar roteamento estático em ambos os roteadores, alimentando suas tabelas de roteamento para que seja possível fazer o encaminhamento. Os comandos necessários para configurar o roteamento estático são trazidos abaixo, reparem que estamos nos balizando na tabela de incremento de rotas anteriormente preenchida para organizar as informações:

n1-LinuxRouter1# route -A inet6 add 2001:db8:cafe:8::/64 gateway 2001:db8:cafe:ffff::1
n1-LinuxRouter1# route -A inet6 add 2001:db8:cafe:9::/64 gateway 2001:db8:cafe:ffff::1

n2-LinuxRouter2# route -A inet6 add 2001:db8:cafe:1::/64 gateway 2001:db8:cafe:ffff::0
n2-LinuxRouter2# route -A inet6 add 2001:db8:cafe:2::/64 gateway 2001:db8:cafe:ffff::0
n2-LinuxRouter2# route -A inet6 add 2001:db8:cafe:2::/64 gateway 2001:db8:cafe:ffff::0

Apenas para constar, essa mesma configuração poderia ser feita através do comando "ip" ao invés do comando "route". Nesse caso, a configuração ficaria da seguinte forma:

n1-LinuxRouter1# ip -6 route add 2001:db8:cafe:8::/64 via 2001:db8:cafe:ffff::1
n1-LinuxRouter1# ip -6 route add 2001:db8:cafe:9::/64 via 2001:db8:cafe:ffff::1

n2-LinuxRouter2# ip -6 route add 2001:db8:cafe:1::/64 via 2001:db8:cafe:ffff::0
n2-LinuxRouter2# ip -6 route add 2001:db8:cafe:2::/64 via 2001:db8:cafe:ffff::0
n2-LinuxRouter2# ip -6 route add 2001:db8:cafe:3::/64 via 2001:db8:cafe:ffff::0

Pronto, é só isso! Mais uma vez vale relembrar que uma rota é uma tupla composta por duas informações: (rede adicionada, próximo salto). Para finalizar o artigo, abaixo trago as saídas das tabelas de roteamento de ambos os roteadores após essa configuração:



Adendo de 02/02/2014:

No dia 31/jan (sexta-feira) participei da sétima edição da Campus Party Brasil a convite dos amigos do NIC.br, oportunidade em que ministrei uma "palestra" sobre Roteamento Estático IPv6 no Linux. A apresentação consistiu exatamente na resolução do laboratório apresentado nesse artigo, por isso estou compartilhando com vocês a gravação da minha palestra.


Abraço.

Samuel.

4 comentários:

  1. Samuel, estou tentando reproduzir o experimento na máquina virtual do NIC.br, CursoBásicoIPV6, consigo adicionar as rotas no roteador 1 sem problemas, porém quando tento executar os comandos no roteador 2, aparece o erro:
    SIOCADDRT: Invalid argument
    Já conferi os comandos milhares de vezes e não encontro o erro. Será que você pode me ajudar?

    ResponderExcluir
    Respostas
    1. Olá Silvia,

      Pode ser erro de sintaxe ou você pode estar inserindo endereços de rede que já existem na tabela de roteamento do Linux. Fica difícil ajudá-la só com essas informações, mas posso verificar o seu laboratório se você puder enviá-lo para o meu e-mail (shbbrito@labcisco.com.br).

      Samuel.

      Excluir
  2. Ola Professor Samuel
    Bom Dia

    Estou fazendo as configurações deste laboratório no VBox
    Posso colocar os comandos de roteamento no arquivo /etc/profile?


    Obrigado!

    ResponderExcluir
    Respostas
    1. É possível inserir os comandos em qualquer arquivo de inicialização, como por exemplo o "/etc/rc.local". Também é comum criar um script específico com configurações de roteamento e depois torná-lo um arquivo de incialização através do comando: "update-rc.d nome-script defaults".

      Excluir