Ferramentas do usuário

Ferramentas do site


infra-estrutura:ipv6:dns64_nat64

Método de transição IPV6 - DNS64 e NAT64

Para método de transição IPv6 utilizando dns64 e nat64 iremos montar a seguinte topologia.

DNS64

A transição para o ipv6 não se dá de forma rápida devido a alguns destinos ainda serem únicamente ipv4. Sendo assim como então entregar a seus clientes(no caso de um provedor) puramente ipv6 sendo que eles em algum momento precisarão acessar destinos ipv4. E ai que entra o dns64, quando um destino que não possue ipv6, ou seja, não possue o registro AAAA. Para isso vamos criar um ipv6 para esses caras únicamente ipv4. E isso que o dns64 faz criar endereços AAAA para destinos sem AAAA. Vamos visualizar como seria uma consulta DNS64.

Consulta dns para nome que possuem registros AAAA

A consulta para nomes que possuem registro AAAA funciona da forma normal o cliente consulta, se o dns possuir um registro AAAA para o nome, ele devolve ao cliente.

Funciona basicamente o cliente fazendo o request por um nome e o dns respondendo (reply) para essa consulta com o endereço IPV6 sem muita coisa a mais.

Consulta dns para nomes que não possuem registros AAAA

A consulta de nomes com registros que não possuem AAAA a resposta seria em branco, porém com a caracteristica dns64 conseguimos dizer ao servidor DNS que quando ele ser questionado sobre um nome pelo registro AAAA ele cria um registro AAAA a partir de um prefixo. Como todos sabem o registro AAAA é uma resposta com endereço IPV6 definindo um prefixo previamente o servidor dns pega o endereço ipv4 converte para hexa e junta formando o ipv6 normal. Vamos a um exemplo.

Explicando o exemplo e feito a consulta pelo nome www.ricardobarbosa.com.br, este nome não possue registro AAAA apenas o registro A que resolve para o endereço ipv4 200.200.200.200. O dns64 possue o prefixo 64:ff9b::/96 configurado para formar ipv6 com o endereço ipv4 retornado.

  • Primeiro convertemos o ipv4(decimal) para hexa ficando 200.200.200.200 = c8.c8.c8.c8.
  • Vamos adicionar o prefixo 64:ff9b::c8c8:c8c8 pronto ja temos um endereço ipv6 para um serviço puramente ipv4.

No software BIND temos suporte a DNS64, editamos o arquivo /etc/bind/named.conf.options

options {
        directory "/var/cache/bind";
        dnssec-validation no;
 
        allow-query { 2001:db8:1::/64; };
        allow-recursion { 2001:db8:1::/64; };
 
        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
 
        //support the dns64
        dns64 64:ff9b::/96 {
              clients { any; };
        };
};

Agora precisamos entender o nat64

Nat64

O nat64 é uma técnica de tradução de endereços ipv6 para ipv4 ou ipv4 para ipv6 no caso utilizaremos de ipv6 para ipv4 porque nosso intuito e criar um método de transição para trabalharmos totalmente com ipv6 e não deixando de falar com o mundo ipv4. Veja a rede abaixo onde colocaremos tudo para funcionar nat64 e dns64.

Note que temos ambiente ipv6 na LAN e ambiente ipv6 e ipv4 na WAN. As duas consultas citadas acima com e sem registro AAAA são aplicadas aqui a diferença e que foi explicada acima. O que muda nesse ambiente e que temos a tradução de ipv6 para ipv4 para podermos acessar o ambiente ipv4 que AINDA não tem suporte a ipv6. Estamos trabalhando com roteadores Cisco e configuramos o nat64 segue abaixo a configuração das interfaces

!
interface GigabitEthernet0/0/0
 no ip address
 negotiation auto
!
interface GigabitEthernet0/0/0.12
 encapsulation dot1Q 12
 ip address 200.1.1.1 255.255.255.0
 ipv6 address 2001:db8:2::1/64 
 ipv6 enable
 nat64 enable
!
interface GigabitEthernet0/0/1
 description LAN
 no ip address
 negotiation auto
 ipv6 address 2001:db8:1::1/64 
 ipv6 enable
 nat64 enable

Criaremos as rotas de gateway padrão para os dois ambiente tanto ipv4 como ipv6.

ipv6 route ::/0 2001:db8:2::100
ip route 0.0.0.0 0.0.0.0 200.1.1.100

Agora criaremos uma lista de acesso para coincidir ou dar match com o fluxo que quero “natear” ou fazer o nat64 :) No caso pegamos todos o trafego vindo da minha rede local LAN com a rede 2001:db8:1::/64 com destino a rede 64:ff9b::/96 que é o prefixo ou a rede do nosso dns64, criamos essa acl para combinar com este fluxo, porque os outros fluxos ja supomos que sao ipv6 → ipv6, essa acl pegaria ipv6→ipv4

ipv6 access-list nat64-acl
 sequence 1 permit ipv6 2001:db8:1::/64 64:FF9B::/96

Agora vamos criar um pool de tradução ipv4 ou endereço ipv4 global, aqui pode ser definido um range mas optei por colocar apenas 1 endereço ipv4

nat64 v4 pool nat-pool 200.1.1.1 200.1.1.1

Agora em si crio a regra que ira fazer a tradução propriamente dita vou criar uma tradução ipv6 para ipv4 (v6v4) utilizando a acl nat64-acl para dizer qual fluxo vou traduzir e qual endereço utilizarei na tradução (pool nat-pool).

nat64 v6v4 list nat64-acl pool nat-pool overload

Abaixo tentei demonstrar o ambiente completo.

Att.