RedesComIPv6

De MediaWiki do Campus São José
Revisão de 17h39min de 10 de abril de 2024 por Casagrande (discussão | contribs) (→‎SLAAC)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

PARTE 1 - Endereçamento IPv6, roteamento estático e dinâmico

'Endereços IPv4 têm 32 bits e são capazes de endereçarem até pouco mais de 4 bilhões de hosts, e isso parecia mais do que suficiente quando o protocolo IP foi criado, nos primórdios da Internet. Mas desde os anos 1990, quando se massificou essa rede, constatou-se que os endereços IPv4 se esgotariam num horizonte próximo. Para evitar esse problema, e possibilitar que a Internet continuasse se expandindo (e também por outros motivos), foi criado o protocolo IPv6, cujos endereços têm 128 bits. Essa questão está bem descrita na introdução do livro Laboratório de IPv6:

Considerando que a concepção da Internet data da década de 70 e que, de lá para cá, houve uma explosão inesperada do seu uso, o IPv4 mostrou-se inadequado para acompanhar esta evolução.Uma das deficiências mais apontadas do IPv4 foi o espaço de endereçamento baseado num valor inteiro de 32 bits, que é tipicamente representado por quatro octetos em decimal, sendo possível disponibilizar apenas 4.294.967.296 endereços IPV4 diferentes. Para contornar essa deficiência, inúmeras soluções paliativas foram propostas e adotadas, como por exemplo o NAT (Network Address Solution) e o CIDR (Classless InterDomain Routing). Contudo, à medida que novas tecnologias de redes surgiram e o IP continuava sendo um dos protocolos chaves para sua operação, outras deficiências começaram a ser detectadas, especialmente aquelas referentes à segurança e ao suporte a parâmetros de QoS (Quality of Service) e mobilidade. Como consequência, no inicio da década de 90 é publicada a proposta da nova geração do IP (IPng – IP next generation) ou IPv6. Este novo protocolo traz a solução para muitas das deficiências de seu predecessor, o IPv4, incluindo espaço de endereçamento de 128 bits gerando a possibilidade de 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços (340 Undecilhões de endereços) disponíveis, suporte a roteamento e segmentação de pacotes na estação origem, suporte a mobilidade e mecanismos de segurança.


Pji3-Number-of-internet-hosts-in-the-domain-name-system.jpg
Número de hosts na Internet mundial registrados no DNS (a quantidade total deve ser bem maior !). As quantidades são expressadas em milhões de hosts. Obtido de: Statista

Endereço IPV6

Um endereço IPV6 possui 128 bits disponíveis para endereçar hosts, possibilitando 340 undecilhões de endereços possíveis. Para se ter uma ideia do que isto representa, se convertêssemos cada IPv6 possível em um cm2, poderíamos envolver toda a superfície do planeta Terra com 7 camadas de endereços. Podemos dizer também que essa quantidade também representa 58 setilhões de endereços por pessoa da face da terra (considerando 7 bilhões de habitantes).

Isso parece ser muita coisa, e é muito mais do que a gente possa imaginar. Veja como os endereços de toda essa faixa são distribuídos para a LANIC (gestora de endereços na América Latina)

LANICaddr.png

Atente que para cada NIC foi designado 20% de 1% de 1/8 dos endereços!!! Ou seja, para TODA a América Latina foi dada esta quantidade de endereços. E isso já é uma quantidade impensável de endereços. Para você ter uma ideia se alguém receber um endereço /64 para utilizar em sua empresa (sim, isso é possível e usual), essa empresa estará recebendo 18.446.744.073.709.551.616 endereços (18 quintilhões)(muuuuito mais do que todos os IPv4 que existiam em toda a faixa de endereçamento!!!).

Adoção no Brasil

