Por Que Configurar Syslog para CGNAT no MikroTik?
Se o seu provedor utiliza CGNAT (Carrier-Grade NAT) em equipamentos MikroTik — seja uma CCR1036, CCR2004 ou mesmo uma RB com capacidade — você precisa registrar os logs de tradução NAT. Não é opcional: o Marco Civil da Internet (Lei 12.965/2014) exige a guarda desses registros por no mínimo 1 ano.
O problema é que, por padrão, o MikroTik não envia logs NAT para lugar nenhum. Os logs ficam no buffer interno (que tem apenas 1000 linhas por padrão) e são sobrescritos rapidamente. Em um provedor com 500+ assinantes atrás de CGNAT, esse buffer estoura em minutos.
Neste tutorial, vamos configurar o MikroTik passo a passo para:
- Ativar o log de conexões NAT/CGNAT
- Filtrar apenas os logs relevantes (sem poluir com logs de DHCP, firewall etc.)
- Enviar via syslog remoto para um servidor de coleta
- Validar que tudo está funcionando
- Resolver os problemas mais comuns
Pré-requisitos
Antes de começar, certifique-se de ter:
- RouterOS 6.47+ ou RouterOS 7.x (comandos podem variar ligeiramente)
- Acesso SSH ou Winbox ao equipamento com permissão
full - Um servidor de coleta de logs com IP acessível pelo MikroTik (ex: NATVault, syslog-ng, rsyslog)
- Porta UDP 514 (ou a porta que você escolher) liberada no caminho entre MikroTik e o servidor
Passo 1: Entender a Estrutura de Logging do MikroTik
O sistema de logging do RouterOS funciona com dois conceitos principais:
- Actions — para onde os logs vão (disco, memória, echo, remote/syslog)
- Rules — quais tópicos (topics) são capturados e para qual action são direcionados
Os logs de NAT/CGNAT aparecem sob o tópico firewall quando você usa action=log nas regras de NAT. Vamos criar uma action dedicada para syslog remoto e uma rule que capture apenas o que precisamos.
Passo 2: Criar a Action de Syslog Remoto
Acesse o MikroTik via SSH ou terminal Winbox e execute:
/system logging action
add name=syslog-natvault target=remote remote=10.0.0.50 remote-port=514 src-address=172.20.1.105 bsd-syslog=yes syslog-facility=local6 syslog-severity=info
Explicação dos parâmetros:
- name=syslog-natvault — nome descritivo da action
- target=remote — envia via rede (syslog)
- remote=10.0.0.50 — IP do seu servidor de logs (substitua pelo IP real)
- remote-port=514 — porta UDP padrão do syslog
- src-address=172.20.1.105 — IP de origem do MikroTik (importante para firewalls e identificação)
- bsd-syslog=yes — formato BSD syslog, compatível com a maioria dos coletores
- syslog-facility=local6 — facility dedicada para facilitar filtragem no servidor
- syslog-severity=info — nível de severidade
Dica importante: Usar uma facility específica como local6 permite que o servidor de logs separe os logs NAT de outros logs do MikroTik. Não use daemon ou system — esses são genéricos demais.
Passo 3: Criar a Rule de Logging
Agora crie uma regra que direcione os logs do tópico firewall para a action que acabamos de criar:
/system logging
add topics=firewall action=syslog-natvault
Se você quiser capturar apenas logs de NAT (e não todas as regras de firewall), vamos usar um prefixo específico nas regras NAT no próximo passo.
Filtragem avançada: capturar só CGNAT
Uma abordagem mais refinada é usar o tópico com prefixo. Primeiro, certifique-se de que suas regras de NAT usam um prefixo identificável (veremos no passo 4). Depois, no servidor de logs, filtre pelo prefixo. O MikroTik não permite filtrar por prefixo na rule de logging, mas o servidor coletor pode fazer isso facilmente.
Passo 4: Configurar Log nas Regras de NAT/CGNAT
Este é o passo mais crítico. Você precisa adicionar log=yes e um log-prefix nas suas regras de masquerade ou srcnat que fazem o CGNAT.
Se você usa masquerade:
/ip firewall nat
set [find where chain=srcnat and action=masquerade and comment~"CGNAT"] log=yes log-prefix="CGNAT"
Se você usa src-nat com to-addresses:
/ip firewall nat
set [find where chain=srcnat and action=src-nat and to-addresses~"200.x"] log=yes log-prefix="CGNAT"
Se precisa criar a regra do zero:
/ip firewall nat
add chain=srcnat src-address=100.64.0.0/10 out-interface=ether1-wan action=src-nat to-addresses=200.200.200.1-200.200.200.8 log=yes log-prefix="CGNAT"
Atenção: O log-prefix é fundamental. Ele aparece no início de cada linha de log e permite filtrar no servidor apenas os eventos CGNAT. Sem ele, você terá que processar todos os logs de firewall — muito mais volume e mais difícil de correlacionar.
O que o log registra?
Cada conexão NAT gera uma entrada similar a:
CGNAT: forward: in:ether3-clients out:ether1-wan, src-mac 00:11:22:33:44:55, proto TCP (SYN), 100.64.1.15:54321->203.0.113.50:443, NAT 100.64.1.15:54321->200.200.200.3:12345
Essa linha contém tudo que você precisa para compliance: IP privado de origem, porta de origem, IP público traduzido, porta traduzida, protocolo, timestamp (adicionado pelo syslog).
Resolva isso automaticamente com NATVault
Teste grátis por 14 dias. Sem cartão de crédito.
Começar teste grátisPasso 5: Ajustar o Connection Tracking
Para que o MikroTik registre as traduções NAT corretamente, o connection tracking precisa estar ativo e configurado adequadamente:
/ip firewall connection tracking
set enabled=yes generic-timeout=10m tcp-established-timeout=1d tcp-close-timeout=10s udp-timeout=30s
Atenção ao dimensionamento: Cada conexão ativa consome memória na tabela conntrack. Para CGNAT com muitos assinantes, aumente o limite máximo:
/ip firewall connection tracking
set max-entries=524288
Em uma CCR1036 com 8GB de RAM, 524288 entradas consomem aproximadamente 400MB. Monitore com:
/ip firewall connection tracking print
Passo 6: Configurar NTP (Timestamp Correto)
Logs CGNAT sem timestamp correto são inúteis juridicamente. Configure o NTP:
RouterOS 6:
/system ntp client
set enabled=yes primary-ntp=200.160.7.186 secondary-ntp=201.49.148.135
RouterOS 7:
/system ntp client
set enabled=yes
/system ntp client servers
add address=a.ntp.br
add address=b.ntp.br
Verifique a sincronização:
/system clock print
/system ntp client print
O offset deve estar abaixo de 100ms. Se estiver em segundos, há problema de conectividade com o servidor NTP.
Passo 7: Testar o Envio de Logs
Teste rápido: gerar um log manual
/log warning "TESTE-SYSLOG-NATVAULT"
Verifique no servidor de destino se a mensagem chegou.
Teste real: verificar logs NAT
Gere tráfego através do CGNAT (acesse qualquer site de um cliente atrás do NAT) e verifique:
/log print where message~"CGNAT"
Se aparecerem linhas com o prefixo CGNAT, o logging está funcionando localmente.
Verificar envio com packet sniffer
Para confirmar que os pacotes syslog estão saindo do MikroTik:
/tool sniffer
set filter-port=514 filter-ip-protocol=udp
start
Aguarde alguns segundos e depois:
/tool sniffer packet print
Você deve ver pacotes UDP com destino ao IP do seu servidor de logs na porta 514.
/tool sniffer stop
Passo 8: Erros Comuns e Troubleshooting
Problema 1: Logs não chegam no servidor
Causa mais comum: firewall bloqueando UDP 514.
Verifique se há regras de drop no MikroTik:
/ip firewall filter print where chain=output and action=drop
Se necessário, adicione uma regra de permissão antes do drop:
/ip firewall filter
add chain=output dst-address=10.0.0.50 dst-port=514 protocol=udp action=accept comment="Permitir syslog NATVault" place-before=[find where chain=output and action=drop]
Problema 2: IP de origem errado
Se o src-address na action está incorreto, o servidor pode rejeitar ou não identificar o remetente. Verifique:
/system logging action print where name=syslog-natvault
O src-address deve ser um IP válido e roteável do MikroTik.
Problema 3: Volume excessivo de logs
Se cada conexão gera um log, o volume pode ser enorme. Em um provedor com 1000 clientes, espere 50-200 milhões de linhas por dia. Isso é normal para CGNAT.
Soluções:
- Use um coletor dimensionado para esse volume (NATVault suporta nativamente)
- Considere logar apenas conexões TCP SYN (nova conexão), não cada pacote
- Se usar Netflow/IPFIX no lugar de syslog, o volume é menor e mais estruturado
Problema 4: Buffer de logging cheio
O buffer padrão do MikroTik é pequeno. Se o envio syslog falhar temporariamente, logs são perdidos. Aumente o buffer:
/system logging action
set [find where name=memory] memory-lines=10000
Mas lembre-se: o buffer local é apenas backup. O envio remoto via syslog é o que garante a retenção.
Problema 5: Formato de log incompatível
Alguns coletores esperam RFC 5424, outros BSD (RFC 3164). O MikroTik com bsd-syslog=yes envia no formato BSD. Se o seu coletor espera RFC 5424, desative essa opção:
/system logging action
set syslog-natvault bsd-syslog=no
Alternativa: NetFlow/IPFIX em vez de Syslog
Para provedores maiores (5000+ assinantes), considere usar NetFlow ou IPFIX em vez de syslog para logs CGNAT. Vantagens:
- Formato estruturado (campos definidos, não texto livre)
- Menor volume de dados (registros agregados por fluxo)
- Suportado nativamente na CCR com RouterOS 7
Configuração básica de Traffic Flow (NetFlow) no RouterOS:
/ip traffic-flow
set enabled=yes interfaces=all active-flow-timeout=5m inactive-flow-timeout=15s
/ip traffic-flow target
add dst-address=10.0.0.50 port=2055 version=9
O NATVault aceita tanto syslog quanto NetFlow como fontes de dados.
Resumo dos Comandos
Aqui está o script completo para copiar e colar no terminal do MikroTik:
# 1. Criar action de syslog remoto
/system logging action
add name=syslog-natvault target=remote remote=10.0.0.50 remote-port=514 \
src-address=172.20.1.105 bsd-syslog=yes syslog-facility=local6 syslog-severity=info
# 2. Criar rule para capturar logs de firewall
/system logging
add topics=firewall action=syslog-natvault
# 3. Ativar log nas regras de NAT/CGNAT
/ip firewall nat
set [find where chain=srcnat and action=src-nat] log=yes log-prefix="CGNAT"
# 4. Configurar NTP
/system ntp client set enabled=yes
/system ntp client servers add address=a.ntp.br
/system ntp client servers add address=b.ntp.br
# 5. Liberar saida UDP 514 (se necessario)
/ip firewall filter
add chain=output dst-address=10.0.0.50 dst-port=514 protocol=udp \
action=accept comment="Permitir syslog NATVault"
Resolva isso automaticamente com NATVault
Teste grátis por 14 dias. Sem cartão de crédito.
Começar teste grátisPerguntas Frequentes
O MikroTik suporta syslog sobre TCP?
Não nativamente. O RouterOS envia syslog apenas via UDP. Se você precisa de entrega garantida (TCP), considere usar um relay local como syslog-ng entre o MikroTik e o servidor final, ou utilize NetFlow/IPFIX que é mais confiável para alto volume.
Quantos logs por dia um provedor com CGNAT gera?
Depende do número de assinantes e do perfil de uso. Como referência: um provedor com 1.000 clientes ativos gera entre 50 e 200 milhões de registros NAT por dia. Com 5.000 clientes, pode ultrapassar 1 bilhão. Por isso é fundamental um sistema de coleta dimensionado.
Posso usar o log local do MikroTik em vez de syslog remoto?
Não para compliance. O buffer local do MikroTik armazena apenas 1.000 a 10.000 linhas (configurável) e é volátil — um reboot apaga tudo. Para atender o Marco Civil, você precisa de armazenamento externo com retenção de 1 ano. O syslog remoto é o caminho correto.
O log de NAT impacta a performance do MikroTik?
Sim, há impacto mensurável. Em testes com CCR1036, ativar log em regras NAT de alto volume pode reduzir o throughput em 5-15%, dependendo da carga. Em equipamentos menores (hEX, RB), o impacto pode ser maior. Monitore o CPU após ativar e considere NetFlow como alternativa mais leve.
Como verificar se os logs estão chegando no NATVault?
No painel do NATVault, acesse a seção de fontes de dados. O sistema mostra o status de cada fonte (último log recebido, volume por hora, eventuais gaps). Você também pode usar a funcionalidade de tail em tempo real para ver os logs chegando ao vivo.