Receita para os clientes RNP de como entrar no mundo IPv6

Obtendo endereçamento IPv6

Solicite, via e-mail para o registro @ rnp . br, uma faixa de endereçamento IPv6 para sua instituição. Quem deve fazer isso é o contato técnico da instituição (que foi cadastrado como tal junto à RNP). Um pequeno tutorial sobre IPv6 (introdução, endereçamento, roteamento) pode ser obtido em: http://ipv6.br

Verificando se seu SO tem suporte a IPv6

Windows: Windows XP(SP3), Windows Seven e WIndows Server têm suporte nativo a IPv6.

Linux: Núcleo (kernel) a partir de 2.2.x tem suporte a IPv6.

Para verificar a versão do núcleo do seu Linux use o comando uname. Ex.

peter@server:~$ uname -a
Linux server1 2.6.18.8-xen #1 SMP Thu Sep 17 17:12:09 BRT 2009 i686 Intel(R) Xeon(R) CPU E5430 @ 2.66GHz GenuineIntel GNU/Linux

Para confirmar que o módulo de tratamento IPv6 foi carregado na inicialização do sistema use o comando lsmod. Ex.

peter@server:~$ lsmod | grep ipv6
ipv6 274720 45

Carregar suporte IPv6 em seu Linux (se não foi carregado na inicialização)

modprobe ipv6

- deve ser usado caso o módulo ipv6 não esteja carregado
- deve ser incluído no /etc/rc.d/rc.modules (ou equivalente)

Endereços IPv6

- padrão: oito sequências de 4 dígitos hexadecimais, separadas por dois-pontos (':')
- um (e somente um) bloco de zeros pode ser abreviado com ::
- zeros à esquerda podem ser omitidos

-- ex. 2001:12f0:09c0:0064:0000:0000:0000:0201, temos:
-- 2001:12f0:9c0:64::201 (é endereço de interface)
-- 2001:12f0:09c0::/48 (é identificação de rede)
-- 2001:12f0:09c0:0064::/64 (é identificação de subrede)

- localhost é ::1
- rota default é ::/0

Configurando endereçamento / roteamento IPv6 estático

Windows: modo semelhante ao usado para configuração de endereçamento IPv4. Devem ser definidos endereço IPv6, comprimento de prefixo, roteador default (gateway) e servidor(es) de nomes.

Linux: modo semelhante ao usado para configuração de endereçamento IPv4, com alguns comandos diferentes. Ex.

# atribuindo endereço para interface
peter@server# ip -6 add addr 2001:12f0:09c0:0064::0201/64 dev eth0

# definindo rota default
peter@server# ip -6 route add ::/0 via 2001:12f0:09c0:0064:0101 via 2001:12f0:09c0:0064::0101

# definindo servidor de nomes Ipv6
Acrescente no /etc/resolv.conf os endereços IPv6 do servidores de nomes disponíveis.

Obs. Diferentes distribuições Linux têm diferentes formas de fazer essas configurações (a maioria via interface gráfica).

Configurando endereçamento / roteamento IPv6 dinâmico para hospedeiros (desktops ou servers)

Windows: modo semelhante ao usado para configuração de endereçamento IPv4. Indique que o sistema deve "Obter um endereço IPv6 automaticamente" e "Obter endereços de servidores DNS automaticamente".

Linux: modo semelhante ao usado para configuração de endereçamento IPv4 - use/configure o lado cliente DHCPv6 do seu Linux (pode ser diferente em diferentes distribuição Linux).

Obs.
1) As instruções para configurar o roteador default da rede para distribuir o prefixo da rede automaticamente para clientes com endereçamento dinâmico são fornecidas no tópico "Configurando roteador IPv6" desse documento.
2) As instruções para configuração de servidor DNS IPv6 são fornecidas no tópico "Configurando servidor DNS IPv6" desse documento.

## Configurando roteador IPv6
#

# Quando hospedeiros usam endereçamento estático

Quando se usa endereçamento estático de hospedeiros, a configuração de roteadores é simples. Basta atribuir endereços IPv6 corretos às interfaces devidas (LAN e WAN) do roteador do cliente, configurar a rota default (IPv6) do roteador para o IPv6 do provedor e configurar a rota default dos hospedeiros para o endereço IPv6 do roteador (LAN). Ex.

