CGNAT na pratica

De Wiki BPF
Ir para navegação Ir para pesquisar

Descrição:

Com o esgotamento do IPv4 mundialmente, precisamos tomar algumas providências para que a Internet não pare. As que vejo de imediatas são: IPv6 e CGNAT (Carrier Grade NAT). O IPv6 é a real solução para os problemas de esgotamento e o CGNAT seria a "gambiarra" necessária para continuar com o IPv4 até que a Internet esteja 100% em IPv6. Nesse artigo será explicado como montar uma caixa CGNAT funcional para atender as necessidades básicas. O que será colocado abaixo, funciona muito bem aqui no nosso AS e nos permite avançar com o IPv6. No nosso exemplo as caixas PPPoE (B-RAS - Broadband Remote Access Server) não fazem NAT, pois o recurso de controlar estados de conexões e controles de NAT, consomem muito processamento e podem atrapalhar a performance da caixa PPPoE.

Diagrama de exemplo:

Diagrama exemplo do CGNAT.png

No B-RAS é configurado um PBR (Policy Based Routing) onde apenas IPs do bloco 100.64.0.0/10 são roteados diretamente para a caixa CGNAT. Qualquer IPv4 público ou IPv6, são roteados diretamente para o Router/Firewall. Isso evita processamento e tráfego desnecessário na caixa de CGNAT. Através dessa manobra evitamos qualquer uso de stateful e NAT no B-RAS, aumentando a performance do mesmo. No diagrama ao lado a linha vermelha simboliza o tráfego do bloco 100.64.0.0/10 indo para o CGNAT. A linha amarela seria o tráfego já nateado e sendo roteado para o Router/Firewall. A linha verde é o tráfego mais limpo, sem "gambiarras" e o real objetivo que devemos seguir para uma Internet melhor.

O Router/Firewall é um equipamento onde podemos inserir algumas regras de Firewall stateless para filtrar alguns pacotes indesejados como alguns tipos de spoofing, alguns pacotes UDP de certas portas usadas para ataques de amplificação, etc. Nunca! Jamais faça uso de regras stateful nesse nível de Firewall, pois determinados ataques podem estourar suas tabelas de controle de estados de conexões e derrubar todo o tráfego.

O Router de Borda dispensa comentários não é mesmo? Vamos voltar para o conteúdo que realmente interessa.

O objetivo deste artigo é exemplificar algumas configurações básicas e deixar para o leitor criar suas próprias ferramentas para facilitar a criação das regras que na maioria das vezes são em grande quantidade e inviável de se fazer manualmente.

Algumas ferramentas de uso público serão comentadas e passadas as devidas referências.

Dados técnicos do equipamento usado no exemplo:

  • Intel Dual Xeon E5-2630 v2 @ 3.1GHz.
  • 16Gb de RAM.
  • 2 interfaces Intel X520-SR2 (2 portas ópticas de 10GbE).
  • 1 SSD 120Gb.

Dados técnicos do Sistema usado:

  • Debian 9 (stretch) amd64.
  • kernel 4.19 (backports do Debian).
  • Netfilter/IPTables.

Imagens do CGNAT em produção:

Zabbix cgnat.png
Bmon.png

Explicações: