8

# Como construí minha própria infraestrutura para acessar MikroTik de clientes remotamente

Trabalhar com infraestrutura tem um problema que só aparece depois que você começa a ter vários clientes: administrar cada equipamento individualmente começa a consumir mais tempo do que deveria.

Um cliente liga:

“A internet caiu.”

Você precisa descobrir o IP público, verificar se existe NAT, descobrir se o roteador está atrás de outro roteador, tentar acessar o MikroTik, pedir acesso ao cliente, abrir uma porta, configurar redirecionamento...

E quando você percebe, perdeu meia hora apenas para conseguir chegar no equipamento.

Foi aí que comecei a pensar:

E se eu tivesse uma infraestrutura minha, centralizada, que funcionasse como uma porta de entrada para todos os MikroTik que instalo?

Foi assim que comecei a montar minha própria estrutura de acesso remoto.


O problema

Em instalações pequenas, é comum encontrar algo parecido com:

INTERNET
   │
   ▼
[ Roteador/ONT da operadora ]
   │
   ▼
[ MikroTik ]
   │
   ├── PCs
   ├── Câmeras
   ├── Wi-Fi
   └── Outros dispositivos

O problema aparece quando o MikroTik não recebe um IP público.

Você pode estar em:

Internet
   │
CGNAT
   │
Operadora
   │
ONT
   │
MikroTik

Nesse cenário, simplesmente abrir uma porta no MikroTik não resolve.

Eu precisava de outra abordagem.


A ideia

Em vez de tentar entrar diretamente no MikroTik do cliente, pensei em fazer o MikroTik iniciar uma conexão para uma infraestrutura que eu controlo.

A arquitetura passou a ser:

                  INTERNET
                     │
        ┌────────────┴────────────┐
        │                         │
        ▼                         ▼
   CLIENTE A                 CLIENTE B
        │                         │
    [MikroTik]                [MikroTik]
        │                         │
        └──────────┬──────────────┘
                   │
                   ▼
             [VPN / SERVER]
                   │
                   ▼
             [Raspberry Pi]
                   │
                   ▼
              ADMINISTRAÇÃO

O servidor passa a ser o ponto central.

Eu não preciso mais depender de IP público em cada cliente.


Por que Raspberry Pi?

A primeira coisa que muita gente pensa quando ouve “servidor” é colocar uma máquina grande funcionando 24 horas.

Mas para essa função eu não precisava de um servidor poderoso.

Eu precisava de:

  • baixo consumo;
  • estabilidade;
  • Linux;
  • conexão permanente;
  • possibilidade de executar WireGuard;
  • SSH;
  • scripts;
  • monitoramento;
  • backup;
  • automação.

Um Raspberry Pi já consegue fazer isso tranquilamente.

E o mais interessante:

o custo de manter essa infraestrutura pode ser muito baixo.


WireGuard entrou na história

A solução que escolhi para a VPN foi o WireGuard.

A ideia ficou aproximadamente assim:

                    INTERNET
                       │
                       │
                ┌──────▼──────┐
                │   SERVIDOR  │
                │ WireGuard   │
                └──────┬──────┘
                       │
          ┌────────────┼────────────┐
          │            │            │
          ▼            ▼            ▼
       Cliente 01   Cliente 02   Cliente 03
       MikroTik     MikroTik     MikroTik

Cada cliente possui seu próprio peer.

Por exemplo:

Servidor
10.100.0.1

Cliente 01
10.100.0.2

Cliente 02
10.100.0.3

Cliente 03
10.100.0.4

Agora posso enxergar os equipamentos através da rede privada da VPN.


O que isso muda na prática?

Antes:

“Qual é o IP do cliente?”
“Está atrás de CGNAT?”
“Qual porta foi liberada?”
“Qual é o usuário?”
“Tem outro roteador antes do MikroTik?”

Depois:

VPN
 │
 ├── 10.100.0.2 → Cliente 01
 ├── 10.100.0.3 → Cliente 02
 ├── 10.100.0.4 → Cliente 03
 └── 10.100.0.5 → Cliente 04

O equipamento deixa de ser um endereço perdido na Internet.

Ele passa a ser simplesmente:

Cliente 04.


Mas existe um problema maior

Se eu fosse fazer isso de verdade, não queria simplesmente colocar todos os clientes dentro da mesma rede.

Isso seria uma péssima ideia.

Imagine:

Cliente A
   │
   ├── consegue acessar Cliente B
   ├── consegue acessar Cliente C
   └── consegue acessar Cliente D

Isso criaria uma superfície de ataque desnecessária.

A ideia correta é criar isolamento.