roteador do cliente com IPv6 (LAN) = 2001:12f0:09c0:0064::0101/64 (IP1)
roteador do cliente com IPv6 (WAN) = 2001:12f0:0000:00ff::00c6/126 (IP2)
roteador do provedor com IPv6 (WAN) = 2001:12f0:0000:00ff::00c5/126 (IP3)

Rota default do roteador do cliente deve apontar para o endereço IP3 do roteador do provedor
Rota default de todo hospedeiro deve apontar para o endereço IP1 do roteador do cliente

# Quando hospedeiros usam endereçamento dinâmico

Quando se usa endereçamento dinâmico de hospedeiros, a configuração de roteadores continua simples, mas tem alguns detalhes à mais. A definição de endereço IPv6 para LAN e WAN do roteador deve ser feita normalmente, bem como a configuração de sua rota default para o roteador do provedor. Para os hospedeiros da rede atendida pelo roteador, porém, temos alguns cenários.

Obs.

NO mundo Linux, deve-se verificar se a caixa Linux está configurada para rotear IPv6 com:
cat /proc/sys/net/ipv6/conf/all/forwarding
- valor = 1 => ativado, valor = 0 => desativado

Caso o valor seja 0 (zero), deve-se habilitar o roteamento IPv6 com:
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

Configurando servidor DNS IPv6 (Linux/BIND Versão >= 9.6.x)

Linux: modo semelhante ao usado para cOnfigurar DNS (direto e reverso), devendo-se prestar muita atenção à sintaxe. No exemplo a seguir, mostramos apenas o absulatamente necessário, logo as sequências (. . .) presentes indicam informações diversas omitidas.
# Arquivos (tipicamente em /var/named)
- named.conf
(. . .)
options {
   (. . .)
   //// define clientes para resolução recursiva
   //
   allow-recursion {
      200.129.64.0/24; // rede IPv4
      2001:12f0:09c0::/48; // rede IPv6
   };
   (. . .)
   //// atende requisições em todas as interfaces IPv6
   //
   listen-on-v6 { any; };
   (. . .)
};
(. . .)
//// direto pop-pb.rnp.br
//
zone "pop-pb.rnp.br" in {
   type master;
   file "poppb.zone";
};
//// reverso IPv4 - padrão A - 200.129.64.0/24 (POP)
//
zone "64.129.200.in-addr.arpa" in {
   type master;
   file "poppb-ipv4.rev";
};
//// reverso IPv6 - padrão AAAA - 2001:12F0:09C0::/48 (POP)
//// deve ser usado para detentor de rede com prefixo /48
//
zone "0.c.9.0.0.f.2.1.1.0.0.2.ip6.arpa" in {
   type master;
   file "poppb-ipv6.rev";
};

//// Observações:
// 1) essa mesma configuração de direto e reverso, com type slave, deve ser colocada nos servidores secundários
// 2) se os servidores secundários que tiverem endereço IPv6, lembrar de autorizar no primário a transferência de zonas para os endereços IPv6 dos secundários

(. . .)
- poppb.zone
(. . .)

//// define endereço IPv4 e IPv6 p/ maquinas
//
server1    IN     A           200.129.64.141
                IN     AAAA     2001:12f0:09c0:0064::0201

(. . .)
- poppb-ipv4.rev

$TTL                    2h
@                        IN                    SOA                       server1.pop-pb.rnp.br.           root.pop-pb.rnp.br.    (
                                                                                2011070802              ;serial AAmmDDss
                                                                                24h                            ;refresh (24 hs)
                                                                                1h                              ;retry (1 h)
                                                                                72h                            ;expire (72 hs)
                                                                                1h                              ;minimum (1 h)
                                                    )
                           IN                    NS                         server1.pop-pb.rnp.br.
                           IN                    NS                         server4.pop-pb.rnp.br.

(. . .)

141                     IN                    PTR                        server1.pop-pb.rnp.br.

(. . .)

- poppb-ipv6.rev