O Brasil está entre os 10 países com maior adoção de IPv6, segundo o Google:

  • Acesse esse site para ver a posição do Brasil e outros da América Latina na adoção do IPv6. Você também vai encontrar vários serviços úteis.
  • Endereços IPv6 estão sendo amplamente usados por provedores de acesso, como se pode comprovar em serviços de dados do tipo ADSL e LTE:


  • Veja se seu provedor de serviços de acesso a Internet está te oferecendo IPv6. No Android, acesse a configuração (engrenagem) do seu celular, vá até Sistema e depois Sobre o Dispositivo e por fim status. Você verá uma tela similar a essa:
Pji3-ipv6-movel.png


Cópia de tela de um celular mostrando o uso de endereço IPv6 em seu link de dados

Como Escrever Números IPv6

O uso de tantos bits para endereços, mesmo usando a representação em subconjuntos de duplos duoctetos (ou hexatetos ou deca-hexateto), implica em uma quantidade de algarismos (ainda) muito extensa! Uma saída para não se enrolar (tanto) com eles, é não representar a quantidade de zeros que quase sempre estará presente, diante das estratégias de segmentação de toda a faixa de numeração IPv6. Para tanto há duas regras para tratar essa redução na representação:

  1. SOMENTE PODEM SER ELIMINADOS ZEROS À ESQUERDA: ZEROS À DIREITA NÃO PODEM SER ELIMINADOS. Assim um endereço 2001:0db8:cade:cafe:0000:0000:0000:0001 poderia ser representado como 2001:db8:cade:cafe:0:0:0:1.
  2. Elimine duoctetos formados inteiramente por zeros: Quando temos uma sequencia de zeros no endereço, a mesma pode ser substituída por :: indicando que os números que faltam para completar a quantidade de bits do endereço são zeros. Assim, o mesmo número acima poderia ficar representado como 2001:db8:cade:cafe::1.

IMPORTANTE: A segunda regra acima PODE SER UTILIZADA SOMENTE UMA VEZ NO ENDEREÇO A FIM DE EVITAR AMBIGUIDADE NO ENDEREÇO. Por exemplo:

  • O endereço reduzido 2001:db8::2::2. Este endereço poderia ser expandido para 2001:0db8:0000:0002:0000:0000:0000:0002 e também para 2001:0db8:0000:0000:0000:0002:0000:0002.
  • o endereço reduzido 2001:DB8::BEBA::C0:CA pode ser expandido como 2001:0DB8:0000:BEBA:0000:0000:00C0:00CA ou 2001:0DB8:0000:0000:BEBA:0000:00C0:00CA. Observe que são endereços completamente diferentes!

Vamos exemplificar alguns casos de redução dessa representação nna tabela à seguir:

Regras de Representação Exemplo Completo Exemplo Reduzido Comentários
Omitir Zeros à Esquerda em um Bloco de 4 Dígitos Hexadecimais 2001:0db8:005a:0001:0000:0000:0000:0001 2001:db8:5a:1::1 Blocos de dígitos hexadecimais podem ter os zeros iniciais omitidos.
Omitir Blocos de Zeros Contíguos 2001:0db8:0:0:0:0:0:1 2001:db8::1 Sequências contíguas de zeros podem ser substituídas por "::".
Unicast Link-Local: Prefixo FE80::/10 pode ser omitido FE80:0000:0000:0000:0A2E:0370:7334:0001 FE80::A2E:370:7334:1 O prefixo FE80::/10 pode ser omitido em endereços Link-Local.
Unicast Link-Local na Loopback 0000:0000:0000:0000:0000:0000:0000:0001 (Loopback) ::1 Em endereços Loopback, o prefixo "::1/128" é suficiente.
Unicast Global Loopback 2001:db8::1 (Global) 2001:db8::1 Endereços Unicast Global são escritos normalmente, sem abreviações especiais.

Tipos de Endereços IPV6

segue um tabela geral para entender os tipos de endereços IPv6:

