AAAlison AmorimBlog
alisonamorim.com ↗

Homelab · Episódio 4

Duas Operadoras Tres Roteadores e Nenhuma Porta Aberta

Failover entre Vivo e Claro, ONT em bridge, NAT em camadas e túnel da Cloudflare: como a internet chega ao homelab sem nenhuma porta aberta no roteador.

  • 12 min de leitura
  • Práticas Arquitetura
Fonte do texto
Homem agachado com lanterna confere os cabos entre o modem e o roteador num armário de rede, sob o neon Nenhuma porta aberta
Neste artigo · 8 seções
  1. por que duas operadoras
  2. três roteadores em fila
  3. a reorganização de 29 de setembro
  4. o NAT que ainda está lá
  5. nenhuma porta aberta
  6. a porta dos fundos
  7. o que fica
  8. Insights & Takeaways

Vinte e sete de setembro, uns dez minutos depois da meia-noite. A internet da Vivo caiu aqui em casa, e quase ninguém percebeu. O roteador que cuida das duas operadoras, um TP-Link ER605, viu a Vivo sumir e jogou todo o tráfego para a Claro sozinho. Era exatamente para isso que ele estava ali.

O que me incomodou foi a tela dele. Na página de status, a porta da Vivo continuava dizendo "Link Up", como se nada tivesse acontecido. Ao mesmo tempo, a tela da ONT, aquele aparelhinho da operadora que transforma a luz da fibra em sinal de rede, mostrava a potência de recepção em 0 dBm. Traduzindo: não estava chegando luz nenhuma pela fibra. O cabo entre a ONT e o roteador estava perfeito. A internet do outro lado dela é que tinha acabado.

Quem salvou a noite foi a detecção online do ER605, um teste de conectividade que ele roda por conta própria e que marcou a Vivo como offline. O "Link Up" só dizia que havia um cabo plugado num aparelho ligado. Dois dias depois, eu reorganizei a rede da casa por causa dessa diferença.

No primeiro episódio desta série eu mostrei a planta inteira do homelab, do cabo da operadora até o pod. Este aqui é sobre o primeiro pedaço dela: como a internet chega em casa e por que, nesse caminho, nenhum roteador tem uma porta aberta.

por que duas operadoras

A casa é uma casa. Cai a luz, cai a internet, e o servidor no armário não muda isso. Só que agora tem coisa publicada na internet saindo daqui, e tem gente em casa que depende da conexão para coisas mais importantes do que o meu hobby.

A Vivo chega por fibra e é o link principal. A Claro chega por cabo coaxial e fica de reserva. São duas empresas e dois meios físicos diferentes, então um problema na fibra não derruba o cabo, e a chance de as duas caírem juntas é bem menor do que a de uma cair sozinha.

E reserva, aqui, quer dizer reserva mesmo. O ER605 tem o balanceamento de carga ligado, a função que dividiria as conexões entre os dois links, mas existe uma regra de Link Backup que manda usar a Claro só quando a Vivo cai, e essa regra vence. Na prática, com a Vivo no ar, a Claro fica parada. Somar as duas é uma decisão que eu ainda não tomei. Por enquanto, a Claro é um seguro.

três roteadores em fila

Até 28 de setembro, um pacote saindo do meu desktop para a internet passava por três roteadores, um atrás do outro.

O primeiro era o Archer AX6000, o roteador da casa, que cuida do Wi-Fi e entrega endereço para todas as máquinas na faixa 192.168.1.x. O segundo era o ER605, que cuida das duas operadoras. O terceiro era a própria ONT da Vivo, que sai de fábrica funcionando como roteador: era ela que fazia o login na Vivo, e ela entregava ao ER605 um endereço privado, na faixa 192.168.2.x.

E os três faziam NAT. NAT é a tradução de endereço: o roteador pega o pacote que saiu de um IP interno, troca o remetente pelo IP dele e anota numa tabela para quem devolver a resposta. Com um roteador só, ninguém percebe. Com três em fila, é como uma carta que passa por três portarias, e em cada uma o porteiro risca o remetente e escreve o endereço do próprio prédio. Funciona, mas cada camada é mais uma tabela para consultar e mais um obstáculo para quem tenta ligar um aparelho direto no outro, como as chamadas de vídeo e o Tailscale, a VPN que eu uso para entrar em casa quando estou fora.

