UNIVERSIDADE FEDERAL DO PIAUÍ CENTRO DE CIÊNCIAS DA NATUREZA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO RICARDO DE SOUSA BRITTO ESTUDO DO PROTOCOLO IPV6 E TUTORIAL PARA IMPLANTAÇÃO DE BACKBONE IPV6 NATIVO Teresina - PI 2005 RICARDO DE SOUSA BRITTO ESTUDO DO PROTOCOLO IPV6 E TUTORIAL PARA IMPLANTAÇÃO DE BACKBONE IPV6 NATIVO Trabalho Informática de conclusão da Sociedade do e disciplina curso de Ciência da Computação da Universidade Federal do Piauí. Orientador: Profº Doutor Francisco Vieira de Souza Teresina - PI 2005 Agradecimentos Agradeço ao Prof°. Vieira pela amizade e pela orientação durante os anos que trabalhamos juntos; A meus irmãos Hugo Leonardo, Francisco David e Juliana Britto pelo apoio. A Kardec, que muito me auxiliou Alan no desenvolvimento deste trabalho. A todos os amigos , em especial, Metódio Carlos, Rômulo Lúcio, Maurício Machado, Antônio de Pádua, os quais deram sua contribuição para minha formação. VI Dedicatória Aos meus pais, José Antônio de Siqueira Britto e Teresa dos Santos Sousa Britto, pelo amor e dedicação a mim dedicados. VI “Sou humano, e tudo q é humano não me é estranho” Cícero VI RESUMO No início da década de 90, após longos estudos, constatou-se que o IPv4 não suportaria a demanda crescente por endereços. Este fato é creditado principalmente a dois fatores: O modelo de endereçamento de 32 bits do IPv4; e o surgimento de dispositivos móveis, como celulares, que requerem endereço IP. O IPv6 surgiu como uma solução para a crescente demanda de endereços IP e também para dar suporte a novas necessidades surgidas no final da última década, como tráfego multimídia e suporte a multicast. Nesta monografia se descreve as características do protocolo IPv6 e também são apresentados os resultados conseguidos com pesquisa realizada no PoPPI(Ponto de Presença da Rede Nacional de Pesquisa no Piauí), que fica hospedado na FAPEPI (Fundação de Amparo a Pesquisa do Estado do Piauí). Esta pesquisa resultou em um Tutorial, o qual também faz parte desta monografia. Palavras-chave: IPv6, Multicast, Trafego Multimídia, Internet. VI SUMÁRIO 1 INTRODUÇÃO ......................................................................................................................................1 1.1 OBJETIVOS ......................................................................................................................................2 1.2 METODOLOGIA.................................................................................................................................3 1.3 ORGANIZAÇÃO DO TRABALHO .................................................................................................3 2 O PROTOCOLO IPV6...........................................................................................................................5 2.1 MOTIVAÇÕES PARA CRIAÇÃO DO PROTOCOLO IPV6............................................................5 2.2 CARACTERÍSTICAS DO PROTOCOLO ..................................................................................................6 2.2.1 CABEÇALHO IPV6 ..........................................................................................................................6 2.2.1.1 EXTENSÕES DO CABEÇALHO IPV6 ..............................................................................9 2.2.2 ENDEREÇO IPV6................................................................................................................11 2.2.2.1 ESQUEMA DE ENDEREÇAMENTO................................................................................11 2.3 ROTEAMENTO DE PACOTES IPV6.....................................................................................................15 2.4 APLICAÇÃO DE QUALIDADE DE SERVIÇO COM PROTOCOLO IPV6.........................................................18 2.5 MECANISMOS DE TRANSIÇÃO ..........................................................................................................20 3 IPSEC: SEGURANÇA NO IPV6 .........................................................................................................23 3.1 ARQUITETURA DO IPSEC..................................................................................................................23 3.2 PROTOCOLOS DE SEGURANÇA .........................................................................................................24 4 TESTES E EXPERIÊNCIAS ...............................................................................................................33 4.2 TESTE COM O SISTEMA OPERACIONAL W INDOWS XP .........................................................................34 4.3 TESTE COM O SISTEMA OPERACIONAL KURUMIN LINUX 3 ...................................................................34 4.4 TESTE COM O SISTEMA OPERACIONAL LINUX FEDORA CORE 2 ............................................................34 4.5 ESTRUTURAÇÃO DA REDE ................................................................................................................34 5 CONCLUSÕES E TRABALHOS FUTUROS .....................................................................................37 5.1 CONTRIBUIÇÕES ............................................................................................................................38 5.2 TRABALHOS FUTUROS ...................................................................................................................38 REFERÊNCIAS BIBLIOGRÁFICAS......................................................................................................39 ANEXO I...................................................................................................................................................1 1 TUTORIAL PARA IMPLANTAÇÃO DE INTRANET IPV6 ...................................................................1 1.1 CONFIGURAÇÃO DOS HOSTS ..............................................................................................................2 1.1.1 ATIVANDO SUPORTE IPV6 ..................................................................................................2 VI 1.1.2 CONFIGURAÇÃO PERSISTENTE DE ENDEREÇOS DE REDE .........................................2 1.1.3 ATRIBUINDO ROTA DEFAULT AO HOSt .............................................................................3 1.1.4 ATRIBUINDO SERVIDOR DE DNS .......................................................................................3 1.2 CONFIGURANDO UM ROTEADOR NORMAL ...........................................................................................3 1 INTRODUÇÃO No início da década de 90, a Internet Architecture Board iniciou estudos sobre o impacto gerado pelo crescimento da Internet e, conseqüentemente, o aumento no número de endereços IP requeridos [10]. Constatou-se que o IPv4 (Internet Protocol version 4), com seu modelo de endereçamento de 32 bits, não suportaria a demanda por endereços, seja pelo crescimento do número de estações ligadas a Internet ou pelo surgimento de dispositivos, como celulares, que requerem endereço IP [10], situações que não foram previstas pelos idealizadores do IPv4. O IPv6 (Internet Protocol version 6) surgiu como uma solução para a crescente demanda de endereços IP e também para dar suporte a novas necessidades surgidas no final da última década, como tráfego multimídia e suporte a multicast. Algumas novidades do IPv6 [6]: Endereço de 128 bits; Suporte a aplicações multimídia em tempo real; Suporte a multicast e anycast; Arquitetura de endereçamentos melhor estruturada; Introdução 2 Mecanismos de segurança, incluindo encriptação e autenticação; Mobilidade; Suporte para datagramas “Jumbo”; Configuração plug-and-play [14]. Embora pilhas IPv6 nativas não possam interoperar diretamente com pilhas IPv4, foram introduzidos mecanismos de compatibilidade IPv4 no IPv6 para assegurar uma transição mais fácil [6]. A FAPEPI (Fundação de Amparo à Pesquisa do Estado do Piauí), detectando este problema, propôs, em forma de Estágio, a implementação do IPv6 no backbone do PoP-Pi ao aluno em voga. 1.1 OBJETIVOS O objetivo principal desse trabalho é, através de um estudo detalhado, mostrar todas as características do protocolo IPv6, utilizando o conhecimento adquirido para se encontrar uma solução viável para a implementação do backbone IPv6 nativo no PoP-PI. Esta implementação representa a solução, por um bom período de tempo, que será utilizada pela FAPEPI para resolver o problema de tráfego atualmente existente. Deve ser lembrado que a FAPEPI representa o órgão gerenciador da RNP (Rede Nacional de Pesquisa) no Piauí e é responsável pelas soluções que permitam às instituições superiores de ensino tais como a UFPI (Universidade Federal do Piauí), a UESPI (Universidade Estadual do Piauí) e o CEFET (Centro Federal de Ensino Tecnológico) manterem comunicação via Internet com o resto do mundo. Como um segundo objetivo, mas não menos importante, para este Estágio, é necessário que o conhecimento adquirido neste processo seja disseminado para estas mesmas unidades de ensino superior para que elas tenham um guia de procedimento para ser utilizado em suas unidades. Este objetivo será atingido através da construção de um tutorial, o mais completo e detalhado possível. Introdução 3 Finalmente, este trabalho está sendo aproveitado como Trabalho de Conclusão de Curso, como parte integrante do elenco de atividades necessárias para a formação do aluno. 1.2 METODOLOGIA A metodologia para o desenvolvimento deste trabalho foi baseada na seguinte abordagem: a) Estudo bibliográfico Levantamento bibliográfico acerca do protocolo IPv6; b) Análise de técnicas para instalação de um backbone IPv6 Foram analisadas duas técnicas de transição do protocolo IPv6 e 3 plataformas diferentes até se chegar a solução ideal para o caso da FAPEPI. c) Criação do tutorial Constituído dos passos necessários para o desenvolvimento do tutorial, a partir das experiências realizadas no PoP-PI. 1.3 ORGANIZAÇÃO DO TRABALHO O trabalho está estruturado em 6 (seis) Capítulos e mais um anexo. No primeiro Capítulo discute-se o que levou ao desenvolvimento do protocolo IPv6, os objetivos e a metodologia de trabalho. No Capítulo 2 são descritos os conceitos acerca do Protocolo IPV6, informações sobre endereçamento, cabeçalho e extensões do protocolo,roteamento de pacotes IPv6, QoS (Qualidade de Serviço) aplicada com IPv6 e mecanismos de transição utilizados entre IPv4 e IPv6 . É a parte mais importante do embasamento teórico, visto que deu suporte para as experiências e testes. O Capítulo 3 versa sobre IPsec, tecnologia que forneça segurança na camada IP. O Capítulo 4 expõe os resultados obtidos nos testes e experiências que foram feitas no laboratório da FAPEPI. Introdução 4 No Capítulo 5 são apresentadas as conclusões deste trabalho, as contribuições e os trabalhos futuros que poderão ser desenvolvidos. No último Capítulo encontram-se as referências bibliográficas consultadas nesta pesquisa, as quais podem servir para uma melhor sondagem dos tópicos abordados e possibilitando uma investigação mais detalhada. O Anexo é constituído pelo tutorial para implantação de intranets IPv6 nativas, desenvolvido a partir dos testes e experiências feitas na FAPEPI. 2 O PROTOCOLO IPV6 2.1 MOTIVAÇÕES PARA CRIAÇÃO DO PROTOCOLO IPV6 O crescimento da demanda por endereços IP foi o motivo básico que levou à definição de uma nova geração de IP. Uma lição que pode ser tirada da experiência com IPv4 é a de que o endereçamento e o roteamento devem suportar o crescimento futuro. É importante que tenhamos compreensão do crescimento passado e como será o crescimento futuro. A atual base de IPv4 é o que poderia ser chamado de mercado de computadores. O mercado de computadores foi quem guiou o crescimento da Internet. Isto inclui a Internet atual e outras incontáveis "internets" que sequer estão conectadas à grande rede. Seu enfoque é conectar computadores de grandes empresas, do governo e escolas universitárias. Este mercado ainda está crescendo a uma taxa exponencial. A faixa de computadores ligados a Internet varia de PCs a supercomputadores. A maioria encontra-se conectada a redes locais (LANs) e não são móveis. A próxima fase de crescimento, provavelmente, não será guiada pelo mercado de computadores. Enquanto este continuará crescendo a taxas significantes devido a expansão em outras áreas, como escolas e pequenos Protocolo IPv6 6 negócios, deverão surgir outros tipos de negócios, em várias áreas, cuja principal característica é a grande exigência com relação à qualidade do serviço (QoS). Estas novas exigências não são evidentes na atual fase de desenvolvimento do IPv4. O desafio enfrentado pela IETF (The Internet Engineering Task Force) no processo de escolha de um novo protocolo levou em conta um que atenda a demanda atual e a demanda dos novos mercados que estão surgindo. Estes mercados vão surgir com ou sem o IETF IPv6. Se o IETF IPv6 for uma solução boa para estes novos mercados, provavelmente, ele será usado. Senão, estes mercados desenvolverão outro protocolo, incorrendo no risco de serem criadas soluções proprietárias. A IETF está tendo a oportunidade de selecionar um protocolo que deverá ser usado nestes novos mercados. Isto teria resultados positivos, pois seria possível a criação de uma imensa estrutura para uma rede mundial com um protocolo aberto. Outra alternativa é um mundo com várias redes separadas com protocolos controlados pelos fabricantes. A experiência nos mostra que esta não seria a melhor solução. 2.2 CARACTERÍSTICAS DO PROTOCOLO O IPv6 ou ainda IPNG (Internet Protocol Next Generation) possui diferenças relevantes frente ao IPv4, principalmente no que diz respeito ao cabeçalho e ao modo de representação do endereço, pois os endereços IPv6 possuem 128 bits, sendo que os endereços IPv4 possuem 32 bits [6]. Também foram acrescentadas novas funções ao protocolo IPv6 como autenticação e encriptação [1, 2, 3, 4, 8, 12]. 2.2.1 CABEÇALHO IPV6 O IPv6 é uma versão aperfeiçoada do IPv4, sendo que o cabeçalho (Header) IPv6 possui algumas similaridades com o cabeçalho IPv4. NA figura 2.1 observa-se os o cabeçalho IPv4, na figura 2.2 observa-se o cabeçalho IPv6. Os campos em vermelho no cabeçalho IPv4 não existem no cabeçalho IPv6. Protocolo IPv6 7 Figura 2.1 Figura 2.2 O que primeiro se observa ao se comparar os dois cabeçalhos é a diferença no espaço de endereçamento, que passou de 32 bits para 128 bits. Porém, mesmo possuindo um maior espaço de endereçamento, também observa-se que o cabeçalho IPv6 não cresceu tanto em relação ao cabeçalho IPv4. Isto deve-se ao fato do cabeçalho IPv6 ter sido simplificado. Alguns campos existentes no cabeçalho IPv4 não estão presentes no cabeçalho IPv6, assim como novos campos foram acrescentados. Uma das importantes mudanças é a não existência do campo Options. No IPv4, o campo Options ser utilizado para adicionar informações sobre vários serviços adicionais, como informações relacionadas a encriptação [10]. Em função disso, o tamanho do cabeçalho muda de acordo com cada situação, o que vem a dificultar o Protocolo IPv6 8 processo de empacotamento com assistência por hardware, pois roteadores que controlam comunicação de acordo com informações contidas em um cabeçalho IP não podem julgar o tamanho do cabeçalho olhando apenas para o inicio do pacote. A parte relacionada a serviços opcionais foi deslocada para o que é chamada de extensões do cabeçalho (extension header) IPv6. Desta forma, o cabeçalho básico ficou muito mais simples que o cabeçalho IPv4 e bem mais fácil de ser acelerado. Outro campo não existente no cabeçalho IPv6 é o Header checksum. Ele consiste num número utilizado para checar erros nas informações do cabeçalho e ele é calculado utilizando os números existentes no cabeçalho [10]. Porém, o problema com este campo está relacionado com outro campo, chamado TTL (Time to Live). Este campo é alterado a toda vez que o pacote passa por roteador. Desta forma, o Header checksum deve ser recalculado toda vez que passar por roteador. Livrando os roteadores desta responsabilidade de recalcular o Header checksum, poderia - se diminuir o delay gerado na passagem dos pacotes por eles. Como a camada TCP se responsabiliza pela checagem de vários erros, é redundante a existência do campo Header Checksum, por isso o mesmo foi removido do IPv6. No IPv4 existe um campo de 8 bits chamado Service of Type . Este campo é utilizado para representar a prioridade de um pacote. Este campo é composto pelos campos TOS (Type of Service) e Precedence. O campo TOS especifica o tipo de serviço, e contém o custo, Throughput, delay ou segurança do pacote. O campo Precedence especifica o nível de prioridade do pacote, utilizando oito níveis que vão de 0 a 7. O protocolo IPv6 possui em seu cabeçalho o campo Trafic Class que provê a mesma função do campo Precedence. O campo Flow Label foi estabelecido apenas no IPv6 e possui 20 bits. Utilizando este campo, o remetente do pacote ou dispositivos intermediários podem especificar uma série de pacotes, como por exemplo, um fluxo VoIP (Voz sobre IP), e requisitar serviços especiais deste fluxo. Entretanto, os dispositivos que utilizarem este campo não devem verificar apenas o endereço do remetente e do destinatários dos pacotes (fluxo), mas devem verificar o número porta da qual o fluxo provém. Abaixo, segue uma breve explicação de todos os campos existentes no cabeçalho IPv6 básico: Version - Com o tamanho de 4 bits, diz qual a versão do IP utilizado; Protocolo IPv6 9 Flow Label - Campo de 20 bits. Utilizado para marcar um fluxo de pacotes; Payload Length - Inteiro sem sinal (16 bits). Tamanho do payload, isto é, o resto do pacote que segue o cabeçalho IPv6 em octeto; Next Header - Campo de 8 bits. Identifica o tipo de cabeçalho que segue o cabeçalho IPv6. Usa o mesmo valor do protocolo IPv4; Hop Limit - Inteiro sem sinal (8 bits). Decrementado de 1 a cada nó que passa o pacote. O pacote é descartado caso o hop limit seja igual a zero; Source Address - Campo de 128 bits. O endereço do remetente original; Destination Address - Campo também de 128 bits. Contém o endereço do destino do pacote (possivelmente não será o último destino caso um cabeçalho opcional de roteamento esteja presente). 2.2.1.1 EXTENSÕES DO CABEÇALHO IPV6 No IPv4, informações acerca de serviços opcionais oferecidos pelo protocolo são incorporadas ao campo Options. Em função disto, o tamanho do cabeçalho varia de acordo com a situação. O IPv6 resolve este problema utilizando extensões do cabeçalho, que são colocadas após o cabeçalho básico. Desta forma, o cabeçalho básico possui um tamanho fixo, de 40 bytes, e as extensões são opcionais. Dispositivos intermediários, como roteadores, necessitam apenas manipular o cabeçalho básico, sendo que em raras exceções, não necessita manipular as extensões. Apenas os nós destinos necessitam processar as extensões de cabeçalho [10]. Esta característica do cabeçalho IPv6 permiti uma maior eficiência na manipulação dos pacotes feita pelos roteadores, pois os cabeçalhos básicos são sempre os mesmos. Protocolo IPv6 10 As extensões são divididas em vários tipos, dependendo da função de cada uma. Na figura 2.2, pode se observar o campo Next Header. Este campo define se existe ou não extensão de protocolo. Quando a extensão de protocolo não é utilizada, o cabeçalho básico contém todas as informações da camada IP. Este cabeçalho pode ser seguido por um cabeçalho de uma camada de nível mais alto, como um cabeçalho TCP e o campo Next Header indica quem será o próximo cabeçalho. Quando alguma extensão é utilizada, o campo Next Header indica qual a extensão de cabeçalho segue o cabeçalho básico. Cada extensão de cabeçalho contém o campo Next Header e ele indica o próximo cabeçalho que segue a extensão. O nó final que recebe o pacote que contém as extensões as processa de acordo com a ordem de colocação. Existem seis tipos de extensões de cabeçalho, elas são: Hop-by-Hop Option – Este cabeçalho, como o nome sugere, especifica o processo que deve ser feito toda vez que um pacote passa por um roteador. É possível de especificar vários tipo de processo. Um exemplo é o uso da opção datagramas Jumbos (Jumbogram Option). O campo Payload Length no cabeçalho IPv6 básico possui 16 bits, então ele pode especificar no máximo 65536 octetos. Quando existe a necessidade de se enviar pacotes maiores que este valor, utiliza-se a opção de datagramas Jumbos, que permite especificar o tamanho do pacote no cabeçalho de extensão. Destination Option – Este cabeçalho é utilizado para especificar um processo que deve ser executado pelo nó destino. Routing – É utilizado para se determinar um caminho de roteamento. Por exemplo, é possível especificar qual provedor de serviço de Internet a ser utilizado. O nó remetente utiliza o cabeçalho Routing para listar os endereços dos roteadores nos quais o pacote deve passar. Fragment – É usado quando a fonte do pacote IPv6 necessita enviar um pacote maior que o MTU (Maximum Transminssion Unit) do caminho, e descreve como o pacote deve ser reconstruindo a partir dos Protocolo IPv6 11 fragmentos. MTU refere-se ao tamanho do maior pacote enviado através de um caminho particular. Na Internet as limitações dos caminhos de banda existentes entre uma fonte e um destino causam problemas significativos. Tentar enviar um pacote por um caminho limitado irá causar overflow. No IPv4, cada roteador no caminho do pacote divide o pacote de acordo com a MTU setada para cada interface. Porém este processo gera uma carga muito grande no roteador. No IPv6, apenas a fonte do pacote divide o pacote. Ela executa um processo chamado MTU Path Discovey, encontra a banda mais limitada em determinado caminho e ajusta o tamanho dos pacotes de acordo com a MTU deste caminho, sendo que os pacotes serão do tamanho exato da limitação imposta pela banda. Porém, se a fonte dos pacotes não adotar este mecanismo, os pacotes serão divididos na camada IP e o cabeçalho Fragment será utilizado. Authentication e ESP (Encapsulation Security Payload) – IPsec é um mecanismo utilizado na camada IP. Quando IPsec é implementado, o cabeçalho Authentication é utilizado para autenticar e assegurar a integridade dos dados, e o ESP é utilizado para especificar informações relacionadas à encriptação dos dados. IPsec coexiste com IPv4, porém as informações são colocadas no campo Options do cabeçalho IPv4 [12]. 2.2.2 ENDEREÇO IPV6 2.2.2.1 ESQUEMA DE ENDEREÇAMENTO Endereços IPv6 possuem tamanhos de 128 bits e são identificadores de interfaces individuais e blocos de interfaces. Todos os tipos de endereços IPv6 são associados a interfaces, não a nós. Como cada interface pertence a um único nó, qualquer dos endereços de unicast das interfaces pode ser usado como um Protocolo IPv6 12 identificador para o mesmo. Uma mesma interface pode ser associada a múltiplos endereços IPv6 de qualquer tipo. O endereço IPv6 é dividido em oito blocos de 16 bits. Cada bloco é convertido em um número hexadecimal e são separados por “dois pontos” (:) . No IPv6, se utiliza o conceito de CIDR (Classless Inter Domain Router) [9], sendo que no endereço, uma barra (/) é utilizada para separar o endereço do tamanho em bits do prefixo de rede.Os zeros a direita de um grupo podem ser omitidos, o que melhora a visualização do endereço. Abaixo segue um exemplo: 2001:0DB8::/32 Existem três tipos de endereços IPv6: Unicast - Endereço que identifica uma única interface. Existem dois tipos de endereço Unicast: Global IPv6 Address e Link-Local Address. Anycast - Identifica um bloco de interfaces, de tal forma que um pacote enviado a um endereço de anycast será entregue a um elemento do bloco. Multicast - Identifica um grupo de interfaces, tal que um pacote enviado a um endereço de multicast é entregue a todos elementos do grupo. Não existe endereço de broadcast no IPv6, esta função foi substituída pelo endereço de multicast. O IPv6 suporta endereços com número de bits 4 vezes maior que o endereço IPv4 (128 - [16 bytes] vs. 32 - [4 bytes]). Isto significa que o IPv6 é 4 bilhões (296) de vezes maior que o IPv4 (232), ou seja, a quantidade de endereços é de: 340.282.366.920.938.463.463.374.607.431.768.211.456 Esta é uma faixa de endereçamento extremamente grande. Teoricamente, isto representa aproximadamente 665.570.793.348.866.943.898.599 endereços por metro quadrado da superfície do nosso planeta (assumindo que a superfície da Terra seja de 511.263.971.197.990 m2). Em termos mais práticos, a tarefa de distribuição e roteamento de endereços requer a criação de hierarquias eficientes para o uso dos endereços. Christian Protocolo IPv6 13 Huitema fez uma análise [8] na qual avaliou a eficiência de outras arquiteturas de endereçamento (inclusive o sistema telefônico francês, o sistema telefônico dos E.U.A, a Internet atual que usa IPv4 e nós IEEE 802). Ele concluiu que o endereçamento de 128 bits pode acomodar entre 8x1017 a 2x1033 nós, assumindo a eficiência de blocos semelhantes em outras arquiteturas de endereçamento. Usando a estimativa mais pessimista, assume que seria possível ter 1.564 endereços para cada metro quadrado da superfície do planeta Terra. A estimativa otimista permitiria 3.911.873.538.269.506.102 de endereços para cada metro quadrado. A estrutura do endereço IPv6 é definida pela RFC3587 (Request For Comments) e pode ser visualizada na figura 2.3. Figura 2.3 Especificamente, os endereços alocados globalmente possuem o prefixo “001” (2000::/3). Endereços de Link – Local são usados para identificar hosts num mesmo segmento de rede, como prefixo dedicado “FE80::/10”. No endereço de 128 bits, O Subnet ID, que possui 16 bits, é utilizado para fazer segmentação em redes internas de organizações. O Interface ID, que possui 64 bits, é usado para identificar interfaces de redes dos hosts . Quando o Interface ID é criado através do processo de auto-configuração [14], ele utiliza a regra EUI-64 (Extended Unique Identifier), que usa o endereço MAC (Media Acces Control). Os outros 48 bits do global IPv6 address são definidos através do mecanismo de alocação hierárquica de endereço IPv6 [13]. Endereços Anycast não possuem um prefixo específico.Eles são definidos como um caso especial de endereço Unicast. Especificamente, endereços Anycast possuem o Interface ID com todos os bits em zero. Endereços Multicast possuem o prefixo “FF00::/8”. Os primeiros oito bits possuem o valor 1. Usa-se do 9º ao 12º bit para definir a natureza do endereço Protocolo IPv6 14 multicast. Se o 12º bit tiver o valor zero, o endereço multicast é alocado estaticamente por IANA (Internet Assigned Numbers Authority). A figura 2.4 contém o status da alocação dos prefixos de endereço IPv6: Figura 2.4 De acordo com esta tabela, existe espaço reservado para endereços NSAP (Network Service Access Point), endereços IPX (Internetwork Packet Exchange) e neutral-interconect address. O espaço de endereço restante está reservado para uso futuro. Pode ser usado para expansão (por exemplo, provedor de endereço adicional, etc.) ou novos usos (por exemplo, identificadores). Observe que não foram Protocolo IPv6 15 tratados os endereços anycast. Isso porque eles são alocados fora do espaço de endereço de unicast. Inicialmente serão usados apenas 15% do espaço do novo endereçamento, restando 85% para uso futuro. 2.3 ROTEAMENTO DE PACOTES IPV6 O roteamento no IPv6 é semelhante ao roteamento no IPv4 com CIDR, a não ser pelo fato dos endereços do IPv6 serem de 128 bits em vez dos 32 bits do IPv4. Assim, com extensões muito simples, todos os algoritmos de roteamento do IPv4 (OSPF, RIP, IDRP, ISIS, etc.) podem ser usados para rotear pacotes IPv6. O IPv6 também inclui extensões simples de roteamento que permitem novas funcionalidades de roteamento poderosas, tais como: Seleção de provedor (baseado em política, desempenho, custo, etc.) ; Mobilidade de host (rotas para nova localização) ; Auto - reendereçamento (rota para novo endereço). A nova funcionalidade de roteamento é obtida criando-se seqüências de endereços IPv6 usando as opções de roteamento do mesmo. As opções de roteamento são usadas pela origem do IPv6 para listar um ou vários nós intermediários (ou grupos de topologia) que devem ser "visitados" durante o transporte do pacote. Esta função é muito semelhante às opções do IPv4 Loose Source e Record Router. Para tornar o endereçamento seqüencial uma função geral, os hosts IPv6 são solicitados, em muitos casos, a fazer um roteamento reverso dos pacotes recebidos (se o pacote IPv6 for autenticado com sucesso usando a autenticação de cabeçalho), invertendo a seqüência de endereços para devolver o pacote a seu originador. Esta é a chave que permite aos hosts trabalharem com as novas características como seleção de provedor ou endereços estendidos. Protocolo IPv6 16 Abaixo, três exemplos mostram como as sucessões de endereço podem ser usadas. Nestes exemplos, seqüências de endereços são mostradas por uma lista de endereços individuais separados por vírgula. Por exemplo: SRC, I1, I2, I3, DST O primeiro endereço é o endereço fonte, o último é o endereço destino e os do meio são endereços intermediários. Para estes exemplos, vamos assumir que dois hosts, (H1 e H2) desejam comunicar-se. Ambos estão conectados aos provedores P1 e P2. Um terceiro provedor PR (wireless), está conectado aos provedores P1 e P2 também. Isto pode ser visto na figura 2.5 Figura 2.5 O caso mais simples (sem o uso de seqüência de endereços) é quando H1 quer enviar um pacote para H2 contendo os endereços: H1, H2 Protocolo IPv6 17 Quando H2 for responder, ele inverte os endereços e constrói um pacote que contém os endereços: H2, H1 Neste exemplo, poderia ser usado qualquer provedor, e nem H1 nem H2 poderia selecionar por qual provedor os pacotes deveriam ser enviados e recebidos. No entanto, se H1 decidir usar uma política obrigando que toda comunicação entre ele e H2 devam ser transportadas via provedor P1, ele construiria um pacote com a seguinte seqüência de endereços: H1, P1, H2 Isto garante que quando H2 for responder para H1, ele inverterá a rota e a resposta também seria transportada via P1. Os endereços de resposta em H2 seriam: H2, P1, H1 Se H1 tornar-se móvel (um laptop) e mudasse para o provedor PR, poderia manter (sem quebrar qualquer conexão de transporte) a comunicação com H2, enviando pacotes que contêm a seqüência de endereço: H1, PR, P1, H2 Isto garante que, quando H2 responder, ele usará a política de H1. A seqüência de endereços invertida seria: H2, P1, PR, H1 A facilidade de seqüenciamento de endereço do IPv6 pode ser usada para selecionar o provedor, prover mobilidade e reendereçamento. Trata-se de uma característica simples, mas poderosa. Protocolo IPv6 18 2.4 APLICAÇÃO DE QUALIDADE DE SERVIÇO COM PROTOCOLO IPV6 A Etiqueta de Fluxo (Flow Label) e os campos de prioridade (Prior) no cabeçalho IPv6 podem ser usados por um host para identificar quais pacotes pedem manipulação especial através do roteador. Esta capacidade é importante para dar suporte a aplicações que requerem algum grau de processamento consistente, retardo e/ou velocidade. Estas aplicações são comumente descritas como multimídia ou aplicações em tempo real. O campo flow label, presente no cabeçalho do IPv6, possui 24 bits e pode ser utilizado para identificar pacotes que requerem tratamento especial pelos roteadores IPv6, como qualidade de serviço fora do padrão ou serviços de tempo real. Esta funcionalidade do IPv6 está sendo pesquisada e pode sofrer mudanças. Hosts e roteadores que não suportam a funcionalidade de flow label devem preencher o campo com zeros quando forem a origem do pacote e devem ignorar o campo quando receberem um pacote. Um fluxo (flow) é uma sucessão de pacotes enviada de uma origem para um destino (unicast ou multicast), e onde a origem define que os roteadores intermediários devem tratar o pacote de maneira especial. A forma de tratamento especial poderia ser carregada no roteador através de um protocolo de controle, como um protocolo de reserva de recursos ou por informações contidas dentro dos pacotes do fluxo, por exemplo, uma opção de hop-by-hop. Podem haver múltiplos fluxos ativos de uma fonte para um destino, como também tráfego que não é associado a qualquer fluxo. Um fluxo é identificado exclusivamente pela combinação de um endereço da fonte e uma etiqueta de fluxo (flow label) preenchido com valores diferente de zeros. Pacotes que não requerem tratamento especial, ou seja, que não pertencem a um fluxo, possuem o campo flow label preenchido com zeros. O campo flow label é preenchido pelo host que origina o fluxo. Devem ser escolhidas novas "etiquetas de fluxo" (randomicamente, entre 1 e FFFFFF). O propósito da alocação randômica é fazer com que qualquer conjunto de valores Protocolo IPv6 19 atribuídos dentro do campo flow label seja satisfatório para ser usado como uma chave hash pelo roteador, para verificar o estado associado ao fluxo. Todos os pacotes que pertencem ao mesmo fluxo devem ser enviados com o mesmo endereço de origem, o mesmo endereço de destino e o mesmo flow label. Se algum pacote incluir em seu cabeçalho a opção de hop-by-hop, então todos os pacotes devem incluir a esta mesma opção em seus cabeçalhos (com exceção do próximo campo de hop-by-hop do cabeçalho). Se qualquer pacote incluir um cabeçalho de roteamento, então todos os pacotes devem incluir o mesmo cabeçalho (com exceção do campo próximo cabeçalho no cabeçalho de roteamento). A inclusão de roteador e destino é permitida, mas não requerida, para verificar se esta condição foi satisfeita. Se uma violação for detectada, a origem deverá ser informada através de um pacote de ICMP (Internet Control Message Protocol) com o parâmetro de problema preenchido com o código 0, apontando o octeto de mais alta ordem do flow label (isto é, offset 1 dentro do pacote IPv6) [5]. Os roteadores são livres para "setar" um fluxo para qualquer estado, até mesmo quando não existir nenhum tipo de informação que explicitamente faça isto via um protocolo de controle, uma opção de hop-by-hop ou outro meio. Por exemplo, ao receber um pacote de uma fonte com um flow label desconhecido, um roteador pode processar seu cabeçalho IPv6 e qualquer cabeçalho de extensão como se o flow label fosse zero. Este processamento inclui determinar o próximo salto e outras ações como atualizar a opção de salto, avanço de ponteiro ou decidir como enfileirar os pacotes, baseado no campo prioridade. O roteador pode decidir, ainda, se vai armazenar estas informações em cache, usando o endereço de origem e o flow label como chave. Os pacotes seguintes com o mesmo endereço de origem e o mesmo flow label podem ser roteados a partir da informações armazenadas no cachê, sem a necessidade de nova análise do cabeçalho. O campo Prior, de 4 bits, permite que uma origem especifique a prioridade de entrega para determinados pacotes em relação a outros pacotes da mesma origem. Os valores do campo prioridade estão divididos em dois grupos: Protocolo IPv6 20 0 a 7: são utilizados exclusivamente para definir a prioridade de tráfego para o qual a origem está provendo controle de congestionamento, ou seja, tráfego que volta devido ao congestionamento, como TCP. 8 a 15: são utilizados para especificar a prioridade de tráfego que não possuem resposta de volta. Ex.: pacotes de aplicações em tempo real, que são enviados a uma taxa constante. Para o controle do congestionamento do tráfego, os seguintes valores de prioridade são recomendados: 0 Uncharacterized traffic; 1 "Filler" traffic (Ex.: netnews); 2 Unattended data transfer (Ex.: e-mail); 3 (Reservado) 4 Attended bulk transfer (Ex.: FTP, HTTP, NFS); 5 (Reservado) 6 Interactive traffic (Ex.: telnet, X); 7 Internet control traffic (Ex.: protocolos de roteamento, SNMP). Para tráfego que não possuem controle de congestionamento, a prioridade mais baixa (valor 8) deve ser usada para pacotes que serão descartados caso exista um congestionamento (Ex.: tráfego de vídeo de alta fidelidade), e um valor mais alto (15) deve ser usado para pacotes que serão descartados com menor facilidade (Ex.: tráfego de áudio de baixa fidelidade). Não existe nenhuma relação entre os valores das prioridades do tráfego controlado e aquele não controlado. 2.5 MECANISMOS DE TRANSIÇÃO O objetivo principal dos mecanismos de transição é permitir a interoperabilidade entre IPv6 e IPv4. Um segundo objetivo é a distribuição de hosts e roteadores IPv6 de forma rápida e com alguma interdependência. Um terceiro ponto Protocolo IPv6 21 está relacionado com a facilidade de transição, ela deve ser simples para os usuários finais, administradores de sistemas e operadores de rede ,entre outros. Os mecanismos de transição para o IPv6 são compostos de um grupo de protocolos implementados em hosts e roteadores, juntamente com algumas diretrizes operacionais com o objetivo de minimizar os impactos decorrentes da transição [8]. Algumas das características dos mecanismos de transição são: Pode-se migrar hosts e roteadores IPv4 para IPv6 sem a necessidade de migração de toda a rede, ou seja, um de cada vez. Da mesma forma, pode-se realizar a instalação de novos hosts e roteadores IPv6; Requisitos mínimos para migração. A única condição prévia para migração de hosts é que o servidor de DNS deve ser adequado para IPv6, antes disso. Para a migração de roteadores não existem prérequisitos; Endereçamento fácil. Quando é realizada a migração de hosts e roteadores para IPv6, estes elementos podem continuar a utilizar seus antigos endereços IPv4. Eles não precisam ser configurados com os endereços novos; O custo inicial de migração é baixo. Necessita-se de pouco ou nenhum trabalho de preparação para migração de sistemas IPv4 para IPv6; Uma estrutura de endereçamento que encapsula os endereços IPv4 dentro do IPv6; Um modelo onde hosts e roteadores terão as duas pilhas de protocolos, IPv4 e IPv6, durante a fase de transição; Uma técnica de encapsulamento onde pacotes IPv6 serão embutidos dentro de cabeçalhos IPv4, permitindo o transporte dos pacotes por roteadores que ainda não migraram para IPv6. Protocolo IPv6 22 Os mecanismos de transição, asseguram que hosts com IPv6 podem comunicar-se com hosts IPv4 a qualquer momento durante a fase de transição, e permite que, dentro de um âmbito limitado, o tempo de inter-operação seja indefinido. Esta característica protege os investimentos realizados em tecnologia IPv4 e garante que ele não ficará obsoleto. Máquinas que utilizam conexões limitadas (por exemplo, impressoras) não precisam migrar para IPv6. Estes mecanismos permitem que os fabricantes de hosts e roteadores implementem o IPv6 em suas linhas de produtos conforme suas prioridades. Permite também que usuários finais e administradores de redes implementem IPv6 conforme suas conveniências. Atualmente, existem dois mecanismos principais de transição: O uso de ilhas IPv6, onde as ilhas são interconectadas por túneis IPv4, sendo que os pacotes IPv6 são encapsulados por pacotes IPv4. O uso de redes com roteadores dual-stack, onde a interligação entre as redes IPv6 é feita utilizando o próprio protocolo, e esses roteadores podem rotear pacotes IPv4. Dos dois mecanismos encontrados, o que mais se adequou a realidade do PoP-PI foi o uso de roteadores dual-stack, pois o backbone da RNP já possui suporte a redes nativas IPv6. 3 IPSEC: SEGURANÇA NO IPV6 IPsec ou IP security, apresenta funções de segurança na camada IP. Por padrão, IPsec é suportada tanto por IPv4 quanto por IPv6, porém, no IPv6 ele é definido como um atributo obrigatório [11]. 3.1 ARQUITETURA DO IPSEC A arquitetura do IPsec é definida na RFC2401. IPsec é implementado através dos seguintes componentes: Protocolos de segurança AH (Authentication Header) e ESP; Dois modos de operação: Modo Túnel (Tunnel Mode) e Modo de Transporte (Transport Mode); SPD (Security Policy Database) para gerenciar politicas de segurança (SP) e o selecionador que combine SP com tráfico de dados atuais; SAD (Security Association Database) para conter associações seguras (AS), parâmetros necessários para comunicação de conexões IPsec e implementação do IPsec; Protocolos de troca de chaves. IPsec: Segurança no IPv6 24 A Figura 3.1 apresenta o roadmap para especificações que descrevem o uso de novos algoritmos de autenticação e criptografia definidas pelo protocolo ESP (RFC 2406 - Encapsulating Security Payload), e de autenticação definidas pelo protocolo AH (RFC 2402 - Authentication Header) Figura 3.1 3.2 PROTOCOLOS DE SEGURANÇA IPsec define dois tipos de protocolo de segurança: AH e ESP. Ambos são definidos como extensão do cabeçalho básico IPv6. Ambos ou apenas um dos dois protocolos são utilizados para implementar Ipsec [11]. A Figura 3.2 apresenta a posição dos cabeçalhos AH e ESP entre as extensões do cabeçalho IPv6. Figura 3.2 Protocolo IPv6 25 3.2.1 AUTHENTICATION HEADER (AH) AH é utilizado para garantir a integridade dos pacotes. Ele utiliza um algoritmo de autenticação e uma chave combinados por um remetente e um destinatário para calcular o IVC (Integrity Value Check ) de um pacote IP e adiciona o resultado como dado de autenticação. O destinatário pode calcular o IVC dos pacotes recebidos para checar a integridade dos pacotes [2]. O formato do AH é apresentado na Figura 3.3. Figura 3.3 Os campos do cabeçalho do AH são descritos como: Next Header: contém o identificador do protocolo do próximo cabeçalho. Payload Length: comprimento do payload (conteúdo). Reserved: 16 bits reservados para extensão do protocolo. SPI (Security Parameter Index): este índice, em conjunto com o protocolo AH e o endereço fonte, identifica unicamente uma SA para um determinado pacote. Sequence Number: contador que identifica os pacotes pertencentes a uma determinada AS (usado como mecanismo anti-replay). Authentication Data: campo de comprimento variável que contém o ICV (Integrity Check Value) para este pacote, que é calculado seguindo o algoritmo de autenticação usado, definido pela AS Protocolo IPv6 26 AH não se limita a utilizar apenas um algoritmo de autenticação, pode-se utilizar várias opções combinadas antecipadamente entre o emissor e o receptor. Alguns algoritmos mais utilizados são HMAC-MD5 (Keyed-Hashing for Message Authentication- Message-Digest Algorithm) e HMAC-SHA1(Keyed-Hashing for Message Authentication - Secure Hasing Algorithm). AH não prover encriptação, logo, ele não oferece confidencialidade dos dados. O uso do AH previne ataques do tipo: Replay: a atacante intercepta um pacote válido e autenticado pertencente a uma conexão, replica-o e o reenvia, "entrando na conversa". A utilização do campo Sequence Number ajuda na prevenção a este tipo de ataque, pois permite numerar os pacotes que trafegam dentro de uma determinada AS. Spoofing: o atacante assume o papel de uma máquina confiável para o destino e, dessa forma, ganha privilégios na comunicação. A utilização de mecanismos de autenticação previne este tipo de ataque. Connection hijacking: o atacante intercepta um pacote no contexto de uma conexão e passa a participar da comunicação. A utilização de mecanismos de autenticação previne este tipo de ataque. 3.2.2 ENCAPSULATING SECURITY PAYLOAD (ESP) ESP oferece encriptação e autenticação dos dados de um pacote. Ele usa um algoritmo de encriptação combinado entre o emissor e o receptor dos pacotes para encriptar o payload (carga) dos pacotes. Além disso, este cabeçalho ESP encriptado possui o ICV, calculado com um algoritmo de autenticação combinado entre o emissor e o receptor. O ICV serve para autenticar os dados do pacote [3]. O formato do ESP é apresentado na Figura 3.4. Protocolo IPv6 27 Figura 3.4 Os campos do cabeçalho do ESP são descritos como: Next Header: contém o identificador do protocolo do próximo cabeçalho SPI (Security Parameter Index): este índice, em conjunto com o protocolo AH e o endereço fonte, identifica unicamente uma AS para um determinado pacote. Sequence Number: contador que identifica os pacotes pertencentes a uma determinada SA (usado como mecanismo anti-relay) Payload Data e Padding: contém os dados cifrados e os parâmetros utilizados pelo algoritmo de criptografia usado, definido pela AS. Authentication Data: campo de comprimento variável que contém o ICV (Integrity Check Value) para este pacote, calculado seguindo o algoritmo de autenticação usado, definido pela AS. Encriptação e integridade dos dados podem ser implementadas separadamente, mas não é recomendado implementar encriptação sem integridade de dados, porque desta forma não se oferecerá garantias de que a encriptação foi feita pela parte legítima [11]. Precisa-se dizer que ESP não assegura integridade total do pacote assim como AH faz, ele apenas protege o payload dos pacotes. ESP pode utilizar várias opções de algoritmos de encriptação como DESCBC, 3DES-CBC e AES-CBC. Protocolo IPv6 28 O uso do ESP previne ataques do tipo: Replay: através da utilização do campo Sequence Number, de maneira análoga ao AH; Particionamento de pacotes cifrados: que é o que acontece quando o atacante obtém partes de pacotes cifrados e consegue montar um pacote que pode ser aceito por um dos membros da conexão. O uso de autenticação previne este tipo de ataque; Sniffer: o atacante obtém os pacotes que trafegam na rede. A utilização da criptografia previne este tipo de ataque. 3.3 MODOS DO IPSEC Os protocolos AH e ESP possuem dois modos de operação: Modo túnel: Proporciona proteção ao pacote IP. Para isso, depois da adição dos campos de ESP ao pacote IP, todo o pacote é tratado como o módulo de dados de um novo pacote IP. Deste modo, pode ser usado para enviar dados cifrados através de um túnel, o que permite enviar dados independentemente da infra-estrutura utilizada. Um exemplo de utilização seria o envio de pacotes IP através de canais virtuais criados numa rede IP pública, como Internet e assim pode ser dada segurança a um grupo de nodos que não implementam IPSEC.A Figura 3.5 apresenta o modo túnel; Figura 3.5 Modo transporte: Proporciona proteção principalmente aos protocolos da camada superior. É utilizado na maioria das vezes em Protocolo IPv6 29 comunicações entre cliente e servidor. Neste modo, a informação do protocolo da camada de transporte é cifrada, adicionando-lhe um novo cabeçalho IP não cifrado, pelo que se torna vantajoso em redes pequenas, onde os servidores e os nós existentes implementam IPSEC.A Figura 3.6 apresenta o modo transporte. Figura 3.6 3.4 FUNCIONAMENTO DO IPSEC O protocolo IPSec opera num gateway ou num host, com os requisitos de segurança estabelecidos por um banco de dados de política de segurança (SPD Security Policy Database) mantido pelo usuário, pelo administrador da rede ou por uma aplicação operando dentro de limites pré-definidos. Pode ser utilizado para proteger uma ou mais conexões entre um par de hosts, entre dois gateways de segurança ou entre um host e um gateway [11]. Os pacotes IP são selecionados através de três formas de processamento definidas por seletores. As três formas são: . Discard: pacote é descartado; Bypass: pacote despreza os serviços IPSec; Apply: pacote ou é submetido aos serviços IPSec. Os seletores utilizam o pacote IP e as informações do cabeçalho da camada de transporte, comparando-os com as entradas do banco de dados SPD. Com base nas políticas aplicadas e identificadas pelos seletores, cada pacote é manipulado seguindo uma das três formas descritas anteriormente . Como citado anteriormente, a arquitetura básica IPSec é formada pelos protocolos ESP e AH. O protocolo AH fornece integridade não orientada a conexão, autenticação da origem dos dados e serviço opcional anti-replay. Já o protocolo ESP provê confidencialidade (criptografia) e também pode prover as mesmas funções do Protocolo IPv6 30 protocolo AH já citadas. Ambos são meios para controle de acesso baseado na distribuição de chaves e no gerenciamento do fluxo de tráfego referentes aos protocolos de segurança. Podem ser empregados independentemente um do outro, ou em associação, para que um conjunto de serviços de segurança seja disponibilizado em redes IPv4 e IPv6. Há a possibilidade do usuário ou administrador controlar a granularidade dos serviços IPSec oferecidos. Por exemplo, pode-se criar um único túnel de criptografia que transporta todos os dados entre dois gateways de segurança, como apresentado na Figura 3.7, ou podem ser criados túneis separados para cada conexão TCP entre os pares de hosts que se comunicam através desses gateways. Figura 3.7 Em termos de desenvolvimento, o conjunto de protocolos IPSec pode ser implementado de três formas. A primeira refere-se à implementação IPSec na pilha nativa IP, aplicável tanto em hosts como em gateways. O pré-requisito para isso é o acesso ao código fonte do protocolo IP. A segunda forma de implementação, conhecida como Bump-in-the-stack (BITS) é usualmente utilizada em hosts, onde o IPSec é implementado sob o protocolo IP, entre este e o driver de rede local. Neste caso, o acesso ao código fonte IP não é necessário. Bump-in-the-wire (BITW) é a Protocolo IPv6 31 terceira forma de implementação IPSec, na qual é utilizada uma placa processadora de criptografia tanto em hosts como em gateways. 3.5 ASSOCIAÇÃO DE SEGURANÇA O conceito de Associação de Segurança - AS, (Security Association - SA) é um dos conceitos fundamentais do IPSec. Uma associação de segurança é uma "conexão" que viabiliza o tráfego de serviços seguros. A segurança dos serviços é garantida pela utilização dos protocolos de segurança (AH, ESP, ou ainda de ambos). Observa-se que, no caso de se usar AH e ESP em conjunto, mais de uma AS deve ser definida [11]. Uma associação de segurança é identificada unicamente por três parâmetros: o SPI (Security Parameter Index), o endereço IP de destino e o identificador do protocolo (AH ou ESP). O SPI é um número que identifica uma AS, sendo definido durante a negociação que antecede o estabelecimento da mesma. Assim, todos os membros de uma AS devem conhecer o SPI correspondente e usá-lo durante a comunicação. O endereço IP de destino pode ser unicast, broadcast (no caso do uso de Ipsec no IPv4) ou ainda multicast. No entanto, para a definição dos mecanismos de gerenciamento de AS, o IPSec assume um endereço destino unicast, estendendo as definições para os casos de broadcast e multicast. O identificador do protocolo é o número 51 para o AH e o número 50 para o ESP. Ressalta-se que a negociação para o estabelecimento de uma AS envolve a definição da chave, os algoritmos de criptografia e autenticação e os parâmetros usados por estes algoritmos. Uma AS pode ser estabelecida nos dois modos já apresentados: Transporte e Túnel. No Modo Transporte, uma Associação de Segurança é estabelecida entre dois hosts. No IPv4, o cabeçalho do protocolo de segurança é inserido entre o cabeçalho IP e os cabeçalhos dos protocolos de mais alto nível, como TCP ou UDP. Protocolo IPv6 32 Por outro lado, no IPv6, o cabeçalho do protocolo de segurança é inserido após o cabeçalho básico IPv6 e dos cabeçalhos de extensão end-to-end, e antes dos protocolos de mais alto nível. No caso do ESP, uma AS em modo transporte provê serviços de segurança somente para os protocolos de mais alto nível, não incluindo o cabeçalho IP ou os cabeçalhos de extensão que precedem o ESP. No entanto, o AH estende a proteção a estes cabeçalhos. Isto se deve ao fato do ESP cifrar os dados que o sucedem no pacote, além de autenticar apenas a "porção ESP" do pacote, enquanto que o AH autentica o pacote todo. Uma AS em Modo Túnel, é uma AS aplicada a um túnel IP. Quando, pelo menos um dos membros de uma AS for um gateway de segurança, ou seja, for um gateway que implementa IPSec, então a AS deverá ser estabelecida em modo túnel. Em uma AS no modo túnel, o chamado cabeçalho IP externo especifica o destino no contexto do IPSec, e o cabeçalho IP interno especifica o destino real do pacote IP. Neste caso, os cabeçalhos dos protocolos de segurança são inseridos depois do cabeçalho IP externo e antes do cabeçalho IP interno. Assim, de modo análogo às considerações feitas para o modo transporte, em modo túnel, o AH provê segurança para o cabeçalho IP externo, e conseqüentemente para os protocolos de mais alto nível, assim como para o pacote IP "tunelado". Por outro lado, quando o ESP é usado em modo túnel, apenas a segurança do pacote IP "tunelado" é assegurada. 4 TESTES E EXPERIÊNCIAS Com o intuito de se fazer testes com o protocolo IPv6, foi montado na FAPEPI um ambiente de testes, que consistia em uma intranet baseada no protocolo IPv6. Primeiramente, configurou-se a intranet, visando posteriormente conectar esta intranet ao backbone da RNP. 4.1 AMBIENTE DE TESTES Foram utilizados os seguintes equipamentos: Três computadores IBM NetVista, com 196 MB de memória RAM, processador Intel Pentium III de 800 MHz, HD 20 GB , placa ethernet VIA compatible Fast Ethernet Adaptor; Um switch IBM 8224, com 24 portas; Roteador CISCO SYTEMS 3700 series. Sistema Operacional Linux Fedora Core 2, Versão do kernell 2.6-7. Software BIND 9.3.2 Testes e Experiências 34 4.2 TESTE COM O SISTEMA OPERACIONAL WINDOWS XP Inicialmente, visando a facilidade de uso por pessoas leigas, tentou-se utilizar o sistema operacional Windows XP, pois o mesmo possui interface muito intuitiva. Porém, constatou-se que o Windows XP e nenhum outro Windows da suporte aos serviços, mais utilizados em redes, nativamente em IPv6. Basicamente, ele da suporte ao endereçamento IPv6. Desta forma, a aplicação deste SO não seria conveniente, pois o objetivo deste trabalho é a implementação de redes IPv6 nativamente. Além de tudo, o Windows não da suporte a redes IPv6 que utilizam dual-stack como mecanismo de transição. Após apreciação do help do Windows XP,pode-se observar que a Microsoft desenvolveu uma solução proprietária, chamada TEREDO, a qual utiliza a idéia de ilhas IPv6 conectadas por túneis IPv4. 4.3 TESTE COM O SISTEMA OPERACIONAL KURUMIN LINUX 3 Após a constatação de que o Windows, em nenhuma de suas versões, seria adequado para uso na experiência, buscou-se o Sistema Operacional Linux, através da distribuição Kurumin Linux, desenvolvida e muito popular no Brasil. Deve ser salientado que esta Distribuição possui uma interface bastante amigável, em comparação às interfaces de outras distribuições Linux. Porém, após testes, constatou-se que essa distribuição não era robusta o suficiente para ser utilizada no projeto. 4.4 TESTE COM O SISTEMA OPERACIONAL LINUX FEDORA CORE 2 O Linux Fedora Core 2 se mostrou o SO mais robusto dentre os testados, sendo que o mesmo já dá suporte nativo a IPv6, também a todos os serviços e ao mecanismo de transição dual-stack. Por estes motivos, ela foi escolhida para ser usada no ambiente de testes. 4.5 ESTRUTURAÇÃO DA REDE Após a escolha da plataforma a ser utilizada, iniciou-se a configuração da intranet. Testes e Experiências 35 Inicialmente, instalou-se o Linux Fedora Core 2 nas três maquinas designadas e aproveitou-se a estrutura do laboratório da FAPEPI para a estruturação da intranet. Após instalado o SO nas máquinas, partiu-se para a configuração dos endereços IPv6 em cada máquina e também do gateway da intranet, no caso foi utilizado uma das máquinas (Angus) como roteador default das outras duas (Aprediz1 e Aprendiz2). Isto pode ser verificado na Figura 7.1.Na máquina Angus foram configuradas as rotas necessárias para o funcionamento da intranet, pois os dois hosts (Aprediz1 e Aprendiz2) foram configurados em subredes diferentes.. Devido ao fato de não se ter encontrado qualquer versão de DHCPv6 que funcionasse satisfatoriamente, os endereços foram atribuídos estaticamente, foram atribuídos diretamente em cada host. Utilizou-se o software BIND 9.3.2 para resolver os nomes no servidor de DNS, sendo que o mesmo foi instalado também na máquina Angus. A seguir, a Figura 4.1 mostra a estruturação física da rede: Internet Switch Principal 1/31/2005 IBM 8224 – 24 portas Roteador de borda 1/31/2005 Cisco 3700 series N° Ip : 200.137.160.129 pi.bb3.rnp.br Aprendiz1 Nº Ipv6: Aprendiz2 1/31/2005 Nº Ipv6: Angus 1/31/2005 Nº Ipv6: Figura 4.1 1/31/2005 Testes e Experiências 36 A meta inicial, de configurar a intranet, foi alcançada, conseguindo-se utilizar o ping6 para pigar os hosts. Porém, não conseguiu-se finalizar o trabalho, pois o roteador de borda (Cisco 3700 Series) não possuía instalado o IOS (Inter Opereting System) com a versão que dava suporte a interfaces IPv6, fato esse que impossibilitou a ligação com o backbone da RNP e os testes com o servidor de DNS. Também ficou imcompleto o tutorial, pois como não pode-se testar o servidor de DNS, não foi incluído no tutorial a parte que fala da configuração do BIND 9.3.2 . 5 CONCLUSÕES E TRABALHOS FUTUROS Neste capítulo serão expostas as principais conclusões extraídas com a realização deste trabalho de pesquisa. Serão apresentadas também as principais contribuições oferecidas pelo autor, bem como algumas sugestões para trabalhos futuros. Durante o trabalho, ficou patente que o IPv6 será muito importante nos próximos anos. Por enquanto, um backbone experimental com IPv6, o 6bone , está sendo construído. O Brasil está participando deste projeto através da RNP com recursos do CNPq,e o Piauí está inserido neste projeto através da FAPEPI, que hospeda o PoP-PI. Além de resolver a questão do espaço de endereçamento, o IPv6 também melhorou o suporte a gerenciamento de endereços, qualidade dos serviços e segurança quando comparado ao IPv4. No que se refere diretamente ao quesito segurança, 0 IPSec surgi para suprir a demanda de segurança a nível de IP, tanto no IPv4 quanto no IPv6, sendo que no IPv6 ele é um atributo obrigatório.Vários pontos devem ser analisados para uma implementação correta visando o melhor custo benefício possível à ser alcançado. Para os casos em que se exige apenas a autenticação, ou ainda, onde a confidencialidade não deve ser usada, é recomendada a utilização do AH. No Conclusões 38 entanto, a situação ideal é a utilização de autenticação e confidencialidade, ou seja, a utilização do AH e ESP em conjunto. Mais especificamente, é recomendado o uso do ESP "dentro" do AH, permitindo que o destino verifique a autenticidade do pacote antes de decifrá-lo, ou ainda, verifique autenticidade e decifre o pacote em paralelo. O tutorial desenvolvido, embora incompleto, oferece conteúdo suficiente para a implementação de uma intranet IPv6. 5.1 CONTRIBUIÇÕES Como contribuições deste trabalho merecem destaque as seguintes: Um estudo detalhado sobre o protocolo IPv6; O estudo das tecnologias de transição do protocolo IPv4 para o protocolo IPv6; Análise das plataformas existentes que dão suporte ao IPv6; Criação de um tutorial que serve como guia para configuração de intranets IPv6. 5.2 TRABALHOS FUTUROS Sugere-se uma investigação mais detalhada a cerca de softwares de DHCP que dêem suporte a IPv6 ou até mesmo o desenvolvimento de um software deste tipo. Também sugere-se uma complementação do tutorial aqui apresentado, com tópicos referentes a configuração de DNS, NAT-PT( Network Address Translation Protocol), Telnet, Web Services e servidor de E-mail (nas suas versões v6). Vale ressaltar que se iniciou a configuração de um servidor DNS, porém devida a falta de suporte do roteador de borda da FAPEPI ao protocolo IPv6, não foi possível o teste do mesmo. Estudos do NAT-PT foram iniciados, porém não foi possível a configuração deste serviço pelos mesmos motivos citados acima. REFERÊNCIAS BIBLIOGRÁFICAS [1] ATKINSON R., " IPv6 Security Architecture" Internet Draft, março 1995. [2] ATKINSON R., "IP Authentication Header", Internet Draft, março 1995 [3] ATKINSON R., "IPng Encapsulating Security Payload (ESP)", março 1995. [4] BRADNER S., A. Mankin, "The Recommendation for the IP Next Generation Protocol",RFC 1752, janeiro 1995. [5] CONTA A., S. Deering, "ICMP for the Internet Protocol Version 6 (IPv6)",Internet Draft, janeiro 1995. [6] DEERING S., R. Hinden, "Internet Protocol, Version 6 (IPv6) Specifications",RFC 1883, abril 1996. [7] GILLIGAN R., E. Nordmark, "Transition Mechanisms for IPv6 Hosts and Routers",março 1995. [8] HINDEN R., "IPng Next Generation Overview", maio 1995. [9] HINDEN R., S. Deering, "IP Version 6 Addressing Architecture", RFC1884, abril 1996. Referências Bibliográficas [10] 30 HOSAKA, Toshiyuki. “IPv6 address allocation and policy”. Disponível em < http://www.ipv6style.jp/en/tech/20041117/index.shtml >. Acessado em: Janeiro 2005. [11] KANDA, Mitsuru. “IPsec: a basis for IPv6 security”, Disponível em < http://www.ipv6style.jp/en/tech/20040707/index.shtml>. Acessado em: Março 2005. [12] REKHTER Y., T. Li, "An Archicture for IPv6 Unicast Address Allocation",Internet Draft, março 1995. [13] REKHTER Y., P. Lothberg, "An IPv6 Global Unicast Address Format", Internet Draft, março 1995. [14] THOMSON S., "IPv6 Address Autoconfiguration", Internet Draft, fevereiro 1995. ANEXO I 1 TUTORIAL PARA IMPLANTAÇÃO DE INTRANET IPV6 O tutorial engloba as seguintes fases: Configuração dos hosts; Configuração do roteador Linux; Anexo I 2 Para efeito deste tutorial,é importante salientar que linhas escritas após o símbolo “ # ” constituem comentários. Outra informação importante é que o usuário deve estar logado como super-usuário, ou seja, usuário root. 1.1 CONFIGURAÇÃO DOS HOSTS 1.1.1 ATIVANDO SUPORTE IPV6 O Fedora Core 2 já tem suporte ao IPv6 instalado por default. Basta apenas ativar o suporte, mandando carregar o módulo de suporte IPv6 do kernel. Para tal, deve ser aberto o arquivo de configuração do carregador de módulos do kernel “/etc/modules.conf” com qualquer editor de textos e deve ser acrescentada a seguinte linha: alias net-pf-10 ipv6 #Carrega o módulo IPv6 Em seguida deve ser aberto o arquivo “/etc/sysconfig/network” com um editor de textos qualquer e adicionar a seguinte linha: NETWORKING_IPV6=yes Neste ponto, a rede deve ser reiniciada usando o seguinte comando: service network restart Se tudo foi feito de forma correta, deverá existir a seguinte entrada: /proc/net/if_inet6 1.1.2 CONFIGURAÇÃO PERSISTENTE DE ENDEREÇOS DE REDE Para atribuir um endereço IP a uma interface, deve ser aberto o arquivo “/etc/sysconfig/network-scripts/ifcfg-<nomeDaInterface>”, onde <nomeDaInterface> refere-se à interface onde deseja-se adicionar o endereço, por exemplo, eth0. Anexo I 3 Adicione as seguintes linhas no arquivo: IPV6INIT=yes #Ativa IPv6 na interface IPV6ADDR=xxxx:xxxx:xxxx:xxxx/xx #Atribui um endereço IP No lugar de xxxx:xxxx:xxxx:xxxx/xx deve-se colocar o endereço e, após a barra, o número de bits referentes ao identificador de rede. 1.1.3 ATRIBUINDO ROTA DEFAULT AO HOST Deveremos editar ou criar, caso não exista, o arquivo “/etc/sysconfig/networkscripts/route6-< nomeDaInterface >” onde <nomeDaInterface> refere-se a interface onde deseja-se adicionar o endereço, por exemplo, eth0. Deve-se adicionar a rota usando a seguinte sintaxe: xxxx:xxxx:xxxx:xxxx/xx via xxxx:xxxx:xxxx:xxxx Onde o primeiro endereço refere-se a rede de origem e o segundo endereço refere-se ao gateway de saída. Um exemplo de rota seria: 2000::0/32 via 2000::3 1.1.4 ATRIBUINDO SERVIDOR DE DNS Para atribuir um servidor de DNS, deve-se abrir o arquivo “/etc/resolv.conf”. Acrescenta-se ou edita-se a linha nameserver xxxx:xxxx:xxxx:xxxx onde após nameserver você coloca o endereço do seu servidor de DNS. 1.2 CONFIGURANDO UM ROTEADOR NORMAL O arquivo “/etc/rc.d/rc.local” deve ser editado para que as configurações de rota sejam persistentes. Anexo I 4 Para se adicionar uma rota deve se utilizar o seguinte comando: /sbin/ip -6 route add <redeipv6>/<prefixo de rede> via <endereçoipv6> Onde <redeipv6> refere-se à rede de origem, <prefixo de rede> refere-se ao prefixo de rede de origem e <endereçoipv6> refere-se ao endereço do gateway. Ex: /sbin/ip -6 route add 2001::0/48 via 2001::3 Para visualizar as rotas adicionadas deve-se utilizar o comando: /sbin/ip -6 route show dev [interfacederede] Onde [interfacederede] refere-se à interface de rede da qual deseja-se visualizar as rotas. Ex: /sbin/ip -6 route show dev eth0 Para se excluir uma rota, deve-se retirar do arquivo “/etc/rc.d/rc.local” o comando que adiciona a mesma, ou usar o seguinte comando no terminal de comando: /sbin/ip -6 route del <redeipv6>/<prefixo de rede> via <endereçoipv6> Onde os valores entre os símbolos <> já foram descritos anteriormente.