Tipo de Endereço Formato Exemplo Descrição
Unicast Global Global Routing Prefix + Subnet ID + Interface ID 2000::/3 2001:0db8:85a3:0000:0000:8a2e:0370:7334 Endereço globalmente roteável na Internet.
Unicast Link-Local FE80::/10 + Interface ID FE80::1 Comunicam-se apenas na rede local.
Unicast Unique Local FC00::/7 + Subnet ID + Interface ID FC00::1 Usado para comunicação dentro de uma organização.
Unicast AnyCast Prefixo AnyCast + Interface ID ::/64 prefixo anycast é o mesmo que o usado para endereços unicast. A diferença está na forma como esses endereços são anunciados e tratados na rede. Designa múltiplas interfaces, mas comunica-se apenas com o mais próximo.
Multicast FF00::/8 + Group ID FF02::1 Destinado a grupos de hosts, usado para comunicação um-para-muitos.
IPv4 Mapeado ::FFFF:IPv4 ::FFFF:192.0.2.1 Usado para transição entre IPv4 e IPv6.
Loopback ::1/128 ::1 Usado para testar a pilha de protocolos TCP/IP.
Unspecified ::/128 :: Usado em circunstâncias especiais para indicar "este host" ou "qualquer host".
Observações
  • O prefixo 2001:db8::/32 é, na verdade, um prefixo de endereço IPv6 reservado para documentação e exemplos, mas ele pertence à faixa de endereços global unicast. Isso significa que teoricamente ele é roteável na Internet. No entanto, a Internet Assigned Numbers Authority (IANA) reservou esse prefixo especificamente para ser usado em documentações e exemplos, e qualquer tráfego real direcionado para esse prefixo não será roteado na Internet pública. Portanto, embora pertença à faixa global unicast, na prática, o 2001:db8::/32 é considerado não roteável na Internet pública devido à sua reserva para documentação e exemplos.
  • Endereços Loopback: Endereços aplicados as interfaces loopback dos host; (Verificar com ifconfig)
  • Endereços Link local: Podem ser utilizados apenas no enlace específico onde a interface está conectada, sendo assim não é roteável;
  • Endereços Unique local address Endereço com grande probabilidade de ser globalmente único, utilizado apenas para comunicações locais, geralmente dentro de um mesmo enlace ou conjunto de enlaces. Um endereço ULA não deve ser roteável na Internet global;
  • Endereços Multicast: Endereços multicast são utilizados para identificar grupos de interfaces, sendo que cada interface pode pertencer a mais de um grupo. Os pacotes enviados para esses endereço são entregues a todos as interfaces que compõe o grupo;
  • Endereços Global unicast: Equivalente aos endereços públicos IPv4, o endereço global unicast é globalmente roteável e acessível na Internet IPv6.
  • Observe que não existe no IPv6 endereços BROADCAST.


Endereços Anycast

Endereços Anycast: Um endereço IPv6 anycast é utilizado para identificar um grupo de interfaces, porém, com a propriedade de que um pacote enviado a um endereço anycast é encaminhado apenas a interface do grupo mais próxima da origem do pacote. Os endereços anycast são atribuídos a partir da faixa de endereços unicast e não há diferenças sintáticas entre eles.

Anycast é um método de roteamento de dados onde o mesmo endereço IP é atribuído a múltiplas interfaces de servidores distribuídos em locais diferentes. Quando um cliente envia um pacote para esse endereço, a rede roteia o pacote para o servidor mais próximo em termos de rotação BGP (Border Gateway Protocol). Isso é útil para distribuir tráfego e garantir alta disponibilidade, redundância de serviços, balanceamento de banda, enfim, resiliência da rede.

Um exemplo prático é o serviço DNS raiz da Internet, onde múltiplos servidores no mundo todo compartilham o mesmo endereço anycast. Quando você faz uma consulta DNS para o servidor raiz, você é direcionado automaticamente para o servidor mais próximo geograficamente.

Endereços Unicast

Link Local Address

Link Local pode ser usado apenas no enlace específico onde a interface está conectada, o endereço link local é atribuído automaticamente utilizando o prefixo FE80::/64. Os 64 bits reservados para a identificação da interface são configurados utilizando o formato IEEE EUI-64. Vale ressaltar que os roteadores não devem encaminhar para outros enlaces, pacotes que possuam como origem ou destino um endereço link-local.

