A primeira coisa que deve ser mencionada sobre sub-redes IPv6 é que é necessário um modo diferente de pensar . No IPv4, você normalmente pensa em quantos endereços você tem disponível e em como pode alocar um número suficiente deles para cada usuário final. No IPv6, você normalmente pensa em quantas sub - redes (/ 64) você tem disponível e como alocá-las aos usuários finais. Você quase nunca se preocupa com quantos endereços IP serão usados em uma determinada sub-rede. Exceto em alguns casos especiais, como links ponto a ponto, cada sub-rede simplesmente possui muito mais endereços disponíveis do que jamais exigirá; portanto, você se preocupa apenas em alocar sub-redes, não em hosts dentro delas.
As sub-redes IPv6 geralmente são / 64, porque isso é necessário para que o SLAAC (autoconfiguração de endereço sem estado) funcione. Mesmo quando o SLAAC não está em uso, pode haver outros motivos para usar / 64. Por exemplo, pode haver alguns dispositivos de usuário final que simplesmente assumem / 64, ou então sub-redes de roteamento maiores que / 64 podem ser ineficientes em alguns roteadores porque o implementador do roteador otimizou o caso de / 64 ou rotas mais curtas para salvar memória da tabela de roteamento.
Por que é recomendado usar / 127 para links ponto a ponto
Para o caso específico de links ponto a ponto, recomenda-se / 127 em vez de / 64 para evitar uma vulnerabilidade em que endereços de pacotes para qualquer um dos quadrilhões de endereços não utilizados na sub-rede causam solicitações indesejadas de solicitação de vizinhos e entradas de tabela que poderia afogar um roteador. Esses pacotes de endereços incorretos podem ser maliciosos ou acidentais. Mas mesmo se você realmente configurar um link ponto a ponto como / 127, algumas pessoas advogam atribuir um / 64 inteiro de qualquer maneira apenas para ser consistente.
Por que as máquinas virtuais seriam provisionadas com sub-redes menores que / 64?
Não sei especificamente por que máquinas virtuais seriam provisionadas com sub-redes menores que / 64. Talvez porque um provedor de hospedagem tenha assumido que um servidor era como um usuário final e exigido apenas uma única sub-rede (/ 64), sem antecipar que o servidor seria realmente uma coleção de VMs que exigem uma topologia de roteamento interna? Isso também poderia ser feito simplesmente como uma questão de facilitar a memorização do plano de endereçamento: o host fica PREFIX::/64
, então cada VM chega PREFIX:0:NNNN::/96
onde o NNNN é exclusivo da VM e a VM pode alocar PREFIX:0:NNNN:XXXX:YYYY
conforme desejar.
Posso mapear diretamente de sub-redes IPv4 para sub-redes IPv6? Por exemplo, um IPv4 / 24 corresponde diretamente a um IPv6 / 56 ou / 120?
De uma perspectiva de baixo nível de como o endereçamento e o roteamento funcionam, o tamanho do prefixo tem o mesmo significado no IPv6 e IPv4. Nesse nível, você pode fazer uma analogia como "um IPv4 / 16 usa metade dos bits para o endereço de rede e metade dos bits para o endereço de host, como um / 64 no IPv6". Mas essa comparação não é realmente adequada. Surgiram fortes convenções no IPv6, que tornam as divisões de tamanhos de rede um pouco mais parecidas com o velho mundo das redes de classe no IPv4. Para ter certeza, o IPv6 não reintroduzir classful abordando em que os poucos bits mais significativos do endereço forçar uma máscara de rede particular, mas o IPv6 não tem é certas [/ convencionalmente defacto] tamanhos de rede padrão:
- / 64 : o tamanho básico de uma única sub-rede: LAN, WAN, bloco de endereços para hosts virtuais da web, etc ... Nunca é esperado que sub-redes "normais" sejam menores (prefixo mais longo) que / 64. Espera-se que nenhuma sub-rede seja maior (prefixo mais curto) que / 64, já que o endereço de host de um / 64 é muito mais do que podemos imaginar necessitando.
- / 56 : um bloco de 256 sub-redes básicas. Embora as políticas atuais permitam aos ISPs distribuir blocos tão grandes quanto / 48 para cada usuário final e ainda considerem sua utilização de endereços bem justificada, alguns ISPs podem (e já o fazem) optar por alocar um / 56 a clientes de nível consumidor como um compromisso entre alocar lotes de sub-redes para eles e abordar a economia.
- / 48 : um bloco de 65536 sub-redes básicas e o tamanho recomendado de bloco que todo site final do cliente ISP deve receber.
- / 32 : o tamanho padrão do bloco que a maioria dos ISPs receberá sempre que solicitar mais endereços de um registro de endereço regional.
Dentro de redes de prestadores de serviços e empresas, podem ser vistos muito mais comprimentos de prefixos que esses 4. Ao olhar para as tabelas de roteamento de roteadores dentro dessas redes, o IPv4 e o IPv6 têm muito em comum, inclusive na maioria das vezes: o roteamento funciona: as rotas para prefixos mais longos substituem as rotas para os prefixos mais curtos, para que seja possível agregar (diminuir) e perfurar para baixo (faça mais) rotas. Como no IPv4, as rotas podem ser agregadas ou resumidas em blocos maiores com prefixos mais curtos para minimizar o tamanho das tabelas de roteamento.
Uma questão diferente do mapeamento entre IPv4 e IPv6 seria como harmonizar as atribuições de IPv4 e IPv6 em máquinas de pilha dupla, para que os planos de endereçamento possam ser facilmente compreendidos. Até agora, certamente existem convenções de uso comum para fazer isso: incorpore o "número de sub-rede" do IPv4 em uma parte do prefixo do IPv6, com BCD (por exemplo, 10.0.234.0/24
torna-se 2001:db8:abcd:234::/64
) ou binário ( 10.0.234.0/24
torna-se 2001:db8:abcd:ea::/64
).
Minhas interfaces têm vários endereços IPv6. A sub-rede deve ser a mesma para todos eles?
Absolutamente não! Espera-se que os hosts IPv6 possam ter hospedagem múltipla tendo vários endereços IP simultaneamente provenientes de sub-redes diferentes, assim como o IPv4. Se eles forem configurados automaticamente com o SLAAC, as diferentes sub-redes podem ter vindo de anúncios de roteadores de diferentes roteadores.
Por que às vezes vejo% em vez de / em um endereço IPv6 e o que isso significa?
Você não veria um em vez do outro. Eles têm significados diferentes. Uma barra indica um prefixo (sub-rede), significando um bloco de endereços que todos começam com os mesmos n
bits. Um endereço sem barra é um endereço de host. Você pode pensar em um endereço como "/ 128" implícito no final, significando que todos os 128 bits estão especificados.
O sinal de porcentagem acompanha um endereço local do link. No IPv6, toda interface possui um endereço local de link, além de qualquer outro endereço IP que possa ter. Mas o fato é que os endereços locais de link estão sempre, sem exceção, no fe80::/10
bloco. Mas se tentarmos conversar com um par usando um endereço local de link e o host local tiver várias interfaces, como saber qual interface usar para conversar com esse par? Normalmente, a tabela de roteamento nos diz qual interface usar para um prefixo específico, mas aqui ela nos informa sobre o que fe80::/10
é acessível por todas as interfaces.
A resposta é que devemos informar qual interface usar usando a sintaxe address%interface
. Por exemplo fe80::1234:5678:8765:4321%eth0
,.
Estou desperdiçando muitas sub-redes? Nós não vamos simplesmente acabar de novo?
Ninguém sabe. Quem pode dizer o futuro?
Mas considere isso. No IPv6, o número de sub - redes disponíveis é o quadrado do número de endereços individuais disponíveis no IPv4. Isso é realmente bastante. Não, quero dizer muito!
Mas ainda assim: estamos entregando automaticamente um / 32 a qualquer ISP que solicitar um, estamos entregando um / 48 a cada cliente ISP. Talvez estejamos exagerando e afinal desperdiçaremos o IPv6. Mas há uma disposição para isso: Apenas um oitavo do espaço IPv6 foi disponibilizado para uso até agora: 2000::/3
. A idéia é que, se fizermos uma bagunça horrível no primeiro dia 8 e tivermos que revisar drasticamente as políticas liberais de alocação, tentaremos mais 7 vezes antes de enfrentarmos problemas.
E finalmente: o IPv6 não precisa durar para sempre. Talvez ele tenha uma vida útil mais longa que o IPv4 (uma vida impressionante já e ainda não acabou), mas, como todas as tecnologias, um dia deixará de ter importância. Só precisamos fazer isso até então.
O IPv6 é de 128 bits. Por que / 64 é a menor sub-rede recomendada para hosts?
Primeiro de tudo, um pouco de arte ASCII dos RFCs para estabelecer terminologia:
O prefixo de roteamento global geralmente identifica a rede geral à qual o endereço pertence. É tipicamente 48 bits. O ID da interface identifica uma determinada interface de rede. É tipicamente de 64 bits. Os 16 bits restantes são o seu ID de sub-rede.
OK, continue com a explicação:
De acordo com a RFC 4291 - IP versão 6, arquitetura de endereçamento :
E RFC 5375 - Considerações sobre atribuição de endereço Unicast IPv6 :
Portanto, ignorando a exceção do prefixo 000, o ID da interface é sempre exatamente de 64 bits. Essa é outra maneira de dizer que todas as redes de transmissão local são sempre de 64 bits . Se você possui um endereço IPv6, sua máscara de rede é sempre de 64 bits. Nunca mais, nunca menos. Se você recebeu um espaço de endereço maior que isso (máscara de rede menor que 64 bits), supõe-se que você esteja particionando esse espaço de endereço em redes de 64 bits e cuidando do roteamento por conta própria. Se você recebeu uma rede menor que essa (máscara de rede mais longa), alguém estragou tudo.
Então, por que exatamente 64 bits?
Como regra, os endereços IPv6 são configurados automaticamente em vez de atribuídos. O roteador anunciará qual prefixo de rede está disponível (prefixo de roteamento + ID da sub-rede: primeiros 64 bits) e o computador preencherá os últimos 64 bits usando seu próprio identificador exclusivo. Como o seu computador cria um identificador exclusivo? Existem algumas possibilidades, a mais comum é usar o endereço MAC da sua interface. Você divide o MAC ao meio (metade do fornecedor / metade serial), vira o bit universal-local do lado do fornecedor e junta-os novamente
FF:FE
ao meio. Assim00:30:48:01:23:45
se torna0230:48ff:fe01:2345
. Agora, coloque o prefixo de rede de 64 bits anunciado no lado esquerdo e você terá seu endereço IP.O ponto importante aqui é que, se você seguir esse esquema, as colisões de endereços IP não acontecerão. Como todos os dispositivos em uma determinada rede de broadcast precisam de um endereço MAC exclusivo para funcionar, vincular o ID da interface ao endereço MAC significa que, enquanto o tráfego de broadcast não colidir, os endereços IPv6 também não. O uso de 64 bits (em vez de apenas os 48 dedicados aos endereços MAC) oferece um pouco de espaço de manobra além dos endereços fornecidos por esse esquema (existem vários outros).
Existem outras situações em que eu usaria uma sub-rede menor que / 64?
Não. A menos que você esteja quebrado. Bem, você pode ter uma justificativa com base nos requisitos locais para configurar o roteamento manual com sua rede existente. Mas lembre-se de que, ao fazer isso, você provavelmente está fazendo uma bagunça:
Do RFC 5375 - Considerações sobre atribuição de endereços IPv6 Unicast :
Por que é recomendável usar / 127 para links ponto a ponto entre roteadores e por que foi recomendado no passado?
Convém encobrir a RFC 3627 - Uso do comprimento do prefixo / 127 entre os roteadores considerados prejudiciais . Dê uma olhada no RFC 6164 - Usar prefixos IPv6 de 127 bits nos links entre roteadores .
A objeção ao uso de prefixos maiores que / 64 nos roteadores tem a ver com a configuração automática do roteador, potencialmente falhando sob circunstâncias raras. A objeção ao uso de prefixos menores que / 127 (somente 2 hosts) tem a ver com uma série de possíveis problemas de negação de serviço relacionados aos pacotes enviados para os endereços não roteados. Como os problemas de negação de serviço do mundo real são piores que as falhas teóricas de configuração automática, / 127 é o novo favorito.
Devo alterar os links do roteador existentes para usar / 127?
Se você controla um roteador IPv6, recomendo ler os dois RFCs (eles são curtos!) E decidir por si mesmo.
Posso mapear diretamente de sub-redes IPv4 para sub-redes IPv6?
Por exemplo, um IPv4 / 24 corresponde diretamente a um IPv6 / 56 ou / 120?
Na verdade sim. Lembra-se do prefixo de 000 que intencionalmente ignoramos anteriormente? Bem, aqui está um uso para isso:
Nos sistemas de pilha dupla (aqueles com as pilhas IPv4 e IPv6 ativas), você pode representar o IPv4 usando a mecânica do IPv6. Eles chamam de " endereços IPv6 mapeados para IPv4 ". O padrão é todos os zeros, seguido por
FFFF
, seguido pelo endereço IPv4 de 32 bits.Assim,
192.168.100.21
torna-se::FFFF:C0A8:6415
- ou, mais simplesmente:::FFFF:192.168.100.21
. Como esse bit da direita representa um endereço IPv4, é tradicionalmente gravado em formato decimal com pontos.Como esse é um endereço IPv4 real, ele ainda usa cabeçalhos IPv4 etc., o que significa que uma pilha IPv4 deve estar presente, rotas IPv4 devem ser definidas e tudo mais. A vantagem é que você pode representar os endereços IPv4 e IPv6 usando uma única estrutura de endereços, o que pode simplificar o desenvolvimento de aplicativos. Não faz muita diferença para a rede.
fonte
O IPv6 é de 128 bits. Por que / 64 é a menor sub-rede recomendada para hosts?
Esse tamanho de prefixo foi originalmente recomendado em uma RFC mais antiga - desde então, houve uma revisão dessa política em que a questão dos ataques de descoberta de vizinhos é considerada e o uso de um / 126 é uma mitigação válida - no entanto, se você estiver configurando links PtP com o Com o único objetivo de rotear o tráfego, uma opção alternativa é simplesmente manter um / 64 e firewall nessa sub-rede. Melhor ainda, aloque um pool a partir do qual você desenhará / sub-redes / 64 e tenha esse pool inteiro como um destino na lista negra na sua borda (e em qualquer outro lugar em que a hostilidade possa vir)
Por que é recomendável usar / 127 para links ponto a ponto entre roteadores e por que foi recomendado no passado? Devo alterar os links do roteador existentes para usar / 127?
/ 127 não é recomendado entre roteadores e nunca foi - o endereço Anycast de todos os roteadores é o endereço com todos os zeros da sub-rede; isso significa que / 127 é tecnicamente válido apenas entre duas máquinas em que uma delas NÃO está atuando como roteador. / 126 está bem, é claro.
De qualquer forma, no entanto, eu não recomendaria alternar os links / 64 existentes, a menos que seu equipamento esteja vulnerável a um ataque de inundação de cache do Neighbor Discovery - e mesmo nesse caso, primeiro determine se você realmente vai usar esse / 64 para conectividade à Internet , se a resposta for não, apenas faça o firewall.
Por que as máquinas virtuais seriam provisionadas com sub-redes menores que / 64?
Isso interrompe SLAAC e RAs, a menos que você realmente saiba realmente o que está fazendo, é improvável que você tenha algum bom motivo para fazer isso - talvez o seu upstream tenha fornecido apenas um / 64, mas se for esse o caso, você precisará ir retorne a eles e peça mais, se eles quiserem cobrar por você, comece a procurar um novo provedor e talvez também envie alguns e-mails sarcásticos com links para as RFCs relevantes.
Existem outras situações em que eu usaria uma sub-rede menor que / 64?
Honestamente? provavelmente não. Se pensar em uma razão legítima em que uma sub-rede menor é preferível para outros fins que não a prevenção de ataques NDP, editarei esta seção.
Por outro lado, não são situações em que você não deseja usar sub-redes menores que / 64 - particularmente em qualquer lugar que você executar um ambiente com equipamentos de encaminhamento hardware (pense routers de marca e switches L3) - alguns serão incapazes de fazer o roteamento de prefixos hardware mais que / 64, outros precisam dividir a operação em várias comparações; portanto, você deve fazer o máximo para garantir que / 64 seja o prefixo mais longo em seu backbone (OSPF / ISIS / EIGRP / etc.).
Posso mapear diretamente de sub-redes IPv4 para sub-redes IPv6? Por exemplo, um IPv4 / 24 corresponde diretamente a um IPv6 / 56 ou / 120?
Oficialmente, :: ffff: xxxx é o formato para um endereço IPv4 mapeado para IPv6 - é claro que também existem vários mecanismos de transição, nomeadamente 6to4 e seu parente, 6º, que mapeiam um endereço IPv4 em um IPv6 global para os fins de fornecer acesso IPv6 por IPv4, criando um prefixo IPv6 derivado do endereço IPv4 que é transportado.
Minhas interfaces têm vários endereços IPv6. A sub-rede deve ser a mesma para todos eles?
Não, o uso de endereços e tamanhos de sub-rede variados na mesma interface não deve ser um problema. Se for, a implementação é incorreta. Claro, uma pergunta melhor é por que você faria isso?
Por que às vezes vejo% em vez de / em um endereço IPv6 e o que isso significa?
Este é um delimitador, geralmente aplicado a endereços locais de link (fe80 :: / 12) - como o mesmo endereço local de link pode existir legitimamente em várias interfaces, o delimitador% é usado para permitir especificar qual interface deve ser usada. O Linux geralmente torna a especificação da interface obrigatória ao executar operações que envolvem um link-local. O Windows Vista / 2008 e posteriores são um pouco mais inteligentes e não irão reclamar, a menos que um link-local não seja único.
Estou desperdiçando muitas sub-redes? Nós não vamos simplesmente acabar de novo?
Não. Este é um cavalo morto que foi açoitado demais WAAAAAAAAAY - a atual Internet IPv6 global é 2000 :: / 3 - existem vários prefixos que a IANA poderia começar a usar se, de alguma forma, todos os RIRs do planeta conseguissem esgotar seus abordar ações. Portanto, não, não ficaremos sem espaço e, mesmo que o façamos, é necessário um toque de caneta para gerar um novo prefixo, não uma mudança técnica. A única coisa que essa pergunta realmente destaca é a incapacidade da mente humana de compreender completamente o quão ridiculamente vasto é o espaço de endereço.
De que outras maneiras importantes a sub-rede IPv6 é diferente da sub-rede IPv4?
Além de não se importar com quanto espaço você está usando, lembre-se de que não há endereço de broadcast e que o endereço "sub-rede-zero" agora é o endereço anycast de todos os roteadores (que é basicamente um endereço que existe implicitamente em todos os nós configurados encaminhar pacotes IPv6) - isso tem um efeito colateral útil de permitir que você use todos os endereços zeros como sua rota padrão em uma rede (não, não causará duplicação de pacotes, é ANYcast, e não MULTIcast) - tenha em mente embora o host possa alternar entre os roteadores a cada poucos segundos, isso não é apropriado para uma configuração de firewall com estado, se o rastreamento de conexão não for sincronizado entre eles.
Além disso, a outra grande diferença é que o IPv6 se preocupa com endereços duplicados e vizinhos mortos (NUD) - assim, ao contrário do IPv4, um host se recusará a usar um endereço se puder determinar que outro nó no link já está usando para ele . Por outro lado, o NUD é útil se você estiver configurando rotas estáticas - na verdade, você pode definir várias rotas separadas para um prefixo com métricas variadas e elas realmente funcionarão, ao contrário do IPv4, onde a rota métrica mais baixa será usada, independentemente da próxima -hop está vivo ou morto (embora isso possa não ser verdade para algumas implementações de IPv4 que usam o ARP para validar rotas como Cisco e outros grandes fornecedores de roteadores)
TLDR; O IPv6 detecta endereços duplicados e vizinhos inacessíveis. O endereço all-zero é allcast de todos os roteadores e não existe transmissão, all-ones é um endereço regular.
fonte
Para aqueles que se perguntam de onde nas especificações o requisito / 64 para SLAAC vem, aqui estão algumas referências extras:
Na configuração automática de endereço sem estado IPv6 (RFC 4862) :
E da arquitetura de endereçamento IP versão 6 (RFC 4291) :
Portanto, como o ID da interface deve ter 64 bits e a soma do comprimento do prefixo e do ID da interface deve ser 128, o único comprimento possível do prefixo ao usar o SLAAC é de 64 bits.
fonte
Porque os defensores do IPv6 gostaram da ideia da configuração automática sem estado.
Se você optar por outro tamanho de sub-rede, a configuração automática sem estado será interrompida. Algumas outras coisas menores também podem quebrar, leia rfc7421 para obter mais detalhes.
Pessoalmente, acho que a autoconfiguração sem estado é uma idéia idiota de qualquer maneira. Isso leva a endereços ilegíveis e basicamente não oferece controle sobre o endereçamento, além de atribuir o bloco à sub-rede.
É claro que a coisa das convenções é que, se você as seguir e as coisas derem errado, você pode apontar para a convenção; se você se recusar a segui-las e as coisas derem errado, a culpa será sua.
O uso de sub-redes com um pequeno número de endereços disponíveis evita ataques de exaustão de descoberta de vizinhos.
É claro que esse raciocínio não se aplica apenas aos links ponto a ponto. Eu acho que era politicamente possível fazer essa recomendação para links de roteador ponto a ponto, mas não politicamente possível para outros links.
Precisamos fazer uma distinção aqui. Há duas maneiras pelas quais um provedor de hospedagem pode atribuir endereços a uma máquina (física ou virtual).
Eles podem atribuir a eles endereços "no link" onde a máquina deve responder a solicitações de descoberta de vizinhos. Alguns provedores de hospedagem optaram por dar a cada máquina um / 64 que possui vantagens na mobilidade de endereços, outros dão a cada VLAN a / 64 e depois atribuem sub-blocos às máquinas individuais daquelas que usam menos endereços e podem significar que o tráfego local permanece local em vez de passando para um roteador.
Ou eles podem tratar a máquina como um roteador e atribuir a ela um bloco roteado. Nesse caso, seria necessário endereços suficientes para tratar de todas as sub-redes internas. Se você seguir a convenção "todas as sub-redes devem ser / 64", isso significaria alocá-la pelo menos a / 64 e possivelmente mais. Isso faz sentido para máquinas que possuem "redes dentro da máquina", por exemplo, um host de contêiner.
Qualquer mapeamento desse tipo é assunto da política local.
Não
% é um identificador de interface. É usado em conjunto com endereços locais de link. É necessário, pois uma máquina pode ter várias interfaces e as redes conectadas a essas interfaces podem ter endereços locais de link sobrepostos.
Eu não me preocuparia muito com isso.
Mesmo com a estranha decisão dos projetistas do IPv6 de usar um espaço de endereço de 128 bits e depois jogar quase metade dele na configuração automática sem estado, o IPv6 ainda tem muito mais espaço que o IPv4.
E se houvesse uma crise, levaria pouco mais que um golpe de caneta para reverter essa decisão estranha.
Uma preocupação muito maior com a escalabilidade do IPv6 é o tamanho da tabela de roteamento. O NAT do IPv6 é fortemente desencorajado. A execução de uma rede grande em endereços alocados pelo provedor leva a um risco significativo de bloqueio do provedor.
Portanto, acredito que, à medida que a penetração do IPv6 nas redes corporativas aumentar, veremos uma explosão nas solicitações de espaço IPv6 independente do provedor.
fonte