O problema da madrugada do dia 27, porém, era outro, e mais sutil. Com a ONT funcionando como roteador, o ER605 não conversava com a Vivo. Ele conversava com a ONT. E a ONT, mesmo sem luz na fibra, continuava ligada, com a porta de rede acesa. Do ponto de vista do ER605 estava tudo bem: tinha cabo, tinha link, tinha um aparelho respondendo do outro lado. O único jeito de ele descobrir que a internet tinha acabado era testar a internet, e é o que a detecção online fez.

Funcionou naquela noite. Mas o roteador que decide a troca de link estava medindo a coisa errada, e a coisa certa só chegava a ele por um teste indireto.

a reorganização de 29 de setembro

A saída foi tirar o terceiro roteador do caminho, colocando a ONT em modo bridge. Em bridge, ela deixa de ser roteador e vira só um conversor: luz entra de um lado, Ethernet sai do outro, e ela deixa de ter opinião sobre o tráfego, que passa por ela sem ser traduzido. O PPPoE é o login que a Vivo exige para liberar a conexão, e quem faz esse login recebe o IP público. Com a ONT em bridge, quem passa a fazer isso é o ER605.

Antes de mexer, deixei um vigia rodando: um script que, a cada dois segundos, mais ou menos, pingava a internet e perguntava qual era o IP público da casa. Às 9h08, mudei a porta da Vivo no ER605 para PPPoE. Como a ONT ainda era roteador e não repassa o login, a Vivo caiu para o ER605 naquele instante, e a Claro assumiu sem nenhuma falha que o vigia registrasse. Às 9h13, passei a ONT para bridge. O ER605 fez o login, ganhou um IP público novo e o tráfego voltou da Claro para a Vivo. Nessa volta, três medições falharam, de 09:13:19 a 09:13:38. Foram uns vinte segundos sem internet, e das 552 medições daquela manhã essas foram as únicas.

Esses vinte segundos ensinam uma coisa que a palavra "failover" esconde: toda troca de link derruba as conexões abertas. O IP público muda, e para o resto da internet você virou outra pessoa. O download para no meio e a chamada de vídeo cai. Conexão nova funciona na hora. Failover automático protege a casa de ficar sem internet; não protege a conexão que estava no meio do caminho.

Depois da troca, a latência média até o 1.1.1.1 caiu de 4,7 para 3,7 ms. As camadas de NAT pela Vivo caíram de três para duas. E veio a parte que me fez mexer em tudo: agora, quando a fibra apaga, a sessão PPPoE cai junto, e o ER605 sabe na hora. Ele não precisa mais deduzir a queda por um teste, porque o próprio login com a Vivo deixa de existir.

A troca teve preço. Em bridge, a ONT deixa de receber as atualizações automáticas da Vivo, e no dia em que eu ligar para o suporte a primeira coisa que vão pedir é para voltar ao modo roteador. E tem a tela de sinal da ONT, a primeira coisa a olhar quando a Vivo cai. Para eu continuar alcançando esse painel, o ER605 ganhou um segundo endereço na porta da Vivo, que só existe para isso.

o NAT que ainda está lá

Com a ONT fora, sobraram dois roteadores fazendo NAT, e o AX6000 é o próximo da fila.

A primeira ideia de quase todo mundo seria colocá-lo em modo Access Point, que transforma o roteador num ponto de Wi-Fi sem inteligência nenhuma. Só que aí ele perderia o QoS (a priorização de tráfego), o antivírus, o IPS (o bloqueio de ataques conhecidos) e o isolamento da rede de convidados, e as visitas passariam a enxergar o HD ligado nele. Escolhi outro caminho: o AX6000 continua roteador, com firewall e tudo, mas sem NAT. O ER605 passa a enxergar cada máquina da casa pelo endereço dela na rede interna, o 192.168.1.x, e faz a única tradução que importa, a da saída para a internet. Para isso ele precisava de duas coisas, um endereço fixo para o AX6000 e uma rota dizendo que a faixa 192.168.1.x mora atrás dele. As duas entraram de manhã cedo, antes de qualquer teste, e nenhuma mudava o tráfego enquanto o AX6000 ainda fizesse NAT.