O formato IEEE EUI-64 (Identificador Único de Interface de 64 bits) é um método para criar endereços IPv6 globalmente únicos e estáveis a partir do endereço MAC de uma placa de rede. Este formato é especificado pelo IEEE (Instituto de Engenheiros Eletricistas e Eletrônicos). A ideia central do EUI-64 é estender o endereço MAC de 48 bits para um formato IPv6 de 64 bits, adicionando 16 bits adicionais para formar um identificador de interface IPv6 único (mais adiante é demonstrado esse processo).


Lla.png


Uma analogia do Link Local Adress com Automatic Private IP Addressing – APIPA

Quando usamos endereçamento IPv4 em uma rede, é necessário configurar manualmente os IPs nas estações de trabalho ou então utilizar um servidor DHCP para atribuir esses endereços automaticamente – que é o procedimento mais comum.


Porém, se o servidor DHCP falhar ou não estiver disponível em uma rede Windows, neste caso, as máquinas na rede local não receberão suas configurações de rede, incluindo o endereço IP. Para tentar garantir que, num caso desses, as máquinas ao menos consigam se comunicar entre si dentro da própria rede local (LAN), podemos usar o serviço do APIPA – também conhecido como Endereço de Link Local.

Usando o APIPA é possível garantir que as máquinas consigam se comunicar em uma rede local, mesmo que não haja servidores DHCP disponíveis para atribuir endereços aos hosts, ou que as máquinas não possuam configuração de IP fixo. Neste caso, o cliente DHCP atribui a si próprio um endereço IP de uma faixa pré-determinada, assim como uma máscara de sub-rede.

Quando um servidor DHCP se tornar disponível na rede novamente, o cliente efetuará uma requisição de IPs normalmente, substituindo o endereço APIPA pelo endereço que será fornecido pelo servidor. De acordo com a Microsoft, o serviço do APIPA verifica a cada 5 minutos se um servidor DHCP está disponível na rede.

O endereço LINK LOCAL é comparável com as faixas de endereço privado do endereçamento IPv4. Ademais, a estratégia de montagem do endereço completo da (prefixo + sufixo), tem similaridades com a metodologia usada no IPv4 quando um servidor DHCP falha na atribuição de endereços na rede. Nesses casos o próprio sistema operacional se encarrega de atribuir um endereço automático para garantir a troca de dados entre os computadores da mesma LAN usando o serviço chamado de APIPA - Automatic Private IP Addressing, ou seja, Endereçamento IP Privado Automático.

Existe uma faixa de endereços reservados pelo IETF que são atribuíveis por meio do APIPA: 169.254.0.1 até 169.254.255.254 sendo que o primeiro e último blocos dessa faixa são reservados, de modo que as estações, na verdade, irão receber endereços localizados na seguinte faixa: 169.254.1.0 até 169.254.254.255 Também será usada a máscara de sub-rede classe B 255.255.0.0

Unique Local Unicast (ULA)

O endereço Unique Local Unicast - ULA é um endereço com grande probabilidade de ser globalmente único, utilizado apenas para comunicações locais, geralmente dentro de um mesmo enlace ou conjunto de enlaces. Um endereço ULA não deve ser roteável na Internet global. Um endereço ULA, criado utilizando um ID global e alocado pseudo-randomicamente (determinístico e podem ser reproduzidas se o mesmo ponto de partida - "semente" - for usado), é composto das seguintes partes: Prefixo: FC00::/7; Flag Local (L); se o valor for 1 (FD) o prefixo é atribuído localmente. Se o valor for 0 (FC), o prefixo deve ser atribuído por uma organização central (ainda a definir); identificador global identificador de 40 bits usado para criar um prefixo globalmente único. Identificador da Interface identificador da interface de 64 bits.

Ula ipv6.png

Global Unicast