Por exemplo:

              SERVIDOR
                 │
        ┌────────┼────────┐
        │        │        │
        ▼        ▼        ▼
     CLIENTE A CLIENTE B CLIENTE C
     10.100.1   10.100.2   10.100.3

Cada cliente possui seu próprio espaço.


A partir daí veio outra ideia

Se eu já tenho um canal seguro até o MikroTik, por que continuar fazendo tudo manualmente?

Foi quando comecei a pensar em automação.

Eu poderia ter uma estrutura onde:

                 PAINEL
                   │
          ┌────────┴────────┐
          │                 │
      Cliente 01         Cliente 02
          │                 │
       MikroTik          MikroTik
          │                 │
          └────── VPN ──────┘

E através dessa estrutura poderia executar tarefas como:

✓ verificar conectividade
✓ verificar CPU
✓ verificar memória
✓ verificar versão RouterOS
✓ verificar interfaces
✓ verificar DHCP
✓ verificar usuários
✓ fazer backup
✓ coletar logs
✓ verificar disponibilidade
✓ executar comandos

O que mais me chamou atenção

A parte interessante não foi o WireGuard.

Foi perceber que eu estava transformando uma coleção de equipamentos independentes em uma infraestrutura administrável.

Antes:

Cliente 01
Cliente 02
Cliente 03
Cliente 04
Cliente 05

Depois:

              MINHA INFRAESTRUTURA
                       │
          ┌────────────┼────────────┐
          │            │            │
       Cliente       Cliente      Cliente
          │            │            │
       MikroTik     MikroTik     MikroTik
          │            │            │
          └────────────┼────────────┘
                       │
                    VPN
                       │
                    SERVER

Isso muda completamente a maneira de pensar a manutenção.


E o melhor: isso não serve somente para MikroTik

A mesma arquitetura pode ser usada para administrar:

  • Raspberry Pi
  • servidores Linux
  • NVRs
  • sistemas de monitoramento
  • equipamentos IoT
  • aplicações internas
  • câmeras
  • gateways
  • outros dispositivos de rede

O MikroTik é apenas uma das pontas.


Minha próxima evolução

O próximo passo é transformar essa infraestrutura em algo realmente automatizado.

Por exemplo:

NOVO CLIENTE
     │
     ▼
Gerar identidade
     │
     ▼
Gerar configuração WireGuard
     │
     ▼
Configurar MikroTik
     │
     ▼
Registrar cliente
     │
     ▼
Monitoramento automático
     │
     ▼
Backup periódico

Ou seja:

instalar um novo cliente deixa de ser um projeto e passa a ser um processo.


O que aprendi

A principal lição não foi “use WireGuard”.

Foi outra:

Quando você administra muitos equipamentos, o problema deixa de ser configurar o equipamento e passa a ser criar uma forma escalável de administrar todos eles.

Foi isso que começou a me fazer pensar diferente sobre infraestrutura.

Em vez de:

“Como acesso este MikroTik?”

comecei a pensar:

“Como faço para nunca mais precisar me preocupar
com a forma como esse MikroTik está conectado à Internet?”

Essa mudança de pensamento foi o que realmente tornou o projeto interessante.


Arquitetura final

No momento, a ideia ficou assim:

                    INTERNET
                       │
                       ▼
              ┌─────────────────┐
              │     SERVIDOR    │
              │                 │
              │    WireGuard    │
              │    Dashboard    │
              │    Monitoring   │
              │    Backups      │
              └────────┬────────┘
                       │
             ┌─────────┼─────────┐
             │         │         │
             ▼         ▼         ▼
          Cliente   Cliente   Cliente
             01        02        03
             │         │         │
          MikroTik  MikroTik  MikroTik

Ainda estou evoluindo essa arquitetura, mas a ideia principal já está funcionando:

criar uma infraestrutura central para administrar equipamentos remotos sem depender de IP público em cada cliente.

E talvez essa seja a parte mais interessante de trabalhar com infraestrutura:

Você começa tentando resolver um problema de um cliente.

Quando percebe, está construindo uma solução para resolver o mesmo problema para todos os próximos.

Carregando publicação patrocinada...
3

