Data: 20/01/2009
Autor: Humberto Galiza - galiza at pop-ba.rnp.br


Resumo

Este é um guia para a configuração de um serviço de nomes com suporte ao IPv6. Para o melhor entendimento, é necessário um conhecimento prévio básico sobre esse novo protocolo. Assim, é recomendado ler [5] antes de continuar.

Introdução

Com o desenvolvimento do IPv6, surge a necessidade de provermos um serviço de nomes que suporte esse novo protocolo. Para isso, foi criado um novo registro que armazena endereços no formato do IPv6, o AAAA. Estão em fase de desenvolvimento novos tipos de registros que facilitarão a manutenção desse serviço. Além disso, um novo domínio foi criado para a resolução de reverso, o ip6.int.

Esse domínio está em fase de transição para um outro domínio de reverso, o ip6.arpa, seguindo as orientações da RFC 3152 [4]. A forma de atribuição e delegação de reverso permanece a mesma. Para efeitos de compatibilidade, o seu serviço de DNS deve suportar ambos.

Hoje não contamos com nenhum servidor de DNS no topo da hierarquia com suporte nativo IPv6. Assim sendo, toda consulta é realizada usando o atual protocolo, o IPv4.

Como servidor de nomes utilizaremos o BIND versão 9, cuja implementação é a mais robusta, e é também o servidor DNS mais difundido atualmente.

Requisitos

O principal requisito é um sistema operacional que suporte, e que esteja com o protocolo habilitado, SUN Solaris, FreeBSD, OpenBSD, Linux, Windows Vista, entre outros.

O tutorial de compilação do BIND pode ser consultado em [3]. Se estiver utilizando a distribuição Debian GNU/Linux, basta fazer no terminal:
sudo aptitude install bind9
que o bind9 será instalado, e já com suporte nativo a IPv6.

Configuração

Usaremos como referência para as configurações o diretório /etc/bind, que é o padrão na maioria das distribuições GNU/Linux.

A primeira coisa a fazer com o software já instalado, é fazer com que o daemon do bind, o named, esteja escutando no endereço IPv6 da máquina em questão. Para isso, devemos nos certificar da presença da linha:
        listen-on-v6 { any; };
no arquivo named.conf.options dentro da seção options. Por padrão, o Bind 9 não escuta em IPv6, então esta configuração é a mais importante.

Feito isso, basta configurar as zonas com endereços IPv6, juntamente com o reverso. Mais adiante discutiremos a maneira correta de delegarmos blocos para o reverso. A edição do arquivo de configuração, "named.conf", só será necessária para o cadastro da zona de reverso.

Resolução de nomes

O mapeamento nome / ip apenas requer apenas a inclusão dos registros do tipo AAAA no arquivo da zona já existente do seu domínio, junto com os endereços IPv4.
Ex:
    www IN AAAA 2001:04A0:0:1::D
    mail IN AAAA 2001:04A0:0:1::9
    pop3 IN AAAA 2001:04A0:0:1::B
    smtp IN AAAA 2001:04A0:0:1::A

Resolução reversa

Para a resolução reversa precisamos editar o arquivo de configuração named.conf e incluir uma nova zona, a reversa, assim como já fazíamos com IPv4. Usaremos a título de exemplo o bloco IPv6 2001:04A0:0001::/48 para nossos testes. Assim sendo, devemos proceder da seguinte forma com a configuração:

Arquivo: named.conf - Aqui incluiremos a nova zona reversa:

zone "1.0.0.0.0.a.4.0.1.0.0.2.ip6.int" {
    type master;
    file "2001:4a0:0001.ip6.int";
};

zone "1.0.0.0.0.a.4.0.1.0.0.2.ip6.arpa" {
    type master;
    file "2001:4a0:0001.ip6.arpa";
};

Passamos, assim, a responder pelo reverso do bloco que foi cedido. Tal prefixo já deve ter sido delegado pelo provedor de endereços IPv6, da mesma forma como ocorre na delegação de subdomínios. A forma como se declara o registro reverso é semelhante ao IPv4, ou seja, começando pelo último dígito hexadecimal do endereço, e é denominado de nibble format.

Arquivo de zona reversa (modelo AAAA): 2001:4a0:0001.ip6.int

$TTL 86400
@       IN      SOA     ns.pop-xx.rnp.br.    root.pop-xx.rnp.br. (
                                                2001112201
                                                3H      ; refresh
                                                15M     ; retry
                                                1W      ; expiry
                                                1D )    ; minimum
        IN      NS      ns.pop-xx.rnp.br.


1.b.0.5.6.e.e.f.f.f.c.a.4.0.2.0.0.0.0.0  IN PTR x.pop-xx.rnp.br
b.1.e.c.2.6.e.f.f.f.9.2.6.0.2.0.0.0.0.0  IN PTR y.pop-xx.rnp.br
6.1.1.7.6.e.e.f.f.f.c.a.4.0.2.0.0.0.0.0  IN PTR z.pop.xx.rnp.br

Arquivo de zona reversa (modelo A6): 2001:4a0:0001.ip6.arpa

$TTL 86400
@       IN      SOA     ns.pop-xx.rnp.br.    root.pop-xx.rnp.br. (
                                                2001112201
                                                3H      ; refresh
                                                15M     ; retry
                                                1W      ; expiry
                                                1D )    ; minimum
        IN      NS      ns.pop-xx.rnp.br.


1.b.0.5.6.e.e.f.f.f.c.a.4.0.2.0.0.0.0.0  IN PTR x.pop-xx.rnp.br
b.1.e.c.2.6.e.f.f.f.9.2.6.0.2.0.0.0.0.0  IN PTR y.pop-xx.rnp.br
6.1.1.7.6.e.e.f.f.f.c.a.4.0.2.0.0.0.0.0  IN PTR z.pop.xx.rnp.br

Dica: Existem algumas ferramentas que geram esse arquivo da zona inversa automaticamente. Por exemplo, o seguinte site pode ajudar: http://www.fpsn.net/index.cgi?pg=tools&tool=ipv6-inaddr

Delegação de prefixos

A forma como se delega blocos de endereços é usando o registro do tipo NS. Suponhamos que atribuímos um bloco a nosso cliente e queremos que ele esteja apto a resolver endereços para nomes.

Assim sendo, teremos que adicionar as seguintes informações em nosso arquivo 2001:4a0:0001.ip6.int:

$ORIGIN 0.0.1.0.1.0.0.0.0.A.4.0.1.0.0.2.ip6.int.
   
@               IN          NS          xyz.dominio_do_cliente.br.
                   IN          NS          xyz.dominio_do_cliente.br.

E nosso arquivo 2001:4a0:0001.ip6.arpa:

$ORIGIN 0.0.1.0.1.0.0.0.0.A.4.0.1.0.0.2.ip6.int.
   
@               IN          NS          xyz.dominio_do_cliente.br.
                   IN          NS          xyz.dominio_do_cliente.br.

Conclusão

Como qualquer novo protocolo, é normal que tenhamos essas mudanças e que caminhemos a passos lentos, pois é fundamental que exista a precaução com os efeitos colaterais que essas medidas podem causar no funcionamento da Internet. Entretanto o uso do IPv6 tem se mostrado o melhor caminho para resolver os problemas de segurança, escalabilidade e escassez de endereços oriundos do IPv4.