Atualmente, está reservada para atribuição de endereços a faixa 2000::/3 (001), ou seja, 3 primeiros bits utilizados para registros da faixa 2000. Equivalente aos endereços públicos IPv4, o endereço global unicast é globalmente roteável e acessível na Internet IPv6. Ele é constituído por três partes: o prefixo de roteamento global, utilizado para identificar o tamanho do bloco atribuído a uma rede; a identificação da sub-rede, utilizada para identificar um enlace em uma rede; e a identificação da interface, que deve identificar de forma única uma interface dentro de um enlace. Sua estrutura foi projetada para utilizar os 64 bits mais a esquerda para identificação da rede e os 64 bits mais a direita para identificação da interface.

Global unicast.png

Endereço Multicast

O IPV6 não possui endereço broadcast, e sim multicast. Endereços multicast são utilizados para identificar grupos de interfaces, sendo que cada interface pode pertencer a mais de um grupo. Os pacotes enviados para esses endereço são entregues a todos as interfaces que compõe o grupo. Seu funcionamento é similar ao do broadcast, dado que um único pacote é enviado a vários hosts, diferenciando-se apenas pelo fato de que no broadcast o pacote é enviado a todos os hosts da rede, sem exceção, enquanto que no multicast apenas um grupo de hosts receberá esse pacote.


Multcast.png

Cabeçalho IPV6

O cabeçalho IPv6 possui menos informações, quando comparado ao cabeçalho IPv4. Várias informações foram removidas do cabeçalho IPV6, como por exemplo o checksum, considerado uma informação desnecessária uma vez que o controle de erro é atribuído às camadas inferiores.

Header ipv6.png

Os campos presentes no cabeçalho IPV6 são definidos a seguir:

  • Class of traffic: define a classe de serviço a que o pacote pertence, possibilitando associar diferentes prioridades a pacotes dependendo da exigência de cada aplicação. Com isso, podem-se dar subsídios ao controle da qualidade de serviço (QoS) na rede.
  • Flow Label: proposto para identificar datagramas que fazem parte de um mesmo fluxo, o que facilitaria, em tese, o tratamento dado a esses datagramas na rede. Atualmente esse cabeçalho não tem sido usado, e pode ser que em revisões futuras seja mudado seu propósito.
  • Payload Length: quantidade de bytes contidos na carga útil transportada pelo datagrama (payload).
  • Next Header: informa que há um cabeçalho opcional em seguida.
  • Hop: Número máximo de saltos (roteadores intermediários), da origem ao destino do datagrama, que podem ser percorridos antes do datagrama ser descartado. Em outras palavras, quantidade máxima de encaminhamentos permitidos para o datagrama. Tem papel similar ao campo TTL do IPv4.
Header ipv4.png

PARTE 2 - Auto-configuração de endereços


Em redes IPv4, a auto-configuração de hosts se faz com o serviço DHCP. Em redes IPv6 existem duas formas de auto-configurar hosts:

  • SLAAC (Auto-configuração stateless): um host gera seu próprio endereço IPv6 a partir de informação anunciada periodicamente pelo gateway da rede. O gateway não sabe que host usa qual endereço IPv6.
  • DHCPv6: similar ao serviço DHCP para IPv4, um host obtém toda sua configuração de rede (incluindo seu endereço IPv6) de um servidor DHCPv6. Esse servidor mantém informações sobre que host usa qual endereço IPv6.

SLAAC

Com SLAAC, um host IPv6 tem a capacidade de auto-configurar seu endereço em uma subrede. Com isso, facilita-se a configuração de rede de um equipamento, pois torna-se desnecessário obter e definir manualmente seu endereço IPv6, além de outras informações tais como máscara de rede, gateway e servidores DNS. No entanto, isso depende de o gateway (ou algum outro equipamento) fornecer essas informações de configuração para os hosts em sua(s) subrede(s). Isso não é novidade, pois em redes IPv4 o serviço DHCP tem exatamente esse papel. Porém, com o surgimento de IPv6, a auto-configuração se tornou uma função do próprio protocolo de rede. Em redes IPv4, DHCP é um serviço que depende de softwares específicos tanto nos hosts (clientes) quanto no servidor. A auto-configuração IPv6 é muito mais simples, e não demanda nenhum software adicional nos hosts.

