A falta de endereços IPv4
De acordo com Vint Cerf (o pai da IP), o tamanho do endereço IPv4 de 32 bits foi escolhido arbitrariamente. A PI foi um experimento colaborativo entre governo / acadêmico e a Internet pública atual nunca foi prevista. O paradigma de IP era que cada dispositivo conectado teria um endereço IP exclusivo (todos os pacotes enviados entre dispositivos IP seriam conectados de ponta a ponta do endereço IP de origem ao endereço IP de destino) e muitos protocolos usando IP dependem de cada dispositivo tendo um endereço IP exclusivo.
Supondo que poderíamos usar todos os endereços IPv4 * possíveis, existem apenas 4.294.967.296 endereços IPv4 possíveis, mas (em setembro de 2018) a população mundial atual é 7.648.290.361. Como você pode ver, não há endereços IPv4 possíveis suficientes para cada pessoa ter um, mas muitas pessoas têm um computador, impressora, telefone celular, tablet, console de jogos, Smart TV etc., cada um exigindo um endereço IP e que nem sequer toca nas necessidades comerciais de endereços IP. Também estamos à beira da IoT (Internet das Coisas), onde cada dispositivo precisa de um endereço IP: lâmpadas, termostatos, termômetros, pluviômetros e sistemas de aspersão, sensores de alarme, eletrodomésticos, veículos, abridores de portas de garagem, sistemas de entretenimento, coleiras para animais de estimação e quem sabe o que mais.
* Existem blocos de endereços IPv4 que não podem ser usados para endereçamento de host. Por exemplo, o multicast possui um bloco de 268.455.456 endereços que não podem ser usados para endereçamento de host. A IANA mantém o registro de endereços para fins especiais IPv4 da IANA em https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml para documentar todos os blocos de endereços especiais e suas finalidades .
A IANA (Autoridade de números atribuídos à Internet) ficou sem blocos de endereços IPv4 para atribuir aos RIRs (Registros Regionais da Internet) a serem atribuídos em suas respectivas regiões, e os RIRs agora também ficaram sem endereços IPv4 para atribuir em cada região. Os ISPs (Internet Service Providers) e as empresas que desejam ou precisam de endereços IPv4 não podem mais obter endereços IPv4 de seus RIRs e agora devem tentar comprar endereços IPv4 de empresas que possam ter mais (à medida que a escassez de endereços IPv4 aumenta, o preço dos endereços IPv4 sobe).
Mesmo se todos os endereços IPv4 reservados para fins especiais e não puderem ser usados para endereçamento de host fossem disponibilizados para uso, ainda estaríamos na mesma posição porque simplesmente não há endereços IPv4 suficientes devido ao tamanho limitado dos endereços IPv4.
Atenuando a escassez de endereços IPv4
A IANA e os RIRs teriam ficado sem endereços IPv4 muitos anos antes, se a IANA e a IETF (Força-Tarefa de Engenharia da Internet) não tivessem adotado mitigações para a falta de endereços IPv4. Uma mitigação importante foi a descontinuação das classes de rede IPv4 em favor do CIDR (Classless Inter-Domain Routing). O endereçamento de classe permite apenas três tamanhos de rede atribuídos (16.777.216, 65.536 ou 256 endereços de host totais por rede), o que significa que muitos endereços são desperdiçados (uma empresa que precisa de apenas 300 endereços de host precisa receber uma rede de classe com 65.536 possíveis hosts) endereços, desperdiçando mais de 99% dos endereços nos classful da rede),
De longe, a atenuação que teve o maior impacto na extensão da vida do IPv4 é o uso de Endereçamento Privado e uma variante do NAT (Network Address Translation) chamada NAPT (Network Address Port Translation), que é o que a maioria das pessoas quer dizer quando consulte NAT ou PAT (PAT é um termo específico do fornecedor para NAPT). Infelizmente, o NAPT é uma solução alternativa feia que quebra o paradigma de ponta a ponta do IP e quebra protocolos que dependem de endereçamento IP exclusivo, exigindo soluções ainda mais feias.
NAT / NAPT
O conceito de NAT é bastante simples: ele substitui um ou ambos os endereços IPv4 de origem e destino em um cabeçalho de pacote, à medida que o pacote passa pelo dispositivo NAT. Na prática, requer computação porque o cabeçalho IPv4 possui um campo computado para verificar a integridade do cabeçalho IPv4, e qualquer alteração feita no cabeçalho IPv4 requer recálculo do campo, e alguns protocolos de transporte na carga útil do pacote também têm seus próprios computadores. campos que devem ser recalculados, usando recursos de computação no dispositivo NAT que podem ser usados para o encaminhamento de pacotes.
No NAT básico, o dispositivo NAT possui um pool de endereços IPv4 que ele usa para substituir os endereços IPv4 de origem dos cabeçalhos de pacotes pelos pacotes IPv4 enviados de uma rede interna para uma rede externa e mantém uma tabela de conversão para converter o endereço IPv4. endereços IPv4 de destino do tráfego retornando da rede externa para entregar os pacotes de volta aos hosts corretos na rede interna. Isso também requer recursos no dispositivo NAT para criar e manter a tabela de conversão e executar pesquisas de tabela. Essa utilização de recursos pode retardar o encaminhamento de pacotes porque os recursos usados pelo NAT são obtidos dos recursos que poderiam ser usados para o encaminhamento de pacotes.
O NAPT leva o NAT básico além disso, convertendo também os endereços do protocolo de transporte (portas) para TCP e UDP e os IDs de consulta para ICMP. Ao traduzir também os endereços da camada de transporte, o NAPT permite o uso de um único endereço IPv4 externo para muitos endereços IPv4 do host interno. O NAPT consome ainda mais recursos do que o NAT Básico, pois requer uma tabela separada para cada protocolo da camada de transporte e também deve executar os cálculos de integridade para os protocolos de transporte.
O uso do endereçamento IPv4 privado, que pode ser reutilizado em várias redes (você pode ter notado que a maioria das redes residenciais / residenciais usa como padrão a mesma rede 192.168.1.0/24, que está em um dos intervalos de endereços IPv4 privados alocados pela IANA) , junto com o NAPT, permite que usuários corporativos e domésticos usem um único endereço externo (público) para uma grande rede interna (endereçada em particular). Isso economiza muitos endereços IPv4 (várias vezes o número total de endereços IPv4 possíveis) e estendeu a vida útil do IPv4 muito além do ponto em que teria entrado em colapso sem o NAPT. O NAPT tem algumas desvantagens sérias:
- O NAPT quebra o paradigma de ponta a ponta do IP e funciona apenas com TCP, UDP e ICMP, quebrando outros protocolos de transporte. Também existem protocolos da camada de aplicativo que usam TCP ou UDP que são interrompidos pelo NAPT, mesmo que o TCP e o UDP funcionem nominalmente com o NAPT. Outras atenuações, por exemplo, STUN / TURN, podem estar disponíveis para alguns protocolos da camada de aplicativos, mas podem adicionar custo e complexidade.
- O NAPT consome muitos recursos, diminuindo o encaminhamento de pacotes em comparação com o que é possível sem usar qualquer forma de NAT. Alguns fornecedores adicionam hardware dedicado para atenuar a necessidade de roubar recursos do encaminhamento de pacotes, mas isso gera uma despesa adicional, tamanho, complexidade e uso de energia.
- Ao usar o NAPT, o tráfego iniciado de fora da rede NAPT não pode ser entregue à rede interna porque não há entrada de conversão na tabela de conversão, que é adicionada pelo tráfego iniciado por dentro. O único endereço externo (público) é configurado no dispositivo NAT e todos os pacotes com esse endereço IPv4 de destino e nenhuma entrada para o endereço IPv4 de origem na tabela de conversão para o protocolo de transporte são considerados para o dispositivo NAPT, ele próprio, não a rede interna. Há uma atenuação, chamada Port Forwarding, para esse problema.
- O Encaminhamento de porta basicamente configura, manualmente, uma entrada permanente em uma tabela de conversão para permitir o tráfego iniciado fora que é destinado a um protocolo de transporte específico e endereço para que o protocolo seja entregue a um host interno específico. Isso tem a desvantagem de permitir apenas que um host interno seja o destino de um protocolo e endereço de transporte específico. Por exemplo, se houver vários servidores web na rede interna, apenas um dos servidores web poderá ser exposto na porta TCP 80 (o padrão para servidores web).
- Como a escassez de endereços IPv4 é muito grave, os ISPs (Internet Service Providers) estão ficando sem endereços públicos para atribuir a seus clientes. Os ISPs não podem mais obter endereços públicos; portanto, adotaram algumas atenuações que afetam especialmente os usuários domésticos / residenciais. Os ISPs desejam reservar seu precioso pool de endereços públicos para seus clientes comerciais que desejam pagar pelo privilégio de obter endereços públicos. Para fazer isso, agora os ISPs estão começando a atribuir endereços privados ou compartilhados a seus clientes residenciais / residenciais, e usam os NAPT em seus próprios roteadores para facilitar o uso de vários endereços privados ou compartilhados em um único endereço público. Isso cria uma situação em que uma rede residencial / residencial está por trás de duas traduções NAPT (ISP NAPT para cliente NAPT),
- Muitas pessoas cometem o erro de equiparar NAPT e segurança porque os hosts internos não podem ser endereçados diretamente de fora. Este é um falso senso de segurança. Como um firewall que conecta uma rede à Internet pública é um local conveniente para executar o NAPT, isso simplesmente confunde a situação. Cria uma percepção perigosa de que o próprio NAPT é o firewall e que um firewall real é desnecessário. A segurança da rede vem de firewalls, que bloqueiam todo o tráfego iniciado externamente por padrão, permitindo apenas o tráfego explicitamente configurado para permitir, possivelmente fazendo uma inspeção profunda no conteúdo do pacote para eliminar cargas perigosas de pacotes. O que algumas pessoas não conseguem perceber é que, sem um firewall, seja em hardware ou software, externamente ou incorporado ao dispositivo NAPT, para proteger o dispositivo NAPT, o próprio dispositivo NAPT é vulnerável. Se o dispositivo NAPT estiver comprometido, ele e, por extensão, um invasor, terá acesso total à rede interna endereçada em particular. Pacotes iniciados externamente que não correspondem a uma tabela de conversão são destinados ao dispositivo NAPT, ele próprio, porque é o dispositivo que é realmente endereçado com o endereço externo, para que o dispositivo NAPT possa ser atacado diretamente.
A solução para a falta de endereços IPv4
O IETF previu a falta de endereços IPv4 e criou a solução: IPv6, que usa endereços de 128 bits, o que significa que existem 340.282.366.920.938.463.463.374.607.431.768.211.454 endereços IPv6 possíveis. O número quase inimaginável de endereços IPv6 elimina a necessidade de NAPT (o IPv6 não possui padrões NAT, da mesma forma que o IPv4, e a RFC NAT IPv6 experimental proíbe especificamente o NAPT), restaurando o paradigma de ponta a ponta do IP original. As atenuações para a falta de endereços IPv4 visam estender a vida útil do IPv4 até que o IPv6 seja onipresente, e nesse ponto o IPv4 deve desaparecer.
Os seres humanos não podem realmente compreender números do tamanho usado para o IPv6. Por exemplo, uma rede IPv6 padrão usa 64 bits para cada uma das partes da rede e do host do endereço de rede. São 18.446.744.073.709.551.616 redes IPv6 / 64 possíveis e o mesmo número (enorme) de endereços de host para cada uma dessas redes. Para tentar entender um número tão grande, considere ferramentas que varrem todos os endereços possíveis em uma rede. Se uma ferramenta desse tipo pudesse verificar 1.000.000 de endereços por segundo (improvável), levaria mais de 584.542 anos para executar a verificação em uma única rede / 64 IPv6. Atualmente, apenas 1/8 do espaço total de endereços IPv6 é alocado para endereços IPv6 globais, o que resulta em 2.305.843.009.213.693.952 redes IPv6 / 64 padrão e se a população mundial for de 21 bilhões no ano 2100 (um número um pouco realista), cada uma dessas 21 bilhões de pessoas poderia ter 109.802.048 redes IPv6 / 64 padrão, cada uma com 18.446.744.073.709.551.616 endereços de host possíveis. Infelizmente, a (décadas de) escassez de endereços IPv4 arraigou tanto a conservação de endereços nas pessoas, que muitas pessoas simplesmente não conseguem deixar de usá-lo e tentam aplicá-lo ao IPv6, o que é inútil e realmente prejudicial. O IPv6 foi projetado para desperdiçar endereços.
O IETF também teve a vantagem de retrospectiva e melhorou o IP (no IPv6) removendo recursos do IPv4 que não funcionavam bem, melhorando alguns recursos do IPv4 e adicionando recursos que o IPv4 não possuía, criando um novo e aprimorado IP . Como o IPv6 é um protocolo completamente separado do IPv4, ele pode ser executado em paralelo com o IPv4, pois a transição é feita do IPv4 para o IPv6. Hosts e dispositivos de rede podem executar IPv4 e IPv6 na mesma interface ao mesmo tempo (pilha dupla), e cada um é invisível para o outro; não há interferência entre os dois protocolos.
O problema com o IPv6 é que, na verdade, é um protocolo completamente diferente que é incompatível com o onipresente IPv4, e as mitigações para a escassez de endereços IPv4 são vistas por muitas pessoas como "boas o suficiente". O resultado é que foram mais de 20 anos anos desde a padronização do IPv6, e agora estamos obtendo alguma tração real no uso do IPv6 (relatórios do Google, em setembro de 2018, adoção mundial de IPv6 superior a 20% e taxa de adoção de IPv6 nos EUA superior a 35%). O motivo pelo qual finalmente mudamos para o IPv6 é que simplesmente não há mais endereços IPv4 não utilizados a serem atribuídos.
Existem outros obstáculos, todos parte da cultura IPv4, que são simplesmente difíceis de serem vistos pelas pessoas. Muitas pessoas também têm medo do IPv6, pois cresceram e se sentiram confortáveis com o IPv4, verrugas e tudo. Por exemplo, os endereços IPv6 parecem grandes e feios em comparação com os endereços IPv4, e isso parece desencorajar muitas pessoas. A realidade é que o IPv6 geralmente é mais fácil e flexível do que o IPv4, especialmente para endereçamento, e as lições aprendidas no IPv4 foram aplicadas ao IPv6 desde o início.