Failover dual-WAN automático em OPNsense (fibra + 5G) — testado a puxar o cabo

Started by Nuno, Today at 11:32:01 AM

Previous topic - Next topic
Failover dual-WAN automático em OPNsense (fibra + 5G)

Uma só ligação à internet é um ponto único de falha. Basta uma quebra a meio de uma
chamada, de um upload ou de um exame online e ficamos presos a reconectar à mão. Por isso
montei uma segunda ligação que assume sozinha: fibra como linha principal, 5G como recurso.
Quando a fibra cai, o tráfego passa para o 5G em segundos; quando a fibra volta, regressa a
ela.

Isto é failover puro, não load balancing — uma linha leva tudo, a outra espera. Fica
aqui a configuração completa. Parte do princípio de que as duas WAN já estão definidas como
interfaces (no meu caso: fibra na WAN, 5G na OPT1).

1) Gateways — System ▸ Gateways ▸ Configuration

Dá a cada gateway um monitor IP distinto e externo. É isto que faz o failover
disparar de verdade. Eu uso:
 - fibra → 1.1.1.1
 - 5G    → 8.8.8.8

Mantém o gateway monitoring ativo. Sem monitor IPs distintos, o OPNsense não percebe que uma
linha caiu, e o failover nunca acontece.

2) Gateway group — System ▸ Gateways ▸ Group ▸ Add

 - Nome: GW_FAILOVER
 - Fibra = Tier 1
 - 5G    = Tier 2
 - Trigger Level: Member down

"Member down" significa que só salta para o 5G quando o gateway da fibra é dado como morto —
exatamente o que se quer para uma separação limpa entre principal e recurso.

3) A regra de LAN — Firewall ▸ Rules ▸ LAN  (o passo que a maioria dos guias esquece)

Edita a regra "allow LAN to any" (ou cria uma nova no topo). Em Advanced, define:
 - Gateway → GW_FAILOVER

É este o passo que ativa o policy-based routing. Sem ele, o tráfego da LAN ignora o grupo
por completo e o failover não faz nada. Se houver uma coisa para reter deste post, é esta.

4) Outbound NAT — Firewall ▸ NAT ▸ Outbound

O modo automático já cobre as duas interfaces. Se usares Hybrid/Manual, garante que existe
regra de outbound NAT para a fibra e para o 5G, senão o tráfego pelo recurso não é
traduzido.

5) DNS

O Unbound local resolve sem problema. Se reencaminhares para o resolver do ISP, muda-o para
1.1.1.1 / 8.8.8.8 em System ▸ Settings ▸ General, para não ficares preso ao DNS da fibra
quando a fibra é precisamente o que está em baixo.

Testar — a sério

Não confies nisto sem o partires primeiro. Desliga a fibra fisicamente e cronometra a
comutação. Com "Member down", conta com uns 5–10 segundos até o 5G assumir. Volta a ligar e
confirma que regressa à fibra.

O que sobrevive à troca (e o que não)

A comutação demora uns segundos, e as sessões TCP ativas quebram — a ligação cai e
restabelece-se no novo caminho. Tudo aquilo em que a sessão vive num token e não no IP (a
maioria das apps web em HTTPS) aguenta um recarregar de página sem perder o estado. Streams
de longa duração levam com o corte. Planeia em conformidade.

Notas

 - O 5G atrás de CGNAT não é problema aqui: não são precisas ligações de entrada, isto é
   failover de saída.
 - Sê honesto quanto ao alcance: isto é failover por queda de link, não SD-WAN. Não
   há seleção de caminho em tempo real por latência/jitter/perda nem orquestração central —
   comuta quando um link é dado como morto, que é o que a maioria dos homelabs e pequenos
   escritórios precisa.

Nota de hardware: corri isto num appliance de segunda mão, fanless, sem saída de vídeo
(instalação só por consola série), mas a configuração de failover acima é igual em qualquer
máquina compatível com OPNsense.

Disponível para responder a dúvidas — e se puxares mesmo o cabo para testar, diz-me o teu
tempo de comutação. :)
Wrote this up as a full step-by-step PDF (install + failover, EN/PT) → njba.gumroad.com/l/opnsense-dual-wan-failover