A autoconfiguração do IPV6, chamada stateless, é o procedimento com que os hosts de uma subrede podem definir seus próprios endereços, baseados em informações locais (ex: endereço MAC de sua interfaces de rede Ethernet, Wifi, ou Bluetooth), e em informações recebidas de roteadores, denominadas mensagens Router Advertisement. Sendo assim, o roteador é o responsável por fornecer informações sobre a SUBrede para que seja possível que hosts que nela residem se autoconfigurem. A autoconfiguração do IPV6 é chamada de stateless porque o roteador não mantém nenhum registro sobre a configuração de cada host. Isso é consequência da capacidade dos hosts se autoconfigurarem apenas sabendo a subrede a que pertencem. No entanto, para que seja possível a autoconfiguração em redes baseadas em IPV6, duas etapas de configuração devem ser aplicadas, sendo elas:

  • Configuração do prefixo ou neste caso a identificação da subrede. Nesta etapa, os prefixos são coletados pelos hosts por meio de mensagens ICMPv6, chamadas de Router Advertisement, as quais são transmitidas pelos roteadores.
  • Configuração do sufixo do host identificação do host propriamente dito. Nesta etapa, o sufixo de host é automaticamente obtido a partir do endereço MAC de 48 bits obtido de sua próprio interface de rede Ethernet ou Wifi. Uma vez que um endereço MAC possui apenas 48 bits, porém os sufixos IPV6 possuem 64 bits, os 16 bits restantes para completar o endereço IPV6 são inseridos por uma função de expansão chamada de Extended Unique Identifier (EUI). A função EUI executa as seguintes etapas:
  1. Separa o endereço MAC em dois blocos de 24 bits
  2. Adiciona os algarismos hexadecimais FFFE entre os dois blocos
  3. Muda o sétimo bit do primeiro byte para 1 para sinalizar que o endereço é gerenciado localmente.


Este exemplo mostra a geração do sufixo de um endereço IPv6:

Sufix ipv62.jpg


Protocolo NDP (Neighbor Discovery Protocol)

A auto-configuração IPv6 depende do protocolo NDP, implementado usando mensagens ICMPv6. De acordo com este tutorial do site IPv6.br, no caso da autoconfiguração de hosts, o protocolo fornece suporte para a realização de três funcionalidades:

  • Parameter Discovery: atua na descoberta por um host de informações sobre o enlace (como MTU) e sobre a Internet (como limite de saltos).
  • Address Autoconfiguration: trabalha com a autoconfiguração stateless de endereços nas interfaces de um nó.
  • Duplicate Address Detection: utilizado para descobrir se o endereço que se deseja atribuir a uma interface já está sendo utilizado por um outro nó na rede.


Já no caso da transmissão de pacotes entre nós, o suporte é dado para a realização de seis funcionalidades:

  • Router Discovery: trabalha com a descoberta de roteadores pertencentes ao enlace.
  • Prefix Discovery: implementa a descoberta de prefixos de redes do enlace, cuja a finalidade é decidir para onde os pacotes serão direcionados numa comunicação (se é para um roteador especifico ou direto para um nó do enlace).
  • Address Resolution: descobre o endereço fisico através de um endereço lógico IPv6.
  • Neighbor Unreachability Detection: permite que os nós descubram se um vizinho é ou se continua alcançavel, uma vez que problemas podem acontecer tanto nos nós como na rede.
  • Redirect: permite ao roteador informar ao nó uma rota melhor ao ser utilizada para enviar pacotes a determinado destino.
  • Next-Hop Determination: algoritmo para mapear um endereço IP de destino em um endereço IP de um vizinho para onde o trafego deve ser enviado.


Tratando especificamente da auto-configuração IPv6, o protocolo NDP usa mensagens ICMPv6 do tipo RA (Router Advertisement - Anúncio de Roteador) para anunciar parâmetros da subrede. Essas mensagens são tipicamente enviadas periodicamente pelo gateway, e contêm estas informações:

  • prefixo da subrede
  • endereço do servidor DNS
  • MTU
  • rotas para subredes específicas
  • domínios DNS


