IPV6 – Os operadores estão a forçar a mão da malta…

Olá a todos,

Se são como homelabbers como eu – entusiastas – provavelmente já estão a par da recente decisão da Digi de adotar IPv6 em força, deixando o IPv4 para trás, salvo algumas exceções.
De repente, olhamos para o nosso homelab e percebemos que o IPv6 não é mais uma opção ou curiosidade técnica; é uma necessidade.
Então, como é que devemos abraçar o IPv6, e como é que ele pode funcionar para nós, mesmo que estejamos a pensar em cenários com NAT, PAT e firewalls de perímetro?

A Digi mexeu no meu queijo.

Sendo clientes da maior parte dos operadores nacionais, já devem ter notado que agora têm um belo /64 de IPv6 ao vosso dispor. Parece muito grande, não é? E é.
Com este novo paradigma, onde nos é dada uma range grande em IPv6, e nos obrigam a saírem por CGNAT ao mesmo tempo para aceder a IPv4, a Digi está a forçar as portas para a adoção generalizada do IPv6.
Mas não é apenas a Digi. As outras operadoras estão a seguir o mesmo caminho: O equipamento MEO a que tenho acesso tem já igualmente um /64 IPv6 disponível e a semana passada falamos de clientes da VDF com IPv6 e um CGNAT de saída para IPv4.

A entrada deste novo operador no mercado nacional apenas veio normalizar este tipo de configuração, e provocou nos clientes domésticos uma avalanche, fazendo os operadores ditos tradicionais começarem a ver o CGNAT como uma possibilidade de poupar algum dinheiro, de forma a diminuir o impacto na guerra de preços que nacionalmente agora se verifica.
Porquê? Porque o IPv4 está esgotado. Acabou-se o stock. Está caro e muito limitado.

Ao oferecer IPv6, os operadores força-nos a abandonar a nossa “zona de conforto” do IPv4, onde NAT e PAT eram o pão nosso de cada dia. Mas aqui está o truque: com o IPv6, nem sempre precisas de NAT… e isso muda tudo. Ou será que muda?

NAT e PAT: Ainda fazem sentido no mundo IPv6?

No IPv4, a NAT (Network Address Translation) é essencial. Temos um único endereço público, e a NAT permite que múltiplos dispositivos na nossa rede privada acedam à Internet. A PAT (Port Address Translation), que atribui portas diferentes a cada conexão, dá-nos ainda mais flexibilidade. Isto tornou-se uma segunda natureza para nós, especialmente quando configuramos firewalls e port forwards no nosso router de casa, que por sua vez nos dá conectividade de fora em direção ao nosso homelab.

Agora entra o IPv6 em cena com endereços suficientes para dar um IP único e público a cada dispositivo da nossa rede (sim, até ao frigorífico, fogão ou torradeira!).
Num cenário ideal de IPv6 onde segurança não é um problema, cada dispositivo teria o seu endereço global, eliminando a necessidade de NAT. Parece perfeito, certo? Routers mais leves, menos consumo de memória para todos aqueles mapeamentos de traduções.

Os que tem olhos critico entre vós estarão agora a a dizer: Mas espera lá! Há boas razões para continuarmos a usar algo semelhante a NAT ou, pelo menos, a configurar IPv6 de forma a manter o controlo total:

  • Segurança e Privacidade: Apesar de o IPv6 ser mais seguro em teoria, muitos de nós preferimos que os nossos dispositivos fiquem “escondidos” atrás de uma firewall ou um gateway central, em vez de estarem diretamente expostos à Internet.
  • Gestão de Serviços Publicados: Se temos serviços a correr (como o um servidor web, um Nextcloud ou mesmo um servidor Minecraft), a NAT simplifica o acesso externo e interno. Pode ser útil mapear portas ou até sub-redes específicas para garantir que só o que queremos fica exposto.

E sim, podemos configurar as nossas firewalls de perímetro para fazer algo semelhante com IPv6. Continua a ser possível publicar serviços internos sem abrir a casa toda ao mundo. Não é o mesmo que NAT no IPv4, mas com o IPv6 podemos criar regras específicas que imitam o comportamento.

IPv6 não morde (Muito!)

A resistência ao IPv6 muitas vezes vem do desconhecimento. No meu caso foi e admitido sem vergonha: o IPv6 pareceu-me assustador ao início. Em vez de um simpático “192.168.1.1”, temos algo como “2001:0db8:85a3:0000:0000:8a2e:0370:7334”. Mas ao pensar da forma antiga, fazia-me estar em erro. Na prática irão utilizar ferramentas e nomes de domínio, e raramente teremos de lidar diretamente com estes endereços gigantes.