O teste veio antes até da troca da ONT, às 7h55 do mesmo dia 29, com o vigia rodando e uma trava no navegador: se eu não confirmasse a mudança dentro do prazo, o NAT voltava sozinho. Desliguei. Três rodadas de teste com conexões novas, com ping, HTTPS em quatro sites e DNS, passaram todas. O IP público nem mudou, porque o ER605 já sabia traduzir aquela faixa. Às 07:58:22, o NAT voltou sozinho: a aba do vigia estava em segundo plano no Chrome, e o prazo venceu antes de eu confirmar. No total, foram 199 medições e zero falhas, incluindo os dois minutos e meio sem NAT.

A segunda tentativa nem aconteceu. Eu estava fazendo isso com o Claude Code, e o classificador de segurança dele barrou o comando, por considerar que desligar o NAT enfraquecia a segurança. A cautela faz sentido, e eu prefiro um agente que pergunta demais a um que mexe na borda da minha rede sem perguntar. Só que a premissa do bloqueio é uma confusão comum: NAT não é firewall. Ele esconde os endereços internos como efeito colateral, e quem decide o que entra é o firewall, que continua ligado no AX6000. E o ER605 continua escondendo a casa inteira atrás de um IP público só. Desligar o NAT do AX6000 tira uma tradução do caminho, e as trancas continuam onde estavam. Hoje, a caixinha do NAT no AX6000 segue marcada, esperando eu desmarcá-la à mão.

nenhuma porta aberta

Nenhum roteador da casa tem port-forward, DMZ ou DNS dinâmico, que são os jeitos clássicos de deixar alguém de fora chegar numa máquina de dentro. A gestão remota também está desligada nos dois TP-Link. Os painéis deles só respondem para quem está dentro de casa.

Com duas operadoras, uma porta aberta seria frágil por definição. A Vivo entrega um IP público novo a cada sessão PPPoE, e às 09:13:30 daquele dia o ER605 ganhou um. Quando a Vivo cai, o IP da casa vira o da Claro. Um port-forward apontaria para um endereço que muda sem avisar. E, mesmo que não mudasse, continuaria sendo uma porta.

O que está publicado na internet sai por um túnel aberto de dentro para fora. O cloudflared roda dentro do cluster, em duas réplicas, e é ele que liga para a Cloudflare, não o contrário. A Cloudflare usa essa ligação para entregar as requisições. É a diferença entre deixar a porta destrancada esperando o entregador e ligar para a loja e deixar a linha aberta. Quando a Vivo cai, a conexão do túnel cai junto, e o cloudflared liga de novo, agora pela Claro, sem ninguém configurar nada. Quem acessa nunca soube qual é o IP da casa. No episódio 2 eu contei o que aconteceu no dia em que esse túnel subiu e publicou mais do que devia, mas aquilo foi um problema de quem podia passar pelo túnel, não da rede embaixo dele.

Tem um detalhe que eu acho bonito nesse desenho. Um pacote do túnel atravessa hoje três traduções de endereço até chegar à internet: a do Proxmox, que esconde a rede isolada onde o cluster mora, a do AX6000 e a do ER605. Até o dia 29 eram quatro. Uma conexão de saída atravessa qualquer número de NATs sem perceber, porque cada roteador anota o caminho de volta. O desenho foi pensado para não depender da bagunça da rede, e não depende: já funcionou com quatro camadas e funciona hoje com três.

A rede da casa: Vivo por fibra e Claro de reserva chegam em bridge ao ER605, que faz o PPPoE e o NAT, depois AX6000 e Proxmox; o cloudflared no K3s abre a conexão de saída até a Cloudflare, sem porta aberta