Em sistemas Linux, o envio de mensagens RA por um roteador são feitas pelo software radvd.


Ao receber uma mensagem RA, um host pode completar sua auto-configuração, e assim se comunicar na rede IPv6. A figura a seguir mostra mensagens RA enviadas por um roteador:

Pji11103-Radv.jpg

DHCPv6


O protocolo DHCPv6 guarda semelhanças com DHCP usado em redes IPv4. Ele implementa um serviço de configuração dinâmica de endereços. Assim como DHCP, DHCPv6 pode fornecer muitas outras informações aos hosts, tais como endereços de servidores WINS, proxy HTTP, programa de boot, entre outros.


De acordo com o livro Laboratório de IPv6, na página 51, basicamente, a comunicação entre o servidor DHCP e as máquinas cliente se dá com a troca de quatro mensagens:

  • Solicit: enviada pelo cliente ao grupo multicast all-dhcp-agents (ff02::1:2) com o intuito de localizar o servidor DHCP.
  • Advertise: enviada pelo servidor DHCP, diretamente ao endereço link-local do cliente, para indicar que ele pode fornecer as informações necessárias para a configuração.
  • Request: enviada pelo cliente diretamente ao grupo multicast all-dhcp-agents (ff02::1:2) para requisitar ao servidor DHCP os dados de configuração.
  • Reply: enviada pelo servidor DHCP ao endereço de link-local do cliente como resposta à mensagem Request.


O DHCPv6 possui dois modos de operação:

  • Stateful: o servidor DHCPv6 é responsável por informar aos clientes os endereços IPv6 que devem ser utilizados em suas interfaces de rede, mantendo o estado de qual endereço foi atribuído a determinado cliente.
  • Stateless: o servidor DHCPv6 informa apenas parâmetros de configuração como endereço dos servidores DNS ou servidores SIP da rede aos clientes, sem a necessidade de guardar qual informação individual de cada cliente. Nesse segundo caso, o cliente deverá obter o endereço IPv6 de sua interface de outra forma, seja manualmente ou SLAAC.

Para usar DHCPv6, é necessário um software específico a ser executado no servidor. Esse software responde a requisições de configuração de rede enviadas por clientes, fornecendo-lhes seus endereços IPv6 e demais configurações. Em sistemas Linux (e outros da família Unix), o software mais usado é o ISC DHCP server. Como visto no caso de DHCP para redes IPv4, esse software deve ser configurado a partir do arquivo /etc/dhcp/dhcpd6.conf. O exemplo de configuração a seguir mostra a declaração de uma subrede IPv6 com a respectiva faixa de endereços a serem concedidos e o servidor DNS a ser informado:

Instalação do DHCPv6 SERVER

Para instalar e configurar um servidor DHCP que ofereça suporte ao IPv6, você pode usar o serviço isc-dhcp-server. Para o caso do Ubuntu (Debian) segue os passos básicos para instalar e configurar o DHCPv6:

Instale o DHCP Server
sudo apt update
sudo apt install isc-dhcp-server
Configuração do DHCPv6

Abra o arquivo de configuração do DHCPv6 com um editor de texto, como o editor gedit ou nano:

sudo nano etc/dhcp/dhcpd6.conf

O conteúdo deste arquivo será onde você configura as opções para o servidor DHCPv6.

Um exemplo simples de configuração DHCPv6 para começar seria:

default-lease-time 600;
max-lease-time 7200;

subnet6 2001:db8:1234::/64 {
  range6 2001:db8:1234::1000 2001:db8:1234::2000;
  option dhcp6.name-servers 2001:4860:4860::8888, 2001:4860:4860::8844;

}