Quais as principais razões para olharem para a estrada a frente com entusiasmo?

  • Segmentação por Sub-redes: Com um /64 ao nosso dispor, podemos criar sub-redes internas à vontade, cada uma com uma função específica no teu homelab.
  • Multicast Melhorado: O IPv6 tem funcionalidades nativas como o multicast, que facilita a descoberta de dispositivos e serviços na rede.
  • Configuração Mais Simples (Sim, Simples!): Protocolos como o SLAAC (Stateless Address Autoconfiguration) e o DHCPv6 ajudam-te a configurar os dispositivos sem dor de cabeça.
  • IP’s públicos galore: Acabou-se a novela manhosa de andar com PAT e NAT para todo o lado, partilhando um ip publico por 100 containers – de forma obrigada, mas com alguns caveats.

Além disso, há muitas ferramentas para facilitar a transição. Plataformas como Opnsense, OpenWRT e Unifi já têm suporte robusto para IPv6, e os tutoriais disponíveis online são cada vez mais completos.

Vamos iniciar a nossa exploração – Configuração inicial de IPv6 no Homelab em endereçamento publico.

Se já vos convenci a esperiencia, está na altura de meter as mãos na massa. Aqui vai um exemplo simples para configurar IPv6 no nosso homelab enquanto mantemos o controlo através de uma firewall de perímetro.

Passo 1: Verifica o Teu Bloco IPv6

O operador normalmente fornece-te um /64 (65.536 sub-redes!). Confirma o prefixo fornecido no teu router/modem. Deve ser algo como 2a00:abcd:1234::/64.

Passo 2: Configura o Router/Firewall

Usa algo como o opnsense ou o OpenWRT para dividir o teu bloco IPv6 em sub-redes. Por exemplo:

  • 2a00:abcd:1234:1::/64 para dispositivos IoT.
  • 2a00:abcd:1234:2::/64 para servidores.
  • 2a00:abcd:1234:3::/64 para o tráfego convidado.

Passo 3: Cria Regras de Firewall

Embora o IPv6 possa dar endereços públicos a cada dispositivo, podes configurar a firewall para bloquear todo o tráfego por padrão e apenas permitir o que precisa:

  • Bloqueia conexões de entrada, exceto para serviços publicados (servidor web, VPN, etc.).
  • Permite apenas conexões de saída iniciadas de dentro.

Passo 4: Publica Serviços (Se Quiseres)

Se tens um servidor em casa e queres torná-lo acessível de fora, configura um registo DNS com o endereço IPv6 (AAAA record) correspondente. Depois, adiciona regras específicas na firewall para permitir o acesso.

Por exemplo:

  • Publicar um servidor web:
    • Endereço interno: 2a00:abcd:1234:2::10
    • Porta: 443 (HTTPS)
    • Regra na firewall: Permitir tráfego para este endereço e porta.
    • Recomenda-se o método de least possible permissions, até porque estamos a dar um ipv6 routeavel na internet a um equipamento gerido. Falhas de segurança e más configurações acontecem!!

E se quisermos o equivalente a um endereçamento privado em IPv6: Configuração  do IPv6 no Homelab em Unique Local Address.

No IPv6, o conceito equivalente aos endereços privados do IPv4 (como os “192.168.x.x” ou “10.x.x.x”) é representado pelos endereços “ULA” (Unique Local Address). Esses endereços têm funcionalidades semelhantes aos endereços privados do IPv4, mas com diferenças importantes.

O Que São ULAs?

  • ULAs são definidos no intervalo fc00::/7.
  • São destinados ao uso em redes locais privadas e não conseguem ser routeados publicamente na Internet.
  • Servem para conectar dispositivos dentro de uma rede privada, mas podem ser usados para comunicação entre redes privadas conectadas (por exemplo, através de VPNs), desde que planeados de forma adequada.

Diferenças entre ULA e endereços Privados no IPv4

  1. Globally Unique Identifier (GUID):
    • ULAs incluem um identificador aleatório de 40 bits no seu prefixo, o que torna improvável que duas redes privadas usem o mesmo bloco por acidente.
    • Exemplo de um endereço ULA: fd12:3456:789a::1.
  2. Prefixos Recomendados:
    • fc00::/7: Este intervalo é reservado para ULAs.
    • Na prática, fd00::/8 é o mais usado, já que a porção fc00::/8 requer coordenação global (algo que nunca foi implementado).
  3. Scope Local, Mas Mais Amplo:
    • ULAs podem coexistir com endereços globais IPv6. Num dispositivo, podes ter tanto um ULA para comunicação interna como um endereço global para acesso à Internet.
  4. Sem Necessidade de NAT:
    • No IPv6, mesmo com ULAs, podes comunicar entre redes privadas diferentes sem necessidade de tradução de endereços, desde que as rotas e firewalls estejam configuradas corretamente.

Como usar ULAs no Homelab

  • Segmentação Interna: Ideal para sub-redes onde não queres que os dispositivos sejam acessíveis externamente.
  • Redes Isoladas: Ótimas para laboratórios de teste ou infraestruturas que não requerem conectividade com a Internet.
  • Configuração Simples: Muitos sistemas permitem configurar automaticamente blocos ULA baseados em regras específicas ou prefixos gerados aleatoriamente.

Então como fazer se quiser usar ULA’s no meu homelab?