Post muito bom, até salvei aqui pra ler mais tarde. Estou começando agora com roteador dedicado
(configurando um E50UG) e esse cenário de CGNAT é exatamente o tipo de coisa que eu
não sabia como resolvia, então fiquei com algumas dúvidas de iniciante:

  1. Quando você fala em isolar cada cliente numa subnet própria (10.100.1.x,
    10.100.2.x...), a separação por endereçamento já basta? Fiquei na dúvida porque, se
    todo o tráfego dos peers passa pelo servidor, o que impede um cliente de rotear até
    a rede do outro? Você faz alguma regra de firewall no servidor além disso?

  2. Os MikroTik atrás de CGNAT mantêm o túnel de pé de forma estável? Li que sem
    persistent-keepalive o NAT da operadora derruba o mapeamento e o peer some da VPN
    até gerar tráfego de novo. Você precisou mexer nisso ou nunca teve problema?

  3. Como você lida com o Raspberry Pi ser o ponto central? Se ele ou a internet
    dele caírem, você perde o acesso a todos os clientes de uma vez, né? Tem algum
    plano B tipo um segundo servidor, ou na prática isso nunca foi problema?

  4. E a dúvida que mais me intriga: como isso resolve o cenário que abre o post?
    Se o cliente ligou dizendo que a internet caiu, o MikroTik dele também não consegue
    fechar o túnel WireGuard. Nesse caso a VPN te ajuda em quê, ou ela serve mais pros
    outros chamados (lentidão, configuração, monitoramento) e queda total continua
    exigindo ir até o local? Vi que você cita "coletar logs" na parte de automação: você
    já deixa algo rodando continuamente, pra quando o túnel cair ter uma visão do que
    aconteceu logo antes?

Aproveitando: como você provisiona um peer novo na instalação? Gera um script .rsc
ou configura na mão?

1

Cara, excelentes perguntas. E principalmente a 4 é uma observação que eu mesmo tive durante a montagem, porque existe uma diferença importante entre acesso remoto e monitoramento da queda do acesso.

Vou responder por partes:

1. Isolamento dos clientes

Não considero a subnet sozinha como uma camada de segurança suficiente.

A ideia é que cada cliente tenha sua própria rede dentro da VPN, por exemplo:

Servidor
10.100.0.1

Cliente 01 → 10.100.1.0/24
Cliente 02 → 10.100.2.0/24
Cliente 03 → 10.100.3.0/24

Mas no servidor eu também colocaria regras de firewall para impedir o tráfego lateral entre os peers.

Ou seja, o fato de o Cliente 01 estar em uma subnet diferente do Cliente 02 não significa automaticamente que ele não consiga rotear até ela. Se o servidor estiver fazendo o roteamento entre essas redes, preciso bloquear isso explicitamente.

A ideia é:

                 SERVER
                   │
        ┌──────────┼──────────┐
        │          │          │
     Cliente 01 Cliente 02 Cliente 03
        │          │          │
       X───────────X───────────X
          sem acesso lateral

O servidor só deve permitir o que realmente for necessário.


2. CGNAT + persistent-keepalive

Sim, esse é um ponto importante.

No cenário em que o MikroTik está atrás de NAT/CGNAT, o problema não é exatamente o WireGuard não funcionar, mas o mapeamento NAT poder expirar quando fica muito tempo sem tráfego.

Nesse caso o persistent-keepalive é justamente uma das coisas que considero na configuração dos peers que estão atrás de NAT.

Algo como:

persistent-keepalive=25

faz o peer enviar tráfego periodicamente para manter o mapeamento.

Ainda estou tratando isso como parte do padrão de provisionamento, porque quero que o processo seja automático e não depender de lembrar dessa configuração em cada instalação.


3. Raspberry Pi como ponto central

Essa é provavelmente a maior fragilidade da arquitetura inicial.

Se eu tiver:

                 INTERNET
                    │
                 SERVER
                    │
       ┌────────────┼────────────┐
       │            │            │
    Cliente 01   Cliente 02   Cliente 03

e o servidor cair, perco o acesso remoto a todos.

Por isso não considero o Raspberry Pi o "ponto final" da arquitetura. Ele é o primeiro estágio.

A ideia é evoluir para:

                 SERVIDOR A
                /           \
               /             \
        Cliente 01          Cliente 02
               \             /
                \           /
                 SERVIDOR B

ou pelo menos ter um segundo ponto de acesso/backup para os clientes mais críticos.

No meu caso estou começando simples justamente para validar a arquitetura antes de colocar alta disponibilidade em cima.


4. Essa foi a melhor pergunta

Você está certo.

Se o cliente liga falando:

"Minha internet caiu completamente."

e o MikroTik depende daquela mesma Internet para estabelecer o túnel, eu não consigo magicamente entrar nele através da VPN.

Se:

INTERNET DO CLIENTE
       X
       │
    MikroTik
       X
    WireGuard

não existe caminho físico para o servidor.

