sábado, 29 de junho de 2013

VPN Site-to-Site Baseada em IPv6

Olá Pessoal.


Essa 25/06/2013 participei de mais um evento "IPv6 no Café da Manhã" realizado pelos colegas do NIC.br. Nessa edição o formato foi de um mini-tutorial com a equipe do IPv6.br e o tema foi "Endereçamento e Planejamento de Redes IPv6". Foi mais um evento de grande qualidade e me lembro de que naquela oportunidade surgiu uma discussão interessante sobre o estabelecimento de túneis virtuais privativos (VPN) em redes IPv6.

Como não houve tempo hábil para detalharmos aquela discussão, então achei por bem continuar essa sequência de artigos sobre IPv6 que venho escrevendo no blog e que seria conveniente registrar um novo artigo mostrando como seria o processo de configuração de uma VPN site-to-site em redes IPv6.

É comum o estabelecimento de VPNs para a comunicação entre unidades remotas de uma empresa (site-to-site), afinal seu custo é convidativo porque a infraestrutura da Internet pública já existente é aproveitada para viabilizar a criação de uma rede privativa virtual, como se a empresa tivesse um link privativo de longa distância, o que não seria barato. Para exemplificar esse processo vamos considerar o cenário apresentado na figura abaixo (clique na imagem para ampliar). Cabe apenas mencionar que a configuração das políticas de segurança do IPSec em VPNs IPv6 é basicamente a mesma que já era realizada em VPNs IPv4 - a solução em si não mudou!


No cenário existem roteadores de borda representando duas unidades de uma empresa, uma localizada em São Paulo (SP) e outra no Rio de Janeiro (RJ). A unidade de SP está conectada à Internet através do link 2001:DB8:AAAA:: e também está conectada à rede local 2001:DB8:CAFE::1/64, enquanto que a unidade do RJ está conectada à Internet através do link 2001:DB8:BBBB:: e também a sua rede local 2001:DB8:CAFE:2::/64.

Com os comandos abaixo será configurada uma VPN através do túnel FD00:CAFE::A/127 (FD00:CAFE::A e FD00:CAFE::B). Reparem que estamos utilizando endereços /127 no túnel porque se trata de um link ponto-a-ponto, além disso também estamos fazendo uso dos endereços privados unique-local (ULA), afinal se trata de um link privativo entre as unidades e que existe “camuflado” por trás dos links com a Internet pública.

> Configuração do Roteador de São Paulo:

01. SP(config)# ipv6 unicast-routing
02. SP(config)# ipv6 route ::/0 2001:db8:aaaa::f
03. SP(config)# interface f0/0
04. SP(config)# description Link-ISP
05. SP(config-if)# ipv6 enable
06. SP(config-if)# ipv6 address 2001:db8:aaaa::1/64
07. SP(config-if)# no shutdown
08. SP(config-if)# exit
09. SP(config-if)# interface f1/0
10. SP(config-if)# description LAN-CAFE-1
11. SP(config-if)# ipv6 enable
12. SP(config-if)# ipv6 address 2001:Db8:cafe:1::1/64
13. SP(config-if)# no shutdown
14. SP(config-if)# exit
15. SP(config)# crypto isakmp key 0 SENHA address ipv6 ::/0
16. SP(config)# crypto isakmp policy 1
17. SP(config-isakmp)# encryption aes 128
18. SP(config-isakmp)# authentication pre-share
19. SP(config-isakmp)# exit
20. SP(config)# crypto ipsec transform-set VPNv6 esp-aes 128 esp-sha-hmac
21. SP(cfg-crypto-trans)# mode tunnel
22. SP(cfg-crypto-trans)# exit
23. SP(config)# crypto ipsec profile VPNv6
24. SP(ipsec-profile)# set transform-set VPNv6
25. SP(ipsec-profile)# exit
26. SP(config)# interface tunnel 0
27. SP(config-if)# description VPN-to-RJ
28. SP(config-if)# ipv6 enable
29. SP(config-if)# ipv6 address fd00:cafe::a/127
30. SP(config-if)# tunnel source f0/0
31. SP(config-if)# tunnel destination 2001:db8:bbbb::1
32. SP(config-if)# tunnel mode ipsec ipv6
33. SP(config-if)# tunnel protection ipsec profile VPNv6

34. SP(config-if)# exit
35. SP(config)# ipv6 route 2001:db8:cafe:2::/64 tunnel 0
 

Os comandos das linhas de 01 até 13 representam apenas as configurações básicas para assegurar conectividade entre as unidades através da Internet, nada que mereça destaque no contexto da configuração de uma VPN IPv6. Nas linhas de 14 a 24 são definidas as políticas de segurança onde informamos a chave compartilhada (SENHA) que será utilizada nas pontas, escolhemos o algoritmo de criptografia (AES de 128 bits), etc. 

 Nas linhas de 25 a 33 é criada uma interface lógica do tipo túnel que representa a VPN propriamente dita, sendo que nessa interface temos que vincular nossa rede privativa com a Internet pública (endereços de origem e destino). Por fim, na linha 34 é criada uma rota estática apontando para rede local da unidade remota através do túnel virtual recém criado. As configurações do roteador localizado no RJ são exatamente a mesmas, mudando apenas os endereços.

> Configuração do Roteador do Rio de Janeiro:

RJ(config)# ipv6 unicast-routing
RJ (config)# ipv6 route ::/0 2001:db8:bbbb::f
RJ(config)# interface f0/0
RJ(config)# description Link-ISP
RJ(config-if)# ipv6 enable
RJ(config-if)# ipv6 address 2001:db8:bbbb::1/64
RJ(config-if)# no shutdown
RJ(config-if)# exit
RJ(config-if)# interface f1/0
RJ(config-if)# description LAN-CAFE-2
RJ(config-if)# ipv6 enable
RJ(config-if)# ipv6 address 2001:db8:cafe:2::1/64
RJ(config-if)# no shutdown
RJ(config-if)# exit
RJ(config)# crypto isakmp key 0 SENHA address ipv6 ::/0
RJ(config)# crypto isakmp policy 1
RJ(config-isakmp)# encryption aes 128
RJ(config-isakmp)# authentication pre-share
RJ(config-isakmp)# exit
RJ(config)# crypto ipsec transform-set VPNv6 esp-aes 128 esp-sha-hmac
RJ(cfg-crypto-trans)# mode tunnel
RJ(cfg-crypto-trans)# exit
RJ(config)# crypto ipsec profile VPNv6
RJ(ipsec-profile)# set transform-set VPNv6
RJ(ipsec-profile)# exit
RJ(config)# interface tunnel 0
RJ(config-if)# description VPN-to-SP
RJ(config-if)# ipv6 enable
RJ(config-if)# ipv6 address fd00:cafe::b/127
RJ(config-if)# tunnel source f0/0
RJ(config-if)# tunnel destination 2001:db8:aaaa::1
RJ(config-if)# tunnel mode ipsec ipv6
RJ(config-if)# tunnel protection ipsec profile VPNv6

RJ(config-if)# exit
RJ(config)# ipv6 route 2001:db8:cafe:1::/64 tunnel 0

Acredito que esse é um caso em que a prática ajuda no entendimento dos conceitos por trás do processo de estabelecimento do túnel em redes baseadas no IPv6. Na opotunidade do evento eu e o colega Antonio Moreiras (do NIC.br) nos esforçamos para tentar explicar esse conceito em tempo mínimo (o assunto não era foco do evento), mas tenho certeza que não ficou claro para todos que estavam presentes ou acompanhando via Internet. Por isso espero que esse artigo possa ajudá-los...

Abraço.

Samuel.

14 comentários:

  1. Bastante útil Dr. Samuel gostei da informaçao

    Att: Jorge Miguel

    ResponderExcluir
  2. Muito boa a explicação. Minha dúvida agora é a seguinte.

    Com IPv4 usando Windows eu configuro a conexão VPN me autentico e recebo um IP da rede privada do meu trabalho e daí posso acessar desde da intranet até pastas compartilhadas ou impressora da rede privada do meu trabalho.

    Se eu quiser fechar uma VPN da minha casa para meu trabalho com IPv6 como funcionaria?

    ResponderExcluir
    Respostas
    1. Sim, essa modalidade de VPN é outra opção válida que é denominada Client-to-Site porque a conexão é iniciada a partir de um host cliente. Por isso a configuração consiste em uma configuração (ou software) cliente na máquina do usuário, sendo que o ambiente da empresa tem que estar preparado para aceitar essa conexão entrante. Por se tratar de outra modalidade de VPN, o ideal seria escrever outro artigo dedicado a esse assunto.

      Excluir
    2. Perfeito! Outra coisa, percebi que é possível com IPv4 e IPv6 configurar em um computador diversos IPs. Se temos 10 máquinas e 1 impressora, seria válida a ideia de colocar 10 IPs Globais nas máquinas e 11 IPs ULA nas mesmas máquinas e na impressora? Penso que desse jeito as máquinas teriam saída para Internet diferente da impressora, porém a impressora seria acessível para essas máquinas por que estariam na mesma rede ULA.

      Excluir
    3. É uma possibilidade, embora, ao meu ver, nesse caso, fosse mais adequado reservar uma (ou mais) sub-redes endereçadas com ULA apenas para os dispositivos que não têm necessidade de se conectar com a Internet. Lembre-se de que no contexto local não há problema nenhum em fazer o roteamento entre as diferentes redes da empresa.

      Excluir
  3. Olá Samuel, gostaria de saber o seguinte: Essa configuração que você fez nesse artigo está com IPSec habilitado no modo ESP? Todos os dados estão sendo criptografados entre as redes?

    ResponderExcluir
    Respostas
    1. Olá Diego,

      Sim! Repare que na linha 21 foi utilizado o modo "tunnel", que faz a cifragem de todo o pacote, inclusive dos cabeçalhos com os endereços originais, adicionando um novo cabeçalho. Outra opção seria utilizar o modo "transport" que faz a cifragem apenas dos dados (payload).

      ###--- Exemplo: Modo "Tunnel"

      |--- Criptografado------------------|
      Dados | Cabeçalho IP Original | Cabeçalho ESP | Novo Cabeçalho IP

      ###---

      ###--- Exemplo: Modo "Transport"

      |--- Criptografado --|
      Payload de Dados | Cabeçalho ESP | Cabeçalho IP Original

      ###---

      Excluir
    2. Entendi, valeu. E esse túnel criado na linha 26 é aquele GRE da Cisco?

      Excluir
    3. Não, esse é um túnel IPSec que possui encapsulamento diferente do GRE. Repare na linha 32 que o comando é "tunnel mode ipsec", ao invés de "tunnel mode gre".

      Excluir
    4. Entendi, muito obrigado!

      Excluir
  4. A linha 2: ipv6 route ::/0 2001:db8:aaaa::f

    Seria uma rota default?

    ResponderExcluir
  5. Este comentário foi removido pelo autor.

    ResponderExcluir