$TTL                    2h
@                        IN                    SOA                       server1.pop-pb.rnp.br.            root.pop-pb.rnp.br.    (
                                                                                2011071402              ;serial AAAAmmDDss
                                                                                24h                            ;refresh (24 hs)
                                                                                1h                              ;retry (1 h)
                                                                                72h                            ;expire (72 hs)
                                                                                1h                              ;minimum (1 h)
                                                   )
                           IN                   NS                           server1.pop-pb.rnp.br.
                           IN                   NS                           server4.pop-pb.rnp.br.

(. . .)

;;;
;; subrede: LAN POP-PB (:0064::/64)
;
$ORIGIN 4.6.0.0.0.c.9.0.0.f.2.1.1.0.0.2.ip6.arpa.

1.0.2.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR server1.pop-pb.rnp.br.

(. . .)

;;;
;; subrede: DIST POP-PB (:0075::/64)
;
$ORIGIN 5.7.0.0.0.c.9.0.0.f.2.1.1.0.0.2.ip6.arpa.

3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR rtm-pop.pop-pb.rnp.br.

(. . .)

- /etc/resolv.conf (no servidor e e todos os clientes Linux)

domain pop-pb.rnp.br
nameserver 200.129.64.141
nameserver 2001:12f0:09c0:0064::0201

# p/ verificar sintaxe dos arquivos DNS

named-checkconf ./named.conf
named-checkzone -i none pop-pb.rnp.br poppb.zone
named-checkzone -i none 64.129.200.in-addr.arpa poppb-ipv4.rev
named-checkzone -i none 0.c.9.0.0.f.2.1.1.0.0.2.ip6.arpa poppb-ipv6.rev

# p/ reconfigurar DNS (supondo configuração correta p/ suportar comando rndc)

rndc flush
rndc reload

# p/ verificar funcionamento do DNS

dig pop-pb.rnp.br ns
dig server1.pop-pb.rnp.br a
dig server1.pop-pb.rnp.br aaaa
dig -x 200.129.64.141
dig -x 2001:12F0:09C0:0064::0201

OBS. Em todas as consultas deve-se obter status NOERROR com a resposta apropriada.

Configurando/ajustando servidor Web para IPv6 (Apache V. >= 2.2.10)

- arquivo httpd.conf

(. . .)

Listen 200.129.64.141:80
Listen [2001:12f0:09c0:0064::0201]:80

(. . .)

- arquivo extra/httpd-vhosts.conf

(. . .)

<VirtualHost 200.129.64.141>
    ServerName www.pop-pb.rnp.br
    DocumentRoot /usr/local/apache/htdocs/pop-pb
    ServerAdmin webmaster@pop-pb.rnp.br
    ErrorLog /usr/local/apache/logs/pop-pb_error.log
    CustomLog /usr/local/apache/logs/pop-pb_access.log common
    Include /usr/local/apache/conf/extra/twiki.conf
</VirtualHost>

<VirtualHost [2001:12F0:09C0:0064::0201]>
    ServerName www6.pop-pb.rnp.br
    DocumentRoot /usr/local/apache/htdocs/pop-pb
    ServerAdmin webmaster@pop-pb.rnp.br
    ErrorLog /usr/local/apache/logs/pop-pb_error6.log
    CustomLog /usr/local/apache/logs/pop-pb_access6.log common
    Include /usr/local/apache/conf/extra/twiki.conf
</VirtualHost>

(. . .)

Configurando/ajustando servidor de correio para IPv6 (Linux/Postfix, V. >= 2.6.3)

- arquivo main.cf

(. . .)

inet_protocols = ipv4, ipv6
inet_interfaces = all
smtp_bind_address6 = 2001:12f0:09c0:0064::0201
mynetworks = 127.0.0.0/8 200.129.64.128/27 [::1]/128 [2001:12f0:09c0::]/48

(. . .)

Configurando servidor DHCP para IPv6 (Linux/dhcpd, V. >= 4.2.2, ou extreme)

##Servidor DHCP
#

Baixa o arquivo .tar.gz na pasta /usr/local/src

tar -zxvf dhcp-4.1.0p1.tar.gz
./configure
make install

Criar a pasta db:

mkdir /var/db

Criar o arquivo leases:

touch /var/db/dhcpd6.leases

Criar o script de configuração do dhcpv6 no /etc/dhcp6c.conf:

default-lease-time 600;
max-lease-time 7200;
log-facility local7;
# Additional options
option dhcp6.name-servers 2001:12f0:9c0:64::201;
option dhcp6.domain-search "pop-pb.rnp.br";
subnet6 2001:12f0:9c0:64::/64 {
    # Range for clients
    range6 2001:12f0:9c0:64::601 2001:12f0:9c0:64::610;
}

Para iniciar:

/usr/local/sbin/dhcpd -6 -cf /etc/dhcp6c.conf eth0

Ele funciona paralelamente com v4 e v6, então precisa ser chamado duas vezes e uma delas com -6 como parâmentro caso queira rodar as duas versões. Diga o arquivo de configurações e a interface que irá atender.

##Roteador caixa Linux
#

O DHCPv6 não divulga o gateway default, o próprio roteador se auto-divulga. Para isso, se o roteador é uma caixa linux, é preciso instalar nele um daemon chamado radvd. Ele faz os routers advertisements e pode ser usado para auto-configuração também. O exemplo de arquivo mostrado aqui é para divulgação do roteador mas sem divulgação de prefixo para auto-configuração.

Baixar o arquivo e descompactar:

cd /usrl/local/src
wget www.litech.org/radvd/dist/radvd-1.8.tar.gz
tar xvzf radvd-1.8.tar.gz

Instalação:

cd /radvd-1.8
./configure --prefix=/usr/local --sysconfdir=/etc --mandir=/usr/share/man
make
make install

Arquivo de configuração a ser criado /etc/radvd.conf:

interface eth0 {
    AdvSendAdvert on;
    MinRtrAdvInterval 3;
    MaxRtrAdvInterval 10;
    AdvManagedFlag on;
};

O AdvSendAdvert manda os alertas de tempos em tempos. MinRtrAdvInterval e MaxRtrAdvInterval são os tempos mínimos e máximos para a retransmissão desses alertas. AdvManagedFlag é necessário para permitir que seja usado DHCPv6 em conjunto ou não. Para rodar basta chamar: radvd.

##Roteador Extreme
#

Se o seu roteador for um extreme digite os seguintes comandos:

enable router-discovery ipv6 vlan "Default"
configure vlan "Default" router-discovery ipv6 managed-config-flag on

Configurando RIPng no extreme

Se quiser Habilitar RIPng (RIP para IPV6) fazer os seguintes passos (exportar rotas diretas, estáticas):

enable ripng export direct cost 1
enable ripng export static cost 1
configure ripng "vlan-Backbone" cost 1
configure ripng add "vlan-Backbone"
enable ripng

RESUMO DE ALGUNS COMANDOS (mundo Linux)

# Atribuir/retirar endereços para/de interface

ip -6 addr {add | del} <addr-ipv6>/<prefix> dev <inter>

# Mostrar endereços de interfaces

ip -6 addr show [dev <inter>]

# Ativar/desativar interface

ifconfig <inter> {up | down}

# Mostrar vizinhos Ipv6

ip -6 neigh show

# Verificar se roteamento IPv6 está ativado (só necessário p/ roteadores Linux)

cat /proc/sys/net/ipv6/conf/all/forwarding
- valor = 1 => ativado, valor = 0 => desativado

# Ativar/desativar roteamento IPv6

echo {1 | 0} > /proc/sys/net/ipv6/conf/all/forwarding

# Incluir/excluir rota IPv6

ip -6 {add | del} route <net-ipv6>/<prefix> via <fw-ipv6> [dev <inter>]

# Mostrar roteamento IPv6

ip -6 route show [dev <inter>]

# Scan IPv6

nmap -6 <opções>
- ex. nmap -6 -sT ::1

# Firewall IPv6

ip6tables <opções>

# Sniffing IPv6

tcpdump -vv ip6 <opções>

ALGUMAS REFERÊNCIAS

http://www.ipv6.br
http://curso.ipv6.br/elearning/
http://penta.ufrgs.br/redes296/ipv6/
http://www.linuxquestions.org/questions/slackware-14/ipv6-on-slackware-13-1-a-842553/
DNS IPv6: http://www.pop-ba.rnp.br/IPv6/Noticia20090120202852
IPTABLES IPv6: http://www.pop-ba.rnp.br/IPv6/Noticia20090121130657