Passo 1: Verifica o Teu Bloco IPv6

Como falamos antes, o teu operador normalmente fornece-te um /64 (65.536 sub-redes!). Confirmem o prefixo fornecido no teu router/modem. Deve ser algo como 2a00:abcd:1234::/64.

Passo 2: Configura o Router/Firewall

No vosso equipamento de firewalling de perímetro – por exemplo o teu opnsense ou o OpenWRT – atribui o ipv6 da WAN por DHCPv6. Isto fará que o operador te atribua um IPv6 a esse dispositivo.

Passo 3: Cria Regras de Firewall e NAT64/46

Embora o IPv6 possa dar endereços públicos a cada dispositivo, podes configurar a firewall para fazer forward de tudo o que cai nesse ipv6/porta para um endereço na tua gama privada, que podes escolher com facilidade.

  • O teu acesso para dentro será sempre mapeado para IPv4 – em dual stack se o preferires, ou se quiseres atribuir ip’s ULA internos podes ter ambas os tipos de redes separados.
  • Não te esqueças na tua firewall de fazer NAT para fora para que a tua rede ULA saia para a internet com o IPv6 publico do teu equipamento e dar as permissões de rede apropriadas.

Notas: Este processo ou método irá ter overhead em relação ao primeiro, até porque estamos precisamente a repetir um dos problemas do IPv4. Estaremos um *poucochinho* mais seguros. Mas pouco mais.

6. Benefícios para a comunidade de Homelabbers: Mais do que apenas endereços.

Aprender IPv6 não é só uma questão de acompanhar a tecnologia; traz benefícios reais para o nosso homelab:

  • Redes Mais Avançadas: Com tanto espaço de endereçamento, podemos criar sub-redes super detalhadas sem a preocupação de ficar sem IPs.
  • Preparação Para o Futuro: O IPv4 está a morrer. Com o tempo, todos os serviços vão exigir IPv6, e quanto mais cedo estivermos prontos, melhor. Quando o resto do mundo lá chegar, vocês já lá estão.
  • Menos Trabalho Manual: Muitos aspetos do IPv6 (como a configuração automática) podem poupar tempo em comparação com IPv4.

7. Dicas e truques para dominar o IPv6.

  • Usem Ferramentas Visuais: Programas como o Wireshark ajudam a perceber como o tráfego IPv6 flui na vossa rede.
  • Testa Em Ambiente Controlado: Cria uma rede separada para experimentares sem interferir com a tua configuração atual. Hurray for KVM virtualization.
  • Aproveita a Comunidade: Fóruns como o Reddit (r/homelab) e grupos no Discord são ricos em partilhas de conhecimento sobre IPv6.

8. Considerações finais para homelabbers.

  • Atenção ás vossas interfaces de rede que estão viradas para os routers do operador: No momento em que activem a stack ipv6 no vosso equipamento – pelo menos em linux – a interface irá apanhar quase imediatamente um ipv6, mesmo que tenha sido configurada de forma estática em ipv4 mesmo que sejam pseudo network devices como as bridges.
    Não tenho a certeza, mas creio que isto ocorre por causa do SLAAC. Em todo o caso, isto irá dar a equipamentos que estão virados para a internet um IP publico que provavelmente não devem querer que aconteça.
    No meu caso, isto foi particularmente visível no caso dos virtualizadores onde as interfaces dos interconnects que uso para ligar a frente da minha rede a lan do operador, apanharam ip’s públicos, o que de todo não quero. As únicas máquinas que quero que tenham ipv6 publico são as firewalls.
    A resolução foi simples nos virtualizadores: ip6tables -A INPUT -i $bridge_interface -s ::/0 -j DROP.

E chegamos ao fim de mais um post semanal. Não temos mais muito tempo para esconder a cabeça. O IPv6 chegou, e como homelabbers, não só podemos lidar com ele como também tirar proveito das suas capacidades. Será uma mudança, mas são as mudanças que nos permitem crescer e explorar novas formas de construir e gerir as nossas redes e sim,  iremos perder algum tempo com isto, mas iremos aprender uma coisa nova que eventualmente será tão importante para a nossa carreira como informáticos e entusiastas de IT como foi aprender IPv4.
Nunca é demais sublinhar do perigo que é ter IPv6 em tudo o que temos no nosso homelab – e em casa -, até porque como sabemos infelizmente o mundo do IOT não está tão ciente dos riscos de segurança como deveria. Não falando sequer em equipamento velho que ainda esteja a dar serviço, mas já sem suporte do fabricante a temas de segurança.
Lembrem-se que usando a primeira abordagem neste post, TUDO terá um IP publico na internet. E TUDO se não configurarem acessos como deve de ser, estará disponível para visitantes menos apetecíveis.

Sei que este post terá arranhado em muito a maneira de fazer isto. Sou um gajo de sistemas, não sou um gajo de redes. Portanto, já sabem, sejam meiguinhos com os comentários, e avisem-me no sitio do costume.
Um abraço e até ao próximo post semanal.

Nuno