Isso configura um pool de endereços IPv6 dentro da sub-rede 2001:db8:1234::/64. E também:

  • default-lease-time: Define o tempo de locação padrão (em segundos) para os endereços IPv6.
  • max-lease-time: Define o tempo máximo de locação (em segundos).
  • subnet6: Especifica a sub-rede IPv6 na qual o DHCPv6 vai operar.
  • range6: Define o intervalo de endereços que o servidor DHCPv6 pode atribuir.
  • option dhcp6.name-servers: Define os servidores DNS IPv6 a serem fornecidos aos clientes.
  • option dhcp6.domain-search: Define o domínio de pesquisa DNS.
Configuração das Interfaces

Agora, você precisa configurar as interfaces de rede que o servidor DHCPv6 usará para distribuir os endereços.

Abra o arquivo de configuração do DHCP
sudo nano /etc/default/isc-dhcp-server
Adicione as interfaces relevantes

Localize, descomente ou acrescente a linha:

INTERFACESv6="eth0"

Substitua eth0 pela interface que você deseja usar. Você pode acrescentar outras interfaces separando entre espaços, os nomes delas (de acordo com o ifconfig ou ip addr show.

Reinicie o Serviço DHCP
sudo systemctl restart isc-dhcp-server


Configuração do SLAAC

O suporte ao SLAAC é geralmente ativado por padrão. Certifique-se de que a interface de rede está configurada para aceitar o SLAAC. Para fazer isso, edite o arquivo de configuração da interface, substituindo <sua_interface> pelo nome da sua interface de rede (por exemplo, eth0):

sudo nano /etc/network/interfaces.d/<sua_interface>
  • Adicione ou modifique a linha referente à interface para incluir inet6 auto:
iface <sua_interface> inet6 auto

Salve o arquivo e feche o editor de texto.

  • Reinicie a Interface de Rede:

Reinicie a interface de rede ou reinicie o servidor para aplicar as configurações:

sudo systemctl restart networking
Verificação do serviço

Para verificar se o servidor está funcionando e distribuindo endereços IPv6, você pode usar um cliente DHCPv6 na mesma rede. Ativando restartando o serviço de dhclient ou atribuindo um número IPv6 aleatórios manualmente mas sempre com números de prefixo 2001:db8:1234::/64 com ifconfig ou ip addr add.

Certifique-se de testar as configurações em um ambiente de teste antes de aplicá-las em produção. O DHCPv6 é uma tecnologia poderosa e incorretamente configurada pode causar problemas na sua rede.

Muitas opções para DHCPv6 podem ser usadas. Maiores detalhes podem ser encontrados na documentação sobre as opções.

Ativação do serviço de DHCPv6 Cliente

No caso de UBUNTU com pacote de serviços Netplan

Edite o Arquivo de Configuração associado à sua interface de rede (por exemplo, sudo nano /etc/netplan/01-netcfg.yaml).

Para ativar o DHCPv6, certifique-se de que a configuração de IPv6 seja definida como auto. Por exemplo:

version: 2
ethernets:
  enp0s3:
    dhcp6: true

Em seguida aplique as Configurações:

sudo netplan apply
Para outras distribuições Debian

Da mesma forma que fizemos com DHCP com IPv4, edite o arquivo de configuração do dhclient como o /etc/dhcp/dhclient.conf. Localize a linha com a configuração request e verifique se nela está listada a opção dhcp6. Se não tiver essa opção, adicione ou mesmo adicione essa configuração se ela não existir.

Adicione a Linha para Ativar o DHCPv6
request dhcp6

Isso determina ao serviço dhclient a solicitar um endereço IPv6 ao servidor DHCPv6. Podem existir outras opções também de configurações adicionais como DNS, rotas, nomes de hosts, MTU, etc... mantenha o que vc encontrar neste conteúdo do arquivo.

Reinicie o Serviço DHCLIENT
sudo systemctl restart dhclient

Opcionalmente, se você quer acompanhar a troca de mensagens do DHCPv6 em uma renovação (renew) do serviço, aplique o comando:

sudo dhclient -6 -v -r enp0s3  #caso não seja informada a interface, a procura pelo servidor DHCPv6 será em todas!