Configurar um CGNAT (Carrier-Grade NAT) em uma Mikrotik é uma solução muito usada por provedores para compartilhar endereços IPv4 públicos entre vários clientes, especialmente quando há escassez de IPs públicos. O processo consiste em:
- Definir a interface de entrada dos clientes (geralmente a rede privada/CGNAT).
- Definir a interface de saída (com IP público).
- Criar regras de NAT (masquerade ou src-nat).
- Ajustar faixas de IP e rotas conforme o seu cenário.
⚙️ Exemplo de configuração CGNAT
Cenário:
- Rede dos clientes:
100.64.0.0/10
(faixa CGNAT padrão) - Interface dos clientes:
ether2
- Interface com IP público:
ether1
(com IP:200.200.200.1
)
🔧 Passo a passo no terminal do Mikrotik
/ip firewall nat
add chain=srcnat src-address=100.64.0.0/10 out-interface=ether1 action=masquerade comment="CGNAT"
Isso fará com que todo o tráfego originado da rede
100.64.0.0/10
e saindo pelaether1
receba o IP público deether1
como origem, via masquerade (SNAT dinâmico).
✅ Outras boas práticas:
1. Limite de conexões por cliente (evita abusos):
/ip firewall filter
add chain=forward src-address=100.64.0.0/10 connection-limit=100,32 action=drop comment="Limita conexões por cliente"
2. Marcar conexões e aplicar regras de QoS (se necessário):
Você pode marcar conexões por cliente ou IP para fins de controle de banda ou estatísticas.
3. Habilitar FastTrack (se compatível com sua estrutura):
/ip firewall filter
add chain=forward action=fasttrack-connection connection-state=established,related
🧠 Dicas Importantes:
- Utilize a faixa
100.64.0.0/10
para CGNAT, conforme definido pela RFC 6598. - Sempre tenha logs e monitoração, pois CGNAT dificulta rastrear acessos de usuários.
- Se possível, comece a planejar suporte a IPv6.
🎯 O que é netmap
?
netmap
cria um mapeamento direto entre dois blocos de IPs (privado ↔ público), geralmente com NAT estático (tipo 1:1). Isso é muito útil para CGNAT mais previsível e rastreável.
💡 Exemplo de cenário:
- Bloco privado para clientes:
100.64.0.0/24
- Bloco público disponível:
200.200.200.0/24
- Interface dos clientes:
ether2
- Interface de saída:
ether1
Cada cliente com IP 100.64.0.X
vai sair com o IP 200.200.200.X
.
⚙️ Configuração do netmap
:
/ip firewall nat
add chain=srcnat src-address=100.64.0.0/24 action=netmap to-addresses=200.200.200.0/24 out-interface=ether1 comment="CGNAT NETMAP SRC"
/ip firewall nat
add chain=dstnat dst-address=200.200.200.0/24 action=netmap to-addresses=100.64.0.0/24 in-interface=ether1 comment="CGNAT NETMAP DST"
📌 Observações:
- 1:1 obrigatório: O número de IPs no bloco privado e no bloco público tem que ser igual.
- Faixas devem estar alinhadas em tamanho: Ex:
/28
para/28
,/24
para/24
, etc. - Boa rastreabilidade: Você consegue saber qual IP privado está usando qual IP público com facilidade.
- Não usa porta NAT: Esse método não faz PAT (Port Address Translation), então cada IP público é “exclusivo” para um cliente privado.
🛡️ Dica de segurança:
Você pode usar filtros para garantir que apenas clientes da rede CGNAT acessem esse mapeamento:
/ip firewall filter
add chain=forward src-address=100.64.0.0/24 out-interface=ether1 action=accept
add chain=forward dst-address=200.200.200.0/24 in-interface=ether1 action=accept