Então a VPN resolve principalmente situações como:

  • configuração;
  • lentidão;
  • diagnóstico;
  • firewall;
  • DHCP;
  • DNS;
  • Wi-Fi;
  • monitoramento;
  • alterações de configuração;
  • análise de logs;
  • problemas que ainda deixam o MikroTik conectado.

Para queda total do link, preciso de outra estratégia se quiser diagnóstico remoto.

E foi justamente essa questão que me fez pensar que o projeto não deveria ser somente "VPN para acessar MikroTik".

Quero transformar isso em uma infraestrutura de monitoramento + acesso remoto.

Por exemplo, se o túnel cair, o servidor já pode saber:

09:41:02 → Cliente online
09:41:15 → perda de comunicação
09:41:20 → peer não responde
09:41:30 → cliente offline

E antes disso eu posso ter informações como:

último handshake
último tráfego
CPU
memória
interfaces
logs
estado das rotas

Isso não resolve uma queda física da Internet, obviamente, mas ajuda muito a diferenciar:

Internet caiu
       X
MikroTik travou
       X
WireGuard caiu
       X
DNS parou
       X
rota foi alterada
       X
equipamento desligou

Essa parte de monitoramento ainda é uma das coisas que estou evoluindo no projeto.


Sobre provisionar um peer novo:

Hoje eu não quero depender de configuração manual.

A ideia é justamente chegar em algo assim:

Novo cliente
     ↓
Gerar chave
     ↓
Definir IP do peer
     ↓
Gerar configuração
     ↓
Aplicar no MikroTik
     ↓
Cadastrar no servidor
     ↓
Monitorar

No começo é perfeitamente possível fazer isso através de .rsc, mas o objetivo é automatizar a geração.

Por exemplo, eu cadastro:

CLIENTE = 004
IP = 10.100.4.2

e o sistema gera a configuração correspondente.

Então, resumindo: você apontou exatamente algumas das limitações que eu estou tentando resolver na segunda etapa do projeto. A primeira versão é basicamente "preciso conseguir chegar nos equipamentos mesmo atrás de CGNAT". A próxima é transformar isso em uma plataforma de provisionamento + monitoramento + backup + diagnóstico.

E valeu pelas perguntas, porque a 4 principalmente é uma distinção que acho que vale colocar no próprio post. A VPN não faz milagre quando o link do cliente morreu; ela resolve o problema de como chegar no equipamento enquanto ainda existe conectividade.

2

Valeu demais pela resposta, ficou mais claro que o post: essa distinção entre "acesso remoto" e "monitoramento da queda do acesso" resolveu exatamente a minha confusão. A parte da timeline (último handshake, último tráfego, estado antes de cair) pra diferenciar internet caiu / MikroTik travou / túnel caiu foi o que mais me agregou e inclusive vou implementar no meu, atualmente tenho o wireguard rodando em uma vps mas tenho usado apenas pra acesso remoto de serviços nos computadores lá de casa e n.

Sobre a queda total do link, fiquei pensando: já considerou um canal fora de banda pros clientes mais críticos, tipo um chip 4G/LTE como link de gerência? Pergunto porque não sei se na prática o custo compensa ou se é overkill pra instalação pequena.

1

Valeu demais pelas perguntas e pela contribuição! 👊

E sobre esse ponto da redundância, hoje eu pensaria em Starlink como o plano B mais robusto, principalmente para clientes em locais onde a segunda operadora também não é confiável. A Starlink Mini, por exemplo, tem Ethernet e entrada DC de 12–48 V, então dá para integrar bem em uma estrutura de backup.

Para instalações onde o custo precisa ser menor, eu colocaria 4G/5G com SIM como solução custo-benefício. Aí entra um modem LTE/5G compatível + antena, quando necessário, e o MikroTik fazendo o failover entre o link principal e o link móvel.

Então eu vejo mais ou menos assim:

LINK PRINCIPAL
      │
      ▼
   MikroTik
      │
      ├── Failover ──► 4G/5G + SIM
      │
      └── Failover ──► Starlink

A ideia é justamente evoluir o projeto para que, quando o link principal morrer, o próprio MikroTik consiga continuar conectado ao servidor pela segunda WAN.

Ainda estou evoluindo essa parte, mas acho que esse é o caminho mais interessante: VPN + monitoramento + failover, em vez de simplesmente ter uma VPN para acessar o equipamento.

Obrigado mesmo pelo comentário! Essas perguntas estão ajudando bastante a melhorar o projeto e até a complementar o post. 🚀

1

Meus 2 cents,

