• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Redes - IPv6 Pratica
 

Redes - IPv6 Pratica

on

  • 10,761 views

 

Statistics

Views

Total Views
10,761
Views on SlideShare
10,728
Embed Views
33

Actions

Likes
0
Downloads
238
Comments
0

2 Embeds 33

http://www.slideshare.net 22
http://ipvseis.blogspot.com 11

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Redes - IPv6 Pratica Redes - IPv6 Pratica Presentation Transcript

    • 1 IPv6 - Linux Luiz Arthur IPv6 é o novo protocolo da camada de rede (no modelo OSI), ou a camada de Inter-rede (no modelo TCP/IP) o qual sucede o IPv4 (conhecido apenas como IP). O IPv4 foi projetado a muito tempo atrás e seu endereçamento esta deixando a desejar na Internet atual. Por isto, a maior diferença entre o IPv6 quanto ao IPv4 é com certeza o aumento do tamanho de representação de hosts dentro do cabeçalho IPv6 que passa de 32 bits para 128 bits. Isto possibilita endereças bilhares de máquinas sem se preocupar com a falta de endereços representados na rede. O Linux começou a tratar o IPv6 em novembro de 1996 com o Kernel 2.1.8, mas foram códigos experimentais nada muito sério, sendo então tratado com mais rigor em outubro de 2000, no Kernel 2.4 e 2.6. Formato do endereçamento do IPv6 Um número de 128 bits é muito longo, e se fosse representado em decimal, tal como o IPv4 seriam necessário ~39 dígitos. Isto tornaria o endereço IPv6 difícil de se memorizar. Assim, o IPv6 adotou um esquema de endereçamento em hexadecimal, neste esquema endereçamos representamos de uma só vez 4 bits (conhecidos como nibble) que são representados por dígitos 0-9 ou caracteres a-f (10-15). Este formato reduz o endereçamento para 32 caracteres.
    • 2 IPv6 - Linux Luiz Arthur Para melhorar o aspecto esses números foram separados de 16 em 16 bits tal como: 2001:0db8:0100:f101:0210:a4ff:fee3:9566 Uma seqüência de blocos de 16 bits contento apenas zeros podem ser representado por “::”, mas somente uma vez. 2001:0bd8:100:f101:0:0:0:1 é igual a 2001:bd8:100:f101::1 Uma boa redução de um endereço IPv6 seria: 0000:0000:0000:0000:0000:0000:00000:0001 a forma abreviada seria ::1 Esta forma de endereçamento é chamada de compacta (compact, ou codificada na base85).
    • 3 IPv6 - Linux Luiz Arthur Endereços especiais De todo espaço de endereçamento IPv6, apenas 15% estão previamente alocado para uso, ficando os 85% restantes reservados para o futuro. O endereço IPv6 que representa a interface de loopback, similar ao 127.0.0.1 do IPv4 é: 0000:0000:0000:0000:0000:0000:0000:0001 ou comprimido: ::1 Endereços de mapeamento entre IPv4 e IPv6 A terceira forma de representação, mais conveniente quando em ambientes mistos com hosts IPv4 e IPv6, é da forma x:x:x:x:x:x:d:d:d:d, onde os "x" são números hexadecimais (16 bits) e os "d" são valores decimais de 8 bits referentes à representação padrão já bem conhecida do IPv4.
    • 4 IPv6 - Linux Luiz Arthur Espera-se que o IPv6 conviva por muito tempo com o IPv4, desta forma, criou-se um esquema de endereço IPv6 para fazer mapeamentos aos endereços IPv4, tal como: 0:0:0:0:0:ffff:a.b.c.d/96 na forma comprimida o formato é: ::ffff:a.b.c.d/96 Por exemplo, o endereço IPv4 192.168.1.100 ficaria no IPv6 com: ::ffff:192.168.1.100 O contrário também é possível ou seja IPv4 no IPv6 tal endereço é representado da seguinte forma: 0:0:0:0:0:0:a.b.c.d/96 no formato comprimido: ::a.b.c.d/96
    • 5 IPv6 - Linux Luiz Arthur Endereço não especificado Em IPv4 “0.0.0.0” ou “any” é representado no IPv6 por: 0000:0000:0000:0000:0000:0000:0000:0000 ou :: Prefixos (tipos de endereços IPv6) Especificamente, o prefixo definido pelos primeiros bits do endereço indica cada tipo de endereço IPv6. O campo variável que compreende esses bits é denominado Format Prefix (FP). Aggregatable Global Unicast Addresses Este é o endereço unicast que será globalmente utilizado na Internet. Seu novo formato possui sete campos: o prefixo de 3 bits (001), um identificador TLA (Top-Level Aggregation), um campo RES reservado, um identificador NLA (Next- Level Aggregation), um identificador SLA (Site-Level Aggregation) e o identificador da interface: bits: 3 13 8 24 16 64 FP TLA ID RES NLA ID SLA ID InterfaceID
    • 6 IPv6 - Linux Luiz Arthur Local-Use IPv6 Address Existem dois de endereços para uso local: link-local e site-local. Link-local : endereço identificado por um prefixo de 10 bits (1111111010), definido para uso interno num único enlace para funções como auto- configuração de endereços, descoberta do vizinho (neighbor discovery) ou quando não há roteador. Estações ainda não configuradas, ou com um endereço global unicast ou com um site-local, poderão utilizar um endereço link-local. Os roteadores não devem repassar pacotes com endereço fonte ou destino deste tipo; Um endereço de link local tem os seguintes prefixos: fe8X: (o mais utilizado), fe9X:, feaX: e febX:. Onde “X” é um caracter hexadecimal normalmente o “0” Site-local: endereço identificado pelo prefixo de 10 bits (1111111011), definido para uso interno numa organização que não se conectara à Internet, e não há necessidade de uso de um prefixo global. Os roteadores não devem repassar pacotes cujos endereços origem ou destino sejam endereços site-local. Um endereço site-local é identificado pelos prefixos: fecX: (o mais utilizado), fedX:, feeX: e fefX. Onde “X” deve ser subustituido por um caracter hexadecimal, sendo normalmente o “0”.
    • 7 IPv6 - Linux Luiz Arthur Os endereços IPv6 unicast foram projetados assumindo que os sistemas de roteamento da Internet repassam pacotes baseado num algoritmo de cálculo do prefixo mais longo, sem nenhum conhecimento da estrutura interna do endereço IPv6. O tipo específico de endereço IPv6 é indicado pelos primeiros bits do endereço (FP). Dentre os tipos de endereços unicast apresentados anteriormente, foram apresentados os endereços Aggregatable Global Unicast Addresses a serem globalmente utilizados na Internet e definidos pelo formato de prefixo (FP = 001) para suportar a agregação provider-based, definida inicialmente pela RFC 1884, e um novo tipo de agregação denominada como exchange-based. Esta combinação permitirá uma agregação eficiente de rotas, tanto para sites conectados a provedores, quanto para aqueles conectados aos pontos de troca de tráfego (exchanges). 3 13 8 24 16 64 FP TLA ID RES NLA ID SLA ID InterfaceID sendo: FP - Format Prefix de 3 bits, neste caso igual a 001; TLA ID - Identificador Top-Level Aggregation de 13 bits; RES - 8 bits reservados para uso futuro, e deve ter todos os bits zerados; NLA ID - Identificador Next-Level Aggregation de 24 bits; SLA ID - Identificador Site-Level Aggregation de 16 bits; Interface ID - Identificador da interface de 64 bits.
    • 8 IPv6 - Linux Luiz Arthur Em termos de topologia, essa estrutura permite uma organização em três níveis hierárquicos: pública, site e identificador de interface. A topologia pública (campos TLA, RES, e NLA) reflete o conjunto de provedores de serviços Internet, provedores de trânsito e pontos de troca de tráfego. A topologia site (campos SLA) tem abrangência local, uma organização específica que não provê serviços de trânsito para outras organizações ou sites. Já o identificador de interface (campos Interface ID), como o próprio nome indica, identifica a interface do node. Top-Level Aggregation ID Os identificadores TLA são o topo da hierarquia de roteamento. Este formato suporta 8.192 (213) identificadores TLA, que podem ser aumentados ou através do aumento do tamanho do campo TLA, utilizando os bits reservados do campo RES, ou utilizando um prefixo de formato adicional. Os roteadores default-free devem ter uma entrada na tabela de roteamento para cada TLA ID ativo, e podem ter entradas adicionais para otimizar o roteamento de suas topologias específicas. Mas, em todos os níveis, a topologia de roteamento deve ser projetada para minimizar a quantidade de entradas na tabela de roteamento. Está sendo produzido um documento específico para o campo TLA.
    • 9 IPv6 - Linux Luiz Arthur Site-Level Aggregation ID O identificador SLA é utilizado por uma organização individual, que é responsável para definir a estrutura de endereços do espaço SLA. Dentro deste espaço, a organização pode criar localmente sua própria estrutura de endereçamento hierárquica, num procedimento similar às divisão em sub-redes do IPv4, só que com um número muito maior de sub-redes. Interface ID Os identificadores de interface (Interface ID), como o próprio nome indica, são utilizados para identificar interfaces de um enlace específico e devem ser únicos para esse link. Também devem ser únicos num escopo mais abrangente. Em muitos casos, o identificador de interface será o endereço de interface da camada de enlace ou obtido a partir deste. Endereços IPv6 de Produção Atualmente, já estão sendo oferecidos endereços IPv6 de produção pelos três Regional Internet Registries (RIR): ARIN, RIPE NCC e APNIC. Inicialmente, foi reservado pela IANA o prefixo TLA 2001::/16 para endereçamento de produção. Sob esse prefixo, são alocados os identificadores para backbones, utilizando para isso o campo Sub-TLA. O tamanho do prefixo mínimo alocado é de 35 bits.
    • 10 IPv6 - Linux Luiz Arthur O processo de alocação utiliza um procedimento chamado slow start. Ao se obter um identificador Sub-TLA, os 6 bits seguintes são reservados pelo RIR que fez a alocação. O RIR só fará alocações subseqüentes desse espaço reservado quando a organização tiver utilizado pelo menos 80% do espaço previamente alocado. Endereçamento no 6Bone Com o propósito de utilizar o mínimo do espaço de endereçamento de produção IPv6, a IANA alocou ao Projeto 6Bone o prefixo TLA 3FFE::/16. Esse endereço é especificado no RFC 2471 - IPv6 Testing Address Allocation. Sob esse prefixo, o 6Bone criou um formato próprio para o particionamento de seu espaço endereços. Esse formato é baseado no utilizado em endereços de produção, especificado no RFC 2374 - An IPv6 Aggregatable Global Unicast Address Format. O suporte ao IPv6 no Kernel Linux Para que seu computador de suporte ao novo protocolo IPv6 é necessário que este esteja sendo executado pelo Kernel (núcleo do Sistema Operacional), uma forma de verificar se este está ou não no Kernel e verificando a existência do arquivo /proc/net/if_inet6, para tanto é possível executar o seguinte comando: # test -f /proc/net/if_inet6 && echo "O Kernel está executando IPv6”
    • 11 IPv6 - Linux Luiz Arthur Se tudo estiver bem, será apresentado a mensagem "O Kernel está executando IPv6”, caso contrário não será apresentada mensagem alguma e o Kernel não esta dando suporte ao Ipv6. Carregando modulo IPv6 no Kernel Linux Uma forma simples de dar suporte ao IPv6, é carregando o modulo do IPv6 no kernel. Para tanto basta executar o seguite comando: #modprobe ipv6 Agora para ter a certeza que este modulo foi atribuído ao Kernel Linux basta executar o seguinte comando: # lsmod |grep -w 'ipv6' && echo "O IPv6 foi carregado corretamente” Caso seja mostrado a mensagem "O IPv6 foi carregado corretamente” o Linux estará pronto para trabalhar com o IPv6, caso contrário será necessário re-compilar o Kernel. Caso queira-se trabalhar com freqüência com o IPv6 é melhor carregar o modulo do IPv6 sempre que o Linux for iniciado no computador, para tanto basta editar os arquivos /etc/modules.conf ou /etc/conf.modules, e acrescentar a seguinte linha: alias net-pf-10 ipv6 # automatically load IPv6 module on demand
    • 12 IPv6 - Linux Luiz Arthur Verificando se as ferramentas de configuração de rede estão prontas para o IPv6 Os pacotes de programas que tratam de aspectos de rede devem dar suporte ao IPv6 para que possamos configurar corretamente os serviços, para tanto podemos executar os seguinte comandos: # ifconfig -? 2>& 1|grep -qw 'inet6' && echo "ifconfig pronto para o IPv6" # route -? 2>& 1|grep -qw 'inet6' && echo "route pronto para o IPv6" # ip 2>&1 |grep -qw 'inet6' && echo "ip pronto para o IPv6" Caso exista uma saída para os comandos anteriores o IPv6 está pronto para ser implementado, caso contrário você precisará reinstalar tais ferramentas com suporte a Ipv6. O comando ip é atualmente o comando que dá mais suporte a configuração de redes, este por exemplo, substitui os comandos ifconfig e route, implementando ainda funções avançadas de configuração de redes (que não estão disponíveis nos comandos ifconfig e route), porém as distribuições Linux mais antigas podem não possuir tal ferramenta de rede.
    • 13 IPv6 - Linux Luiz Arthur Configurando Interfaces com IPv6 Para configurar a interfaces de rede com IPv6 podemos utilizar o tanto o comando ifconfig quanto o ip. Usando o ifconfig: Vamos dar uma olhada na interface lo, e ver se o endereço IPv6 está correto: #ifconfig lo lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:12 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:760 (760.0 b) TX bytes:760 (760.0 b) Bem a saída anterior é apresentada antes do modulo IPv6 ser carregada no Kernel, o comando a seguir mostra o mesmo comando já com a adição de suporte do IPv6 no Kernel.
    • 14 IPv6 - Linux Luiz Arthur # ifconfig lo lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:12 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:760 (760.0 b) TX bytes:760 (760.0 b) Agora podemos observar no comando anterior a existência de uma nova linha à: inet6 addr: ::1/128 Scope:Host. Tal linha indica a presença do endereço localhost ::1 atribuído a uma interface local via IPv6. Logo após iniciar o modulo IPv6 no Kernel Linux, podemos ligar, por exemplo, a primeira placa de rede Ethernet do computador, para isto iremos apenas executar o comando: #ifconfig eth0 up
    • 15 IPv6 - Linux Luiz Arthur Em seguida podemos verificar o status desta placa de rede com o comando ifconfig e a saída será algo como: #ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:6E:0D:A6:DF inet6 addr: fe80::20c:6eff:fe0d:a6df/64 Scope:Link UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:238 (238.0 b) Interrupt:11 Base address:0xe000 Podemos observar que existe um endereço inet6 (IPv6) atribuído a interface, tal endereço é atribuído automaticamente pelo IPv6, baseado no endereço físico da placa de rede. Está prática pode ser utilizada para substituir servidores DHCP. Atribuindo endereços IPv6 com o ifconfig: #ifconfig <interface> inet6 add <ipv6address>/<prefixlength> Exemplo: #ifconfig eth0 inet6 add 2001:0db8:0:f101::1/64
    • 16 IPv6 - Linux Luiz Arthur Já para remover um endereço IPv6 utilize as seguintes opções: #ifconfig <interface> inet6 del <ipv6address>/<prefixlength> Exemplo: #ifconfig eth0 inet6 del 2001:0db8:0:f101::1/64 Usando o comando ip: Para ligar ou desligar as interfaces de rede com o comando ip, utilize os seguintes comando respectivamente: # ip link set dev <interface> up # ip link set dev <interface> down Exemplo: # ip link set dev eth0 up # ip link set dev eth0 down
    • 17 IPv6 - Linux Luiz Arthur Já para verificar o status das interfaces utilize as seguintes opções: # /sbin/ip -6 addr show dev <interface> Exemplo: #ip -6 addr show dev eth0 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> qlen 1000 inet6 fe80::20c:6eff:fe0d:a6df/64 scope link Atribuindo endereços IPv6 via comando ip: #ip -6 addr add <ipv6address>/<prefixlength> dev <interface> Exemplo: #ip -6 addr add 2001:0db8:0:f101::1/64 dev eth0 Removendo endereços IPv6 com o comando ip: #ip -6 addr del <ipv6address>/<prefixlength> dev <interface> Exemplo: #ip -6 addr del 2001:0db8:0:f101::1/64 dev eth0
    • 18 IPv6 - Linux Luiz Arthur Configurando rotas com IPv6 Exibindo rotas existentes, para tanto você pode utilizar o ip ou o route: #ip -6 route show [dev <device>] Exemplo: ip -6 route show dev eth0 2001:0db8:0:f101::/64 proto kernel metric 256 mtu 1500 advmss 1440 fe80::/10 proto kernel metric 256 mtu 1500 advmss 1440 ff00::/8 proto kernel metric 256 mtu 1500 advmss 1440 default proto kernel metric 256 mtu 1500 advmss 1440 Ou: #route -A inet6 |grep -w "eth0" 2001:0db8:0:f101 ::/64 :: UA 256 0 0 eth0 <-Interface route for global address fe80::/10 :: UA 256 0 0 eth0 <-Interface route for link-local address ff00::/8 :: UA 256 0 0 eth0 <-Interface route for all multicast addresses ::/0 :: UDA 256 0 0 eth0 <-Automatic default route
    • 19 IPv6 - Linux Luiz Arthur Adicionando uma rota para um gateway: #ip -6 route add <ipv6network>/<prefixlength> via <ipv6address> [dev<device>] Exemplo: #ip -6 route add 2000::/3 via 2001:0db8:0:f101::1 Ou: #route -A inet6 add <ipv6network>/<prefixlength> gw <ipv6address> [dev<device>] Exemplo: #route -A inet6 add 2000::/3 gw 2001:0db8:0:f101::1 Para remover a rota basta substituir o add por del tanto no comando ip quanto no route.
    • 20 IPv6 - Linux Luiz Arthur Adicionando rotas através de interfaces Não freqüentemente é necessário fazer rotas ponto-a-ponto, para é possível utilizar os seguintes comandos: #ip -6 route add <ipv6network>/<prefixlength> dev <device> metric 1 Exemplo: #ip -6 route add 2000::/3 dev eth0 metric 1 Ou: #route -A inet6 add <network>/<prefixlength> dev <device> Exemplo: #route -A inet6 add 2000::/3 dev eth0 Novamente para apagar este tipo de rota execute substitua a opção add por del.
    • 21 IPv6 - Linux Luiz Arthur Ping no IPv6 O comando ping que é utilizado para enviar mensagens ICMP e descobrir se hosts estão ou não disponíveis na rede, também existe na IPv6, mas é o ICMPv6. Para utilizar tal funcionalidade utilize o seguinte comando: # ping6 <hostwithipv6address> # ping6 <ipv6address> # ping6 [-I <device>] <link-local-ipv6address> Exemplo: # ping6 -c 1 ::1 PING ::1(::1) from ::1 : 56 data bytes 64 bytes from ::1: icmp_seq=0 hops=64 time=292 usec --- ::1 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max/mdev = 0.292/0.292/0.292/0.000 ms
    • 22 IPv6 - Linux Luiz Arthur Usando um endereço link-local, o Kernel não conhece a interface física ou virtual, e teremos como resultado um erro, tal como: # ping6 fe80::212:34ff:fe12:3456 connect: Invalid argument Neste caso temos que especificar a interface de rede, tal como: # ping6 -I eth0 -c 1 fe80::2e0:18ff:fe90:9205 PING fe80::212:23ff:fe12:3456(fe80::212:23ff:fe12:3456) from ¬ fe80::212:34ff:fe12:3478 eth0: 56 data bytes 64 bytes from fe80::212:23ff:fe12:3456: icmp_seq=0 hops=64 time=445 usec --- fe80::2e0:18ff:fe90:9205 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max/mdev = 0.445/0.445/0.445/0.000 ms Utilizando ping com endereços multicast Para pingar um endereço multicast o comando é: # ping6 -I eth0 ff02::1 PING ff02::1(ff02::1) from fe80:::2ab:cdff:feef:0123 eth0: 56 data bytes 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.104 ms 64 bytes from fe80::212:34ff:fe12:3450: icmp_seq=1 ttl=64 time=0.549 ms (DUP!)
    • 23 IPv6 - Linux Luiz Arthur IPv6 com o traceroute6 O traceroute6 é similar ao traceroute do IPv4, por exemplo: # traceroute6 www.6bone.net traceroute to 6bone.net (3ffe:b00:c18:1::10) from 2001:0db8:0000:f101::2, 30 ¬ hops max, 16 byte packets 1 localipv6gateway (2001:0db8:0000:f101::1) 1.354 ms 1.566 ms 0.407 ms 2 swi6T1-T0.ipv6.switch.ch (3ffe:2000:0:400::1) 90.431 ms 91.956 ms 92.377 ms 3 3ffe:2000:0:1::132 (3ffe:2000:0:1::132) 118.945 ms 107.982 ms 114.557 ms 4 3ffe:c00:8023:2b::2 (3ffe:c00:8023:2b::2) 968.468 ms 993.392 ms 973.441 ms 5 3ffe:2e00:e:c::3 (3ffe:2e00:e:c::3) 507.784 ms 505.549 ms 508.928 ms 6 www.6bone.net (3ffe:b00:c18:1::10) 1265.85 ms * 1304.74 ms Outro programa parecido com o traceroute6 é o tracepath6, porém este descobre o MTU ao longo do caminho entre os hosts. Por exemplo: # tracepath6 www.6bone.net 1?: [LOCALHOST] pmtu 1480 1: 3ffe:401::2c0:33ff:fe02:14 150.705ms 2: 3ffe:b00:c18::5 267.864ms 3: 3ffe:b00:c18::5 asymm 2 266.145ms pmtu 1280 3: 3ffe:3900:5::2 asymm 4 346.632ms 4: 3ffe:28ff:ffff:4::3 asymm 5 365.965ms 5: 3ffe:1cff:0:ee::2 asymm 4 534.704ms 6: 3ffe:3800::1:1 asymm 4 578.126ms !N Resume: pmtu 1280
    • 24 IPv6 - Linux Luiz Arthur Outro comando útil para análise de redes IPv6 é o tcpdump, este que permite a analise de trafego da rede, tal comando implementa as seguintes opções para a analise de uma rede IPv6: ● icmp6: filtra trafego ICMPv6; ● ip6: filtra trafego IPv6 (incluindo ICMPv6) ● proto ipv6: filtra tuneis IPv6-in-IPv4. Exemplos de comando tcpdump com IPv6: # tcpdump -t -n -i eth0 -s 512 -vv ip6 or proto ipv6 tcpdump: listening on eth0 2001:0db8:100:f101:2e0:18ff:fe90:9205 > 2001:0db8:100:f101::1: icmp6: echo request (len 64, hlim 64) 2001:0db8:100:f101::1 > 2001:0db8:100:f101:2e0:18ff:fe90:9205: icmp6: echo reply (len 64, hlim 64)
    • 25 IPv6 - Linux Luiz Arthur fim