Redes IPv6

Transcrição

Redes IPv6
Implementação do protocolo IPv6
REDES
Redes IPv6
A era IPv6 está mais próxima do que imaginamos. Veremos como
configurar a próxima geração do protocolo da internet.
por Owen DeLong
M
uitos sabem que os endereços IPv4 estão se esgotando. No entanto, nem
todos sabem o quão perto estamos
do fim. A Internet Assigned Numbers
Authority (IANA – Autoridade de
Atribuição de Números da Internet),
provavelmente, ficará sem endereços
IPv4 disponíveis até o final de 2010.
Entretanto, a verdadeira história é
um pouco mais complicada. A IANA
não aloca endereços a indivíduos
(nem corporações) diretamente, mas
sim para cinco Regional Internet Registries (RIR – Registros de Internet
Regionais). Esses RIRs, por sua vez,
alocam e atribuem endereços a usuários finais e organizações provedoras
de acesso e, em alguns casos, outros
Registros da Internet. O fim dos endereços da IANA é bem previsível.
Eles acabarão dando um dos quatro
últimos grandes blocos (conhecidos
como /8s) para cada um dos RIRs, e
então, esse será o fim dos IPv4 gratuitos da IANA.
É mais difícil prever quando os
RIRs ficarão sem endereços. Eles
negociam com uma ampla gama
de variáveis, incluindo diferentes
tamanhos de solicitações e altos e
baixos na demanda. Normalmente,
espera-se que cada RIR fique sem
endereços um ano após receber seu
último /8 da IANA.
Como todos provavelmente já sabem, uma nova versão de protocolo,
68
que inclui um novo espaço de endereço
IP, já está sendo preparada há algum
tempo. Alguns roteadores e provedores
já oferecem suporte ao IPv6 e pode-se
esperar um aumento na necessidade
de suporte ao IPv6 conforme a oferta
de endereços for escasseando. Neste
artigo, investigo questões relativas à
configuração do IPv6 e mostro como
colocar em funcionamento uma rede
IPv6 – mesmo que seu provedor não
ofereça um suporte IPv6 completo.
Começo
Diferentemente do velho protocolo
IPv4 amplamente utilizado hoje,
que possui apenas 32 bits e só pode
gerar um pouco mais de 3 bilhões
de hosts únicos, o IPv6 possui 128
bits e pode gerar mais de 340 undecilhões de hosts (não precisa pegar
um dicionário: um undecilhão é um
1 seguido de 36 zeros – em outras
palavras, um número inimaginavelmente enorme).
O IPv6 oferece vários benefícios
importantes que não seriam possíveis em uma rede IPv4 convencional, tais como autoconfiguração e
multicasting melhorados, melhor
qualidade de opções de serviços e
maior carga. Como é de se esperar,
junto com esses benefícios vêm alguns riscos. O processo completo
de implementação do IPv6 consiste
em uma série de pequenos passos de
configuração. A ordem exata destes
passos pode depender de sua configuração de rede, portanto, pode ser
necessário seguir um caminho um
tanto diferente, mas os passos básicos descritos aqui são os seguintes:
1. O
bter uma conectividade IPv6
básica para seu gateway (também conhecido por roteador).
2. Estabelecer uma política de segurança IPv6 (hosts e gateway).
3. Adicionar o IPv6 à sua rede host.
4. Adicionar o IPv6 aos hosts (caso
isso não aconteça automaticamente).
5. H
abilitar serviços em IPv6.
a) DNS (exibição personalizada
e suporte de teste).
b) IMAP/POP.
c) SMTP.
d) Web.
e) DNS (produção).
Mesmo que seu ambiente exija
passos diferentes, este artigo será um
guia pra iniciar sua rede IPv6.
Conectividade
IPv6 básica
O primeiro passo é conseguir uma
conectividade IPv6 básica para seu
roteador. É bom fazer isso com cuidado para não criar um problema de
segurança acidentalmente. Infelizmente, os crackers já estão dominando o protocolo, e já há ataques IPv6
ocorrendo. O ideal é que seu provedor
http://www.linuxmagazine.com.br
IPv6 | REDES
ofereça uma conectividade de pilha
dupla nativa. Na maioria dos casos,
isso não vai acontecer, mas vale a pena
se informar para saber se essa opção
está disponível. Se tiver sorte, a maior
parte desta etapa não será necessária.
Assumindo que seu provedor não
tenha serviços IPv6 diretos, será necessário um túnel de um provedor
cooperativo. O tunelamento IPv6
é uma técnica que permite embarcar pacotes IPv6 dentro de pacotes
IPv4, o que significa que sua rede
IPv6 pode usar a antiga internet de
links ponto-a-ponto para outras redes IPv6 (não se preocupe, é mais
fácil implementar do que explicar).
Vários provedores oferecem túneis
IPv6 gratuitamente. Meu favorito é
o IPv6 Tunnel Broker operado pelo
Hurricane Electric [1]. Se for preciso encerrar o túnel por trás do NAT,
tente o tunnel broker e o adaptador
disponíveis no SixXS [2].
Inscrever-se nos tunnel brokers é
muito fácil, e é possível obter com
eles um /64 (no caso de uma só rede)
ou o /48 (no caso de várias redes).
Nos meus exemplos, estou usando
um /48. Se obtiver um /48, é bem
possível que ele venha com um link
adicional de /64 de qualquer maneira.
Quando estiver criando um túnel,
o broker irá solicitar o endereço IP
público do seu gateway. Se não souber o endereço, é possível descobrilo em WhatIsMyIPAddress.com [3].
Depois de conseguir seus endereços para o túnel e para a sua rede
local, o próximo passo é configurar
seu roteador. A primeira coisa que
precisa ser feita é certificar-se que
não há conectividade IPv6 acidental
para hosts que não possuem políticas de segurança em IPv6. Faça isso
colocando um ACL adequado em
seu roteador, ou tenha a certeza de
que o IPv6 não está habilitado em
qualquer host por padrão até estar
pronto para ligá-lo.
Depois de dominar as notações
de endereço mais complexas, o ip‑
Linux Magazine #69 | Agosto de 2010
6tables funcionará mais ou menos
do mesmo modo que o iptables. A
listagem 1 mostra entradas iptables
de um dos meus hosts, e a listagem 2
mostra a configuração do ip6tables.
Depois de ter protegido os seus
hosts, o próximo passo é executar o
IPv6 no seu roteador. Os túneis possuem endereços internos e externos.
Os endereços externos serão os endereços IPv4 públicos dos dispositivos
do fim do túnel. Neste exemplo, vou
usar 198.51.100.5 (provedor do fim do
túnel), e 203.0.113.89 (extremidade
local do túnel) para os endereços externos. Os endereços internos serão
2001:db8:930:7000::1/64 (no lado do
provedor) e 2001:db8:930:7000::2/64
(no lado local).
Primeiramente, certifique-se de
poder dar um ping no roteador remoto a partir do endereço local do
túnel. No terminal, execute:
ping 198.51.100.5 source
203.0.113.89
Se o resultado for bem sucedido,
configure o túnel como mostra a listagem 3. (As listagens 4 a 11 podem ser
encontradas para download em [4]).
Caso tudo tenha corrido bem e o
túnel for configurado corretamente no
lado do túnel broker, será possível enviar
agora seu primeiro datagrama IPv6:
ping 2001:db8:930:7000::1
source 2001:db8:930:7000::2
Se tudo deu certo, parabéns! Seu
roteador está funcionando sob o protocolo IPv6.
Entretanto, apenas a configuração
do roteador não é suficiente para a
maioria das pessoas. O próximo passo é estabelecer o IPv6 em (um dos)
seu(s) segmento(s) de rede. Comece
configurando um endereço IPv6 para
a interface do roteador no segmento
da LAN (listagem 4).
Perceba que a configuração fa‑
mily inet aparece quando executo
o comando show. Essa configuração
é do IPv4, que não foi modificado
e continua a funcionar como antes.
Apenas a informação relativa ao IPv6
é adicionada, em family inet6.
Com essa configuração, meu
roteador já está pronto para que
os hosts ofereçam endereços IPv6
automaticamente (através de autoconfiguração stateless) e para darem
ping no roteador ou entre si usando
o IPv6. No entanto, para que as coisas funcionem no acesso à internet,
será preciso adicionar informações
de roteamento IPv6 ao roteador. O
mais fácil a fazer é simplesmente
definir uma rota padrão (listagem 5).
Com a rota padrão estabelecida,
tudo está pronto para que o(s) host(s)
funcionem com o IPv6. No restante
deste artigo mostrarei como fazer vários serviços funcionarem em IPv6,
em um servidor Linux.
Para começar, farei uma checagem
básica de conectividade e examinarei
alguns comandos IPv6 úteis do Linux.
O comando ping6 chama o clássico
utilitário Ping para ambientes IPv6:
host% ping6 2001:db8:930:7000::1
O seguinte comando exibirá seus
endereços IPv6:
host% ip ‑f inet6 addr show
Outra versão do comando ip -f
inet6 irá aparecer nos seus vizinhos
conhecidos (como o arp IPv4):
host% ip ‑f inet6 neigh show
2001:db8:930:5ffe::1 dev eth0
lladdr 2c:6b:f5:03:0a:20
Adicionar
capacidade IPv6
Agora que seu host tem conectividade
IPv6 básica, ou pelo menos alguma
forma de segurança IPv6 em vigor,
é hora de começar a adicionar capacidades IPv6 em seus serviços de
69
REDES | IPv6
rede. Em geral, isso é mais fácil do
que se imagina.
As seções seguintes descrevem
como criar serviços IPv6 de DNS,
IMAP e POP, SMTP, HTTP e DNS.
Estes importantes serviços de rede
irão levá-lo a um suporte IPv6 com-
pleto, mas saiba que a maioria das
dicas estão em softwares in-house,
bem como a análise de logs, monitoramento ou sistemas de fornecimento
que ainda não podem trabalhar com
endereços IPv6 ou armazená-los em
bancos de dados.
Criar uma visualização
limitada de DNS
O próximo passo é criar uma visualização separada para os clientes DNS
autorizados para que seja possível a
utilização de serviços IPv6 sem afe-
Listagem 1: Configuração iptables
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
70
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH‑Firewall‑1‑INPUT ‑ [0:0]
‑A INPUT ‑j RH‑Firewall‑1‑INPUT
‑A FORWARD ‑j RH‑Firewall‑1‑INPUT
# Don’t block Loopback
‑A RH‑Firewall‑1‑INPUT ‑i lo ‑j ACCEPT
# Permit Syslog
‑A RH‑Firewall‑1‑INPUT ‑d 192.0.2.2/32 ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 514 ‑j ACCEPT
# Permit BFD (for OSPF)
‑A RH‑Firewall‑1‑INPUT ‑d 192.0.2.2/32 ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 3784 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑d 192.0.2.2/32 ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 3784 ‑j ACCEPT
# Permit ICMP
‑A RH‑Firewall‑1‑INPUT ‑p icmp ‑‑icmp‑type any ‑j ACCEPT
# Permit ESP and AH (for IPSEC)
‑A RH‑Firewall‑1‑INPUT ‑p 50 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑p 51 ‑j ACCEPT
# Permit hosts on local LAN
‑A RH‑Firewall‑1‑INPUT ‑s 192.0.2.0/24 ‑j ACCEPT
# Permit established sessions already in state table
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state ESTABLISHED,RELATED ‑j ACCEPT
# Permit SSH
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 22 ‑j ACCEPT
# Permit DNS
‑A RH‑Firewall‑1‑INPUT ‑s 192.0.2.0/24 ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 53 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑s 192.0.2.0/24 ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 53 ‑j ACCEPT
# Rate Limit external DNS queries
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 53 ‑m limit ‑‑limit 30/minute ‑‑limit‑burst 90 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 53 ‑m limit ‑‑limit 30/minute ‑‑limit‑burst 90 ‑j ACCEPT
# Permit TFTP
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 69 ‑j ACCEPT
# Permit SMTP
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 25 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 587 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 465 ‑j ACCEPT
# Permit MySQL
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 3306 ‑j ACCEPT
# Permit DHCP/BootP
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 67 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 68 ‑j ACCEPT
# Permit HTTP
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 80 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 443 ‑j ACCEPT
# Permit LPD and CUPS from local network
‑A RH‑Firewall‑1‑INPUT ‑s 192.0.2.0/24 ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 111 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑s 192.0.2.0/24 ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 631 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑s 192.0.2.0/24 ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑sport 111 ‑j ACCEPT
# Log failed packets
‑A RH‑Firewall‑1‑INPUT ‑j LOG
# Send back an administratively prohibited ICMP message for non‑matching packets
‑A RH‑Firewall‑1‑INPUT ‑j REJECT ‑‑reject‑with icmp‑host‑prohibited
COMMIT
http://www.linuxmagazine.com.br
IPv6 | REDES
tar outros clientes. Esta alternativa
é um pouco mais complicada, mas
muito melhor do que a utilização de
nomes separados para serviços IPv6.
Uma visualização separada é mais
difícil, pois é necessário manter arquivos de zonas duplicados e uma confi-
guração separada para a visualização,
além de um ACL para clientes autorizados. Por outro lado, a boa notícia
é que, devido ao fato de ser possível
mudar para a produção com poucas
alterações no servidor web, não haverá problemas com certificados X.509
para serviços SSL/TLS. Por isso, essa
opção oferece um ambiente de teste
mais próximo da realidade.
Todos os exemplos de DNS deste artigo baseiam-se no BIND, mas
outros servidores de nomes terão a
mesma capacidade.
Listagem 2: Configuração ip6tables
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH‑Firewall‑1‑INPUT ‑ [0:0]
‑A INPUT ‑j RH‑Firewall‑1‑INPUT
‑A FORWARD ‑j RH‑Firewall‑1‑INPUT
# Don’t block Loopback
‑A RH‑Firewall‑1‑INPUT ‑i lo ‑j ACCEPT
# Permit Syslog
‑A RH‑Firewall‑1‑INPUT ‑d 2001:db8:feed:face::2/128 ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 514 ‑j ACCEPT
# Permit BFD (for OSPF)
‑A RH‑Firewall‑1‑INPUT ‑d 2001:db8:feed:face::2/128 ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 3784 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑d 2001:db8:feed:face::2/128 ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 3784 ‑j ACCEPT
# Permit ICMP
‑A RH‑Firewall‑1‑INPUT ‑p icmp ‑‑icmp‑type any ‑j ACCEPT
# Permit ESP and AH (for IPSEC)
‑A RH‑Firewall‑1‑INPUT ‑p 50 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑p 51 ‑j ACCEPT
# Permit hosts on local LAN
‑A RH‑Firewall‑1‑INPUT ‑s 2001:db8:feed:face::0/64 ‑j ACCEPT
# Permit established sessions already in state table
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state ESTABLISHED,RELATED ‑j ACCEPT
# Permit SSH
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 22 ‑j ACCEPT
# Permit DNS
‑A RH‑Firewall‑1‑INPUT ‑s 2001:db8:feed:face::0/64 ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 53 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑s 2001:db8:feed:face::0/64 ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 53 ‑j ACCEPT
# Rate Limit external DNS queries
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 53 ‑m limit ‑‑limit 30/minute ‑‑limit‑burst 90 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 53 ‑m limit ‑‑limit 30/minute ‑‑limit‑burst 90 ‑j ACCEPT
# Permit TFTP
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 69 ‑j ACCEPT
# Permit SMTP
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 25 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 587 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 465 ‑j ACCEPT
# Permit MySQL
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 3306 ‑j ACCEPT
# Permit DHCP/BootP
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 67 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 68 ‑j ACCEPT
# Permit HTTP
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 80 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 443 ‑j ACCEPT
# Permit LPD and CUPS from local network
‑A RH‑Firewall‑1‑INPUT ‑s 2001:db8:feed:face::0/64 ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑dport 111 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑s 2001:db8:feed:face::0/64 ‑m state ‑‑state NEW ‑m tcp ‑p tcp ‑‑dport 631 ‑j ACCEPT
‑A RH‑Firewall‑1‑INPUT ‑s 2001:db8:feed:face::0/64 ‑m state ‑‑state NEW ‑m udp ‑p udp ‑‑sport 111 ‑j ACCEPT
# Log failed packets
‑A RH‑Firewall‑1‑INPUT ‑j LOG
# Send back an administratively prohibited ICMP message for non‑matching packets
‑A RH‑Firewall‑1‑INPUT ‑j REJECT ‑‑reject‑with icmp‑host‑prohibited
COMMIT
Linux Magazine #69 | Agosto de 2010
71
REDES | IPv6
Listagem 3: Configuração do roteador
01 router> edit
02 [edit]
03 router# set system internet‑options
ipip‑path‑mtu‑discovery
04 router# edit interfaces ip‑0/0/0.0 05 edit
interfaces ip‑0/0/0 unit 06 router# set description
“6in4 tunnel to Hurricane Electric Tunnel Broker”
07 edit interfaces ip‑0/0/0 unit
08 router# set point‑to‑point
09 edit interfaces ip‑0/0/0 unit
10 router# set tunnel source 203.0.113.89
11 edit interfaces ip‑0/0/0 unit
12 router# set tunnel destination 198.51.100.5
13 edit interfaces ip‑0/0/0 unit
14 router# set tunnel path‑mtu‑discover
15 edit interfaces ip‑0/0/0 unit
16 router# set family inet6 mtu 1280
17 edit interfaces ip‑0/0/0 unit
18 router# set family inet6 address
2001:db8:930:7000::2/64
19 edit interfaces ip‑0/0/0 unit
Começaremos com a criação de
uma visualização customizada em
named.conf, assumindo que o domínio existente seja example.com e seu
arquivo named.conf se pareça com o
mostrado na listagem 6.
O primeiro passo é adicionar
uma lista de hosts para ser incluída
no teste do IPv6. Esses hosts serão
os que poderão ver as versões IPv6
do(s) arquivo(s) de zona.
Antes da linha 21 na listagem 6,
onde se lê zone example.com {, inclua
o seguinte:
acl v6_clients {
192.0.2.147;
192.0.2.159;
192.0.2.223;
};
Depois, será necessário criar múltiplas visualizações das zonas. Primeiro, copie o arquivo named.example.com
para um novo arquivo chamado na‑
med6.example.com. Depois, modifique
named.conf para que ele fique como
o da listagem 7.
Na listagem 7, cada visualização
precisa conter o conjunto completo
de domínios que serão visíveis aos
clientes que foram atribuídos a essa
visualização. Por esse motivo é que
72
20 router# show
21 description "6in4 tunnel to Hurricane Electric
Tunnel Broker";
22 point‑to‑point;
23 tunnel {
24 source 203.0.113.89;
25 destination 198.51.100.5;
26 path‑mtu‑discovery
27 }
28 family inet6 {
29 mtu 1280;
30 address 2001:db8:930:7000::2/64;
31 }
32 edit interfaces ip‑0/0/0 unit
33 router# top
34 [edit]
35 router# commit and‑quit
36 commit complete
37 Exiting configuration mode
38
39 router>
as zonas reversas são definidas nas
duas visualizações. Repare, no entanto, que as zonas reversas usam o
mesmo arquivo master nas duas visualizações, portanto, apresentarão
as mesmas informações. Apenas a
zona example.com usa um arquivo
diferente.
Continue e faça o IPv6 reverso
visível, pois isso não terá efeitos colaterais e poupará tempo mais para
a frente.
Um registro DNS AAAA é associado ao nome de domínio com um
endereço IPv6. Nesse ponto, é possível adicionar os registros AAAA à
versão v6 do arquivo de zona example.
com (named6.example.com). O formato
será mais ou menos o seguinte:
host IN A 192.0.2.153
IN AAAA 2001:db8:930:5ffe::99
Não se esqueça de atualizar o
número serial de seu SOA. Não é
necessário manter a sincronia dos
números seriais das duas versões
do arquivo de zona example.com. Na
verdade, alguns sites usam diferenças deliberadas nos números seriais
para mostrar com facilidade qual
visualização está visível a um determinado cliente.
O próximo passo é recarregar seu
servidor de nome (faça isso a partir do
servidor de nome) e ver se tudo funcionou (faça isso a partir de um dos hosts
com permissão na ACL v6_clients).
Serviço de email
A listagem 8 mostra as partes relevantes do arquivo dovecot.conf para
o servidor IMAP/POP3 Dovecot antes
da inclusão das capacidades IPv6.
As configurações IPv4 e IPv6 da Dovecot são similares, então, assumindo
que o padrão está sendo utilizado e
os endereços disponíveis estão sendo
escutados, o Dovecot adotará o IPv6
na próxima reinicialização, depois
que o IPv6 for habilitado no sistema.
Se estiver usando um aplicativo
diferente para o IMAP, o POP ou
ambos os serviços, as coisas podem
ser diferentes. Para o SMTP, a listagem 9 mostra como eram as porções
relevantes do protocolo no meu arquivo sendmail.mc antes da introdução do IPv6.
Uma mudança simples deixará
seu SMTP pronto para o IPv6 (listagem 10). Quais linhas ficarão sem o
comentário na listagem 10 depende
da sua configuração. Na maioria dos
sistemas, uma escuta IPv6 irá escutar
o IPv4 e o IPv6. No entanto alguns
http://www.linuxmagazine.com.br
IPv6 | REDES
sistemas, como o BSD, possuem
uma característica que exige que se
use escutas separadas para o IPv4 e o
IPv6. Se estiver em um sistema BSD
ou algo semelhante, será preciso tirar o comentário das versões v4 e v6.
No Linux, tire o comentário da
linha v4 (usando dnl no início da linha) e adicione a linha v6. Os nomes
(MTA‑v4, MTA) não são muito importantes, a menos que haja referência
a eles em algum outro lugar na sua
configuração. Nesse caso, é importante se certificar de que são semelhantes e de que qualquer elemento
de configuração MTA necessário está
duplicado – no caso de estas linhas
terem seus comentários retirados.
Protocolo HTTP
(servidor web)
O Apache facilita a migração de um
host virtual de uma pilha simples IPv4
para uma dupla IPv4/IPv6. Primeiro,
a configuração IPv4 original:
Listen 192.0.2.7:80
<VirtualHost 192.0.2.7:80>
ServerName www.example.com
...
E essas linhas permitem o suporte
a pilha dupla:
Listen 192.159.10.7:80
Listen [2001:db8::400:7]:80
<VirtualHost 192.159.10.7:80
[2001:db8::400:7]:80>
ServerName www.delong.com
...
Perceba que apenas uma declaração
Listen adicional é necessária para o
endereço IP adicional e um endereço IP adicional enunciado na declaração VirtualHost, que aponta uma
consideração adicional para o IPv6.
A notação costumeira de :<port>
no fim de um endereço IP não é
inteiramente compatível com o uso
de dois pontos (:) como delimitador
Linux Magazine #69 | Agosto de 2010
dentro de um endereço IPv6, por
isso a solução padrão na maioria dos
aplicativos e bibliotecas é incluir os
valores endereço/porta dentro de
colchetes (]) seguido de dois pontos
e o número da porta.
Funcionamento
do DNS
Quando os outros serviços estiverem
prontos e funcionando, é hora de
voltar ao BIND e mover a configuração IPv6 do ambiente de teste para
o de produção. Em primeiro lugar,
não são necessárias modificações em
nenhum dos servidores do ambiente
de teste, portanto, o que será feito é
alterar o DNS para que todos saibam
de sua capacidade IPv6.
NOTA: Agora é a hora de se certificar de que as únicas diferenças
entre os arquivos de zona do IPv4 e
do IPv6 são os registros AAAA:
diff <v4zone> <v6zone> | grep '^>'
| grep ‑v '\s+AAAA\s+'
Se esse comando retornar algum
dado, provavelmente será preciso
atualizar seu arquivo de zona IPv6
antes de prosseguir.
Se o teste anterior não gerar nenhum
resultado (ou se a atualização necessária
foi feita), está na hora de mudar tudo
para a produção. Em primeiro lugar,
salve o arquivo atual named.example.
com em algum lugar, caso tenha que
desfazer tudo. Depois, substitua na‑
med.example.com com o conteúdo (ou
o próprio arquivo) named6.example.com.
Verifique se a atualização do número
de série foi feita – um número maior
do que o último no named.example.com
anterior. Por fim, remova a visualização
de teste v6 e, opcionalmente, remova
o wrapper de zona da configuração
restante. Após completar esses passos,
o arquivo named.conf ficará como o da
listagem 11.
Conclusão
Neste ponto, terminou a migração
básica de um ambiente pequeno e
simples para o IPv6. Em um ambiente
mais complexo, alguns passos adicionais precisarão ser considerados. Por
exemplo, sistemas de monitoramento,
sistemas de fornecimento, bem como
qualquer parser de log podem precisar de atualizações para acomodar o
IPv6 em seus respectivos bancos de
dados e/ou bibliotecas.
É perfeitamente possível que o mundo
fique sem endereços IPv4 antes do
final de 2011, por isso, agora é uma
boa hora para começar a experimentar o protocolo IPv6. n
Mais informações
[1]Tunnel Broker: http://tunnelbroker.net
[2]SixXS: http://www.sixxs.net
[3]WhatIsMyIPAddress.com: http://whatismyipaddress.com
[4]Listagens de códigos: http://lnm.com.br/issues/69/ipv6.zip
Gostou do artigo?
Queremos ouvir sua opinião. Fale conosco em
[email protected]
Este artigo no nosso site:
http://lnm.com.br/article/3732
73