Apesar de nao ser o autor do post, vou comentar como resolvi estas questoes no meu cenario:

  1. Client-to-Client no Wireguard: eh possivel fazer via Wireguard/Peers/Allowed Address e colocar uma subnet /16 (englobando todos os peers) ao inves de /24 (de cada peer). Sim, pode ser necessario ajustar no firewall (e ter cuidado para nao deixar aberto demais, senao o cliente "invade" tua rede local/servidor)

  2. Como o WG eh UDP, o Wireguard/Peers/PersistentKeepalive ajuda a manter a conexao (geralmente 30s eh o bastante, mas ajuste conforme teu caso)

  3. Nao usei com raspberry, sempre optei para uma VPS hospedando o server, entao o servidor acaba sendo mais estavel. Mas sim, o servidor morreu, ja era. Eu uso NAGIOS/ICINGA/ZABBIX para monitorar logs, mas se fosse comecar do zero talvez iria de Prometheus+grafana.

  4. Costumo usar o MK em clientes com failover para 2 links (p.ex. VIVO+CLARO), entao eh raro acontecer de ficar sem conexao alguma. Em casos raros (ou nem tanto com a chuva de SP...) onde preciso acessar sempre, uso um 4G/5G como redundancia extra so para acessar o MK do cliente (neste caso prefiro um modem/roteador 4G/5G apesar de mais caro, mas modem usb tambem funciona).

4.1. Tenho um painel NOC que monitora todos os MK de clientes: quando cai um link ou algo assim (p.ex. DVRs), ja sinaliza e posso tentar a recuperacao dele (p.ex. mandando um ciclo power off/on para um ESP32 com rele, mas tambem tenho usado com sucesso tomadas inteligentes "sabor" SONOFF)

  1. Provisionamento: o sistema que criei, ja tenho os templates do rsc para provisionamento e mantenho backup das versoes que estao rodando no cliente. Preencho os dados do cliente, testo em LAB e mando ja pronto - plug n' play. Para testar cenarios e simulacoes, uso o EVE-NG/PNETLAB.

Durante muito tempo usei o OpenVPN para este tipo de trafego, o wireguard eh uma opcao mais recente - e que funciona melhor/mais estavel/melhor velocidade.

Saude e Sucesso !


Este post foi favoritado via extensão TABNEWS FAVORITOS

Tem curiosidade sobre IA ? Da uma olhada no meu LIVRO: IA PARA ENGENHEIROS

2

Aqui onde moro não é tão comum um setup com 2 links (na verdade não é normal nem usar roteador proprio e 90% dos provedores não deixam nem acessar o painel de admin do roteador) mas faz total sentido realmente, anotei esses detalhes principalmente esse primeiro ponto para estudar esse fim de semana.

2

Algo que lembrei agora de comentar sobre a redundancia 4G/5G: esta comecando a se tornar comum os clientes usarem StarLink como segundo link/redundancia, que tem se mostrado bem estavel. Eu mesmo estou convencendo a patroa a me deixar assinar um para fazer testes.

2

No meu trabalho dava pra fazer isso (meio que já tem dois links) só que o patrão não libera orçamento pra um roteador então quando o principal que é o da Vivo caí tem que trocar o cabo pro da starlink manualmente.

2

Este eh o tipo de solucao que o MK atende bem (failover automatico de 2 links). Uma opcao de baixo custo eh o tplink TL-ER605, so para evitar de ficar trocando o cabo toda hora...

Mas sem grana para investir, nao tem jeito mesmo.

2

Ele tá mais caro que o E50UG e a maior questão é que só o MK não resolveria pois no setup atual a cobertura do roteador do provedor é necessaria junto com a rede mesh então pra colocar o MK teria que comprar pelo menos mais um AP aí no orçamento o MK + AP tá saindo 1200

3

Meus 2 cents,

Parabens pelo post !

Tenho MTCINE e acho o MK um equipamento com um potencial absurdo (em especial o Refresh/E50UG para pequenos clientes, ele permite ate rodar um docker dentro dele !!!)

Desenvolvi uma solucao com o mesmo perfil que voce esta trabalhando faz alguns anos e posso te afirmar: existe um mercado bem grande aqui, por exemplo via IoT e modulos ESP32 com Rele voce poder ligar/desligar equipamentos, dando um "cold boot" (power cicle) em um DVR travado remotamente (na verdade, qualquer equipamento da rede remota, ate mesmo um modem/roteador travado desde que ligado no modulo de reles).

Empresas de portaria remota sao um alvo obvio aqui.

Continue investindo, vale a pena.

Saude e Sucesso !


Este post foi favoritado via extensão TABNEWS FAVORITOS

Tem curiosidade sobre IA ? Da uma olhada no meu LIVRO: IA PARA ENGENHEIROS