A administração segue a mesma lógica. Quando estou fora de casa, entro pelo Tailscale, que também conecta de dentro para fora e não exige porta aberta. O Proxmox avisa à tailnet, a rede privada que o Tailscale monta entre os meus aparelhos, que por ele se chega à faixa da rede isolada, e só a ela: a opção de usar o servidor como exit node ficou desmarcada, senão toda a navegação dos meus dispositivos sairia pela internet de casa. E cada camada de NAT que sai da frente ajuda o Tailscale a conectar direto, em vez de passar por um servidor intermediário.

a porta dos fundos

O último buraco era o mais silencioso. O UPnP é um recurso que deixa qualquer aparelho da casa pedir ao roteador para abrir uma porta, sem perguntar a ninguém: o videogame, a câmera barata, o programa que você instalou ontem. As notas de segurança do homelab chamam o UPnP de "a porta dos fundos que anula todo o resto", e é isso mesmo. Não adianta nunca abrir porta à mão se qualquer coisa na rede pode abrir uma pedindo com educação. No ER605 ele já vinha desligado. No AX6000 estava ligado, e saiu no dia 12 de setembro, o mesmo dia em que o túnel entrou.

Para ser honesto, aqui em casa essa porta dos fundos estava trancada por acaso. Com o AX6000 atrás do ER605, uma porta aberta pelo UPnP só ficaria visível para o ER605, que não tinha UPnP e não repassaria nada para a internet. Só que "trancada por acaso" é o tipo de proteção que some no dia em que você simplifica a rede, e simplificar a rede é exatamente o que eu estou fazendo. Desliguei para ela ficar trancada de propósito.

Relendo o repositório para escrever este artigo, achei mais uma dessas. O manifesto do cloudflared obriga o túnel a usar HTTP/2 em vez do QUIC, que é o padrão dele e roda sobre UDP. O comentário no arquivo explica que o ER605 divide o tráfego entre os dois links e embaralha o UDP. Só que, com a regra de Link Backup, a Claro fica parada enquanto a Vivo está no ar, e o ER605 ainda tem ligada uma opção que mantém cada aplicação num link só. O comentário descreve a rede que eu cogitei ter. A que eu tenho é outra. O HTTP/2 entrou por precaução no dia em que o túnel nasceu, e ninguém mediu o QUIC falhando. Continua lá porque funciona. Comentário de código também é documentação de intenção, e envelhece do mesmo jeito.

o que fica

Na madrugada do dia 27, a rede funcionou. Quem mentiu foi uma tela no meio dela. O failover fez o trabalho dele; o que estava errado era o que o roteador conseguia saber. Tirar um roteador da frente deixou a rede um milissegundo mais rápida, o que ninguém percebe. O ganho que importa é outro: hoje, quando a fibra apaga, o equipamento que decide a troca é o primeiro a saber.

E nenhuma dessas mudanças encostou no que está publicado. Duas operadoras, IP que muda a cada login, quatro, três ou duas camadas de NAT, e o túnel não se importa com nada disso, porque quem liga é ele.

Insights & Takeaways

  • "Link Up" fala do cabo, não da internet. Com o modem da operadora em modo roteador, o seu roteador de borda mede o aparelho da frente, e a queda da fibra só chega a ele por um teste indireto.
  • Modem em bridge e PPPoE no roteador de borda fazem a queda da fibra derrubar a sessão na hora. O custo é a atualização automática e a boa vontade do suporte da operadora.
  • Failover salva a casa e derruba a conexão: o IP público muda e tudo o que estava aberto cai. Aqui, medido, foram uns vinte segundos na volta para a Vivo.
  • NAT não é firewall. Tirar uma camada de NAT tira uma tradução; quem barra o que entra é o firewall, e ele fica.
  • Sem porta aberta, o desenho não depende da rede: túnel e Tailscale conectam de dentro para fora e atravessam quantas camadas de NAT houver. E o UPnP sai de propósito, mesmo quando o NAT em camadas já o deixava trancado por acaso.

Uma pergunta para fechar: se a operadora principal da sua casa, ou da sua empresa, cair agora, quem fica sabendo primeiro, o roteador, o monitoramento ou alguém reclamando no grupo?

Comente no LinkedIn

A conversa sobre este artigo acontece no LinkedIn, onde ele também foi publicado. Discordou de algo, viu de outro jeito em produção? Conta lá.

Leia também