Páginas

sábado, 16 de novembro de 2013

Anúncio de Prefixos IPv6 em Roteadores Linux

Olá Pessoal.

Em outra oportunidade escrevi um artigo no blog intitulado "Autoconfiguração de Endereços IPv6 (SLAAC)" explicando como é possível que as redes IPv6 sejam automaticamente configuradas sem que o administrador tenha que realizar nenhuma configuração nas máquinas. Utilizei a figura abaixo para descrever que o processo de autoconfiguração dos endereços consiste basicamente em duas etapas: (i) configuração do prefixo e (ii) configuração do sufixo de host. A primeira etapa é possível porque os hosts aprendem o prefixo da rede através das mensagens ICMPv6 Tipo 134 (RA) anunciadas pelos roteadores.


Recentemente também escrevi alguns artigos explicando como manipular o comportamento padrão dos sistemas operacionais para formação do seu sufixo de host. Pois bem, agora chegou a vez de darmos destaque ao processo de configuração do roteador para permitir o anúncio dos prefixos que serão utilizados pelas máquinas para formar seu endereço através do mecanismo SLAAC.

Normalmente nos roteadores do tipo "caixa", a exemplo de roteadores Cisco, as mensagens ICMPv6 Tipo 134 (RA) são periodicamente enviadas para todos os nós através do endereço ff02::1 (multicast-all-nodes) com o anúncio dos prefixos configurados nas interfaces desses roteadores, o que torna desnecessária qualquer configuração para ter as funcionalidades básicas em operação.

No entanto, é importante ter em mente que máquinas executando o Linux, mesmo que tenham a capacidade de roteamento, não se comportam como roteadores por padrão. Ou seja, o Linux não permite o encaminhamento de tráfego entre sub-redes nem emite as mensagens RA para informar aos hosts que ele é o gateway da rede. No entanto, é possível instruir seu kernel a permitir o roteamento por meio da seguinte linha de comando:

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

Isso mesmo, sei que os leitores familiarizados com a configuração de roteadores baseados em Linux devem ter percebido que esse é o comando correspondente ao seguinte comando que era utilizado no IPv4 para permitir o encaminhamento de tráfego entre sub-redes (roteamento):

root@Router:/# echo "1" > /proc/sys/net/ipv4/ip_forward

Como exemplo do processo de configuração de um roteador Linux para fazer o anúncio dos prefixos IPv6 para toda uma rede local (link), estarei utilizando como base o cenário da figura abaixo. Reparem que o roteador possui duas interfaces de rede (eth0 e eth1), cada uma em sua respectiva sub-rede, sendo que a interface eth0 possui o endereço 2001:db8:cafe:1::1/64, ou seja, faz parte da sub-rede 2001:db8:cafe:1::/64 (verde). Nesse exemplo não estamos preocupados com a sub-rede da interface eth1 (azul) e, para verificar se as configurações estão corretas, nossa referência será a máquina n4 que também é membro da sub-rede 2001:db8:cafe:1::/64 (verde).



Quanto a configuração do anúncio periódico das mensagens RA no roteador Linux, primeiro é necessário instalar o serviço RADVD (Router Advertisement Daemon) e, depois, configurá-lo utilizando o arquivo que normalmente fica localizado em /etc/radvd.conf. Para instalar o RADVD em distribuições baseadas no Debian basta entrar com o comando "sudo apt-get install radvd". Feito isso, é necessário configurar o arquivo radvd.conf, ativar o roteamento IPv6 e inicializar o serviço radvd para que o Linux faça o anúncio periódico do prefixo IPv6 através das mensagens RA (134). O leitor pode observar todas essas configurações na figura abaixo:



Se tudo estiver correto com a configuração do roteador Linux, então as máquinas da rede já estarão recebendo os anúncios do(s) prefixo(s) IPv6 e serão capazes de autoconfigurar seus endereços. A figura abaixo traz a saída das configurações de rede da máquina n4, fazendo um comparativo do antes e depois da configuração do radvd no roteador Linux. Reparem que, depois de configurado e habilitado o serviço radvd, a máquina passa a autoconfigurar um endereço IPv6 com o prefixo 2001:db8:cafe:1::/64. Seu endereço final fica 2001:db8:cafe:1:200:ff:feaa:2, lembrando que seu sufixo 200:ff:feaa:2 foi formado pela função EUI-64, a partir do seu endereço MAC 00:00:00:aa:00:02.



Para encerrar esse artigo trago uma amostra da captura de pacotes realizada na interface de rede da máquina n4 para que o leitor possa observar a presença das mensagens ICMPv6 Tipo 134 (RA) chegando em meio aos demais pacotes trafegados na rede. Reparem que o endereço de origem é o link-local (fe80) do roteador Linux e o endereço de destino é o grupo multicast ff02::1.


Abraço.

Samuel.

6 comentários:

  1. Amigo tira uma dúvida, ipv6 servidor é melhor em BSD que tem a pilha criada, ou roda melhor em Linux?

    ResponderExcluir
    Respostas
    1. Particularmente não acho que um seja melhor ou pior que o outro em relação ao suporte a IPv6.

      Excluir
    2. Porque eu percebo que as empresas administradoras de redes tem preferência por linux, bsd quase nunca aparece

      Excluir
    3. Pelo que eu sei a maior empresa do mundo a CISCO em roteadores usa base Linux, enquanto a Juniper usa base BSD

      Excluir
  2. Como seria a configuração caso haja interfaces virtuais no linux vinculadas à vlans?

    ResponderExcluir