OPNsense MultiWAN: Failover y Balanceo con 2 WAN

Tener dos proveedores de internet no sirve de nada si, cuando uno cae, alguien tiene que entrar a la GUI a cambiar el gateway a mano. OPNsense resuelve esto con gateway groups: monitorea cada enlace, detecta pérdida de paquetes o latencia, y mueve el tráfico al enlace sano sin intervención. La pieza que mucha gente olvida es que el grupo no hace nada por sí solo — hay que usarlo en las reglas de firewall. Este post cubre la configuración completa en orden.

Topología de referencia

 1   ISP A (fibra)          ISP B (cable / LTE)
 2        │                        │
 3    [ igb0 ] WAN1            [ igb1 ] WAN2
 4              \              /
 5               \            /
 6                 OPNsense
 7                    │
 8                [ igb2 ] LAN
 9                    │
10             192.168.10.0/24
InterfazNombreTipoRed / IPGateway
igb0WAN1Static203.0.113.2/30203.0.113.1
igb1WAN2DHCPasignada por ISP Bdinámico
igb2LANStatic192.168.10.1/24—

Las direcciones 203.0.113.0/24 y 198.51.100.0/24 son rangos de documentación (RFC 5737). Sustitúyelas por las que te entregue cada proveedor.

Objetivo:

  • WAN1 es el enlace principal.
  • WAN2 toma el tráfico si WAN1 cae o se degrada.
  • Opcionalmente, balancear ambos enlaces en lugar de failover puro.

1. Interfaces

Interfaces → Assignments

Asigna igb1 como nueva interfaz (aparecerá como OPT1), renómbrala a WAN2 y habilítala.

WAN1 (igb0)

  • IPv4 Configuration Type: Static IPv4
  • IPv4 address: 203.0.113.2 / 30
  • IPv4 Upstream Gateway: crea uno nuevo → 203.0.113.1 (lo renombraremos en el siguiente paso)
  • Block private networks: ✓
  • Block bogon networks: ✓

WAN2 (igb1)

  • Enable: ✓
  • IPv4 Configuration Type: DHCP
  • Block private networks: ✓ (desmárcalo si el módem de ISP B te entrega una IP privada tipo 192.168.100.x)
  • Block bogon networks: ✓

El campo IPv4 Upstream Gateway es lo que marca a una interfaz como WAN. Sin él, OPNsense no agrega reglas reply-to ni NAT automático para esa interfaz, y el multiWAN se comporta de forma extraña.


2. Gateways y monitoreo

System → Gateways → Configuration

Al configurar las interfaces, OPNsense crea los gateways automáticamente (WAN_GW, WAN2_DHCP). Edita cada uno:

GW_WAN1

CampoValor
NameGW_WAN1
InterfaceWAN1
IP Address203.0.113.1
Upstream Gateway✓
Monitor IP1.1.1.1
Priority1
DescriptionFibra ISP A

GW_WAN2

CampoValor
NameGW_WAN2
InterfaceWAN2
IP Addressdynamic
Upstream Gateway✓
Monitor IP8.8.8.8
Priority2
DescriptionCable ISP B

Puntos importantes:

  • Usa una Monitor IP distinta por gateway. OPNsense (vía dpinger) instala una ruta de host hacia cada IP de monitoreo por su gateway. Si ambos monitorean 8.8.8.8, uno de los dos hará ping por el enlace equivocado y el estado será falso.
  • No monitorees la IP del gateway del ISP. El router del proveedor puede responder ping aunque su upstream esté caído. Monitorea algo más allá del ISP.
  • Priority define qué gateway es el default del propio firewall cuando hay varios marcados como upstream. Menor número = mayor prioridad.

Umbrales de monitoreo (opcional)

En cada gateway, sección Advanced:

CampoValor sugerido
Latency thresholds200 / 500 ms
Packet Loss thresholds10 / 20 %
Probe Interval1 s
Time Period60 s

Para un enlace LTE con latencia variable, sube los umbrales de latencia o el gateway estará oscilando entre online y warning todo el día.


3. Gateway Groups

System → Gateways → Group → Add

Aquí se decide el comportamiento. Los tiers determinan el orden:

  • Tiers distintos → failover (Tier 1 se usa mientras esté sano, Tier 2 entra si cae).
  • Mismo tier → balanceo round-robin entre los gateways de ese tier.

Opción A — Failover (recomendado para empezar)

CampoValor
Group NameGW_FAILOVER
GW_WAN1Tier 1
GW_WAN2Tier 2
Trigger LevelPacket Loss or High Latency
DescriptionWAN1 principal, WAN2 respaldo

Opción B — Balanceo

CampoValor
Group NameGW_BALANCEO
GW_WAN1Tier 1
GW_WAN2Tier 1
Trigger LevelPacket Loss or High Latency
DescriptionAmbos enlaces activos

Puedes crear ambos grupos y decidir en cada regla de firewall cuál usar.

Trigger Level define cuándo se considera caído un miembro:

TriggerSe excluye el gateway cuando…
Member DownPérdida total (100 %)
Packet LossSupera el umbral alto de pérdida
High LatencySupera el umbral alto de latencia
Packet Loss or High LatencyCualquiera de los dos

En balanceo, si los enlaces tienen capacidades muy distintas (ej. 500 Mbps y 50 Mbps), aumenta el Weight del gateway rápido en su configuración para que reciba proporcionalmente más conexiones.


4. DNS y tráfico del propio firewall

El gateway group aplica a tráfico que cruza el firewall (LAN → internet). El tráfico que origina OPNsense — DNS, actualizaciones, NTP — usa la tabla de rutas normal, es decir, la ruta default. Si WAN1 cae y la default sigue apuntando a WAN1, el firewall se queda sin DNS aunque los clientes de LAN tengan internet por WAN2.

System → Settings → General

DNS ServerUse gateway
1.1.1.1GW_WAN1
8.8.8.8GW_WAN2
  • Allow DNS server list to be overridden by DHCP/PPP on WAN: ✗ (evita que el DHCP de ISP B reemplace tus servidores)
  • Gateway switching → Allow default gateway switching: ✓

Con gateway switching activo, cuando el gateway default cae OPNsense mueve la ruta default al siguiente gateway disponible según su prioridad.

Si usas Unbound en modo resolver (consultando directo a los root servers), depende completamente de la ruta default — gateway switching es obligatorio. En modo forwarding (Services → Unbound DNS → Query Forwarding) reenvía a los servidores definidos arriba, cada uno fijado a su gateway.


5. Ajustes de firewall para multiWAN

Firewall → Settings → Advanced

OpciónValorPor qué
Sticky connections✓En balanceo, mantiene a un cliente en el mismo WAN mientras tenga estados activos. Evita que sitios bancarios o sesiones HTTPS te vean cambiar de IP.
Disable reply-to✗Mantenlo desactivado: reply-to garantiza que la respuesta a una conexión entrante por WAN2 salga por WAN2.
Disable force gateway✗Mantén la ruta forzada en reglas con gateway.

En la misma página, sección Gateway Monitoring, deja activo el state killing al fallar un gateway: cuando un enlace cae se eliminan sus estados y las conexiones se re-establecen por el enlace sano en lugar de quedarse colgadas. El nombre exacto de la opción cambia entre versiones de OPNsense, así que revisa el texto de ayuda de esa sección.


6. NAT de salida

Firewall → NAT → Outbound

Deja el modo en Automatic outbound NAT rule generation. Como ambas interfaces tienen upstream gateway, OPNsense genera una regla de NAT por cada WAN:

InterfaceSourceTranslation
WAN1192.168.10.0/24WAN1 address
WAN2192.168.10.0/24WAN2 address

Verifica que aparezcan ambas en la tabla de reglas automáticas. Si falta la de WAN2, revisa que su gateway esté marcado como upstream.

Si usas Hybrid o Manual porque ya tenías reglas personalizadas, tienes que crear la regla de WAN2 tú mismo. Sin ella, el tráfico que el grupo mande por WAN2 saldrá con IP privada y nunca regresará.


7. Aliases

Firewall → Aliases → Add

RFC1918

CampoValor
NameRFC1918
TypeNetwork(s)
Content10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16

VOIP_PROVEEDOR (opcional, para el ejemplo de ruteo selectivo)

CampoValor
NameVOIP_PROVEEDOR
TypeHost(s) / Network(s)
ContentIPs del proveedor SIP

8. Reglas de firewall

WAN1 y WAN2 — sin reglas de entrada

Firewall → Rules → WAN1 / WAN2

Deja ambas sin reglas pass. El bloqueo implícito descarta todo lo entrante no solicitado, y las opciones Block private networks / Block bogon networks de la interfaz agregan reglas de bloqueo automáticas al inicio.

Si publicas un servicio (port forward), recuerda que llega por una WAN concreta: crea el port forward en la interfaz correspondiente. Gracias a reply-to, la respuesta saldrá por el mismo enlace.


LAN — aquí se activa el multiWAN

Firewall → Rules → LAN

El orden importa: las reglas se evalúan de arriba hacia abajo y gana la primera coincidencia. Elimina (o desactiva) las reglas por defecto Default allow LAN to any (IPv4 e IPv6) y reemplázalas con estas:

Regla 1 — DNS hacia el firewall

CampoValor
ActionPass
ProtocolTCP/UDP
SourceLAN net
DestinationLAN address
Dest. Port53 (DNS)
Gatewaydefault
DescriptionDNS local

Regla 2 — Bloquear DNS externo (fuerza a los clientes a usar Unbound)

CampoValor
ActionBlock
ProtocolTCP/UDP
SourceLAN net
Destinationany
Dest. Port53 (DNS)
Log✓
DescriptionBloquear DNS externo

Regla 3 — Tráfico local sin policy routing

CampoValor
ActionPass
Protocolany
SourceLAN net
DestinationRFC1918
Gatewaydefault
DescriptionTráfico interno — no forzar gateway

Esta regla es la que más se olvida. Una regla con gateway fuerza el tráfico hacia ese gateway, ignorando la tabla de rutas. Sin esta excepción, el tráfico de LAN hacia otras redes internas (VLANs, VPN, la IP privada del módem) se mandaría a internet y se perdería.

Regla 4 — VoIP siempre por WAN2 (opcional, ejemplo de ruteo selectivo)

CampoValor
ActionPass
ProtocolUDP
SourceLAN net
DestinationVOIP_PROVEEDOR
GatewayGW_WAN2
DescriptionSIP/RTP por WAN2

Usar un gateway individual en vez de un grupo significa que si WAN2 cae, este tráfico no hace failover. Si quieres que sí lo haga, crea un tercer grupo con WAN2 en Tier 1 y WAN1 en Tier 2.

Regla 5 — Internet por el gateway group

CampoValor
ActionPass
Protocolany
SourceLAN net
Destinationany
GatewayGW_FAILOVER
DescriptionInternet — multiWAN

El campo Gateway está en la sección Advanced features de la regla. Esta es la regla que hace funcionar todo: sin ella, el tráfico sigue la ruta default y el grupo no se usa nunca.

Para IPv6 repite el esquema con un grupo IPv6 si ambos proveedores lo entregan; si solo uno lo hace, deja la regla IPv6 con gateway default.

Resumen de reglas LAN

#AcciónDestinoPuertoGateway
1PassLAN address53default
2Blockany53—
3PassRFC1918anydefault
4PassVOIP_PROVEEDORanyGW_WAN2
5PassanyanyGW_FAILOVER

La regla anti-lockout de OPNsense (acceso a la GUI desde LAN) sigue activa por encima de todas, así que no pierdes acceso al editar.


9. Verificación

Estado de los gateways

System → Gateways → Status — ambos deben aparecer Online con latencia y pérdida razonables. El dashboard también tiene un widget Gateways útil para tenerlo a la vista.

IP pública de salida

Desde un equipo de LAN:

1curl -4 https://ifconfig.me
2# → IP de WAN1 (failover, todo normal)

Prueba de failover

Desconecta el cable de WAN1 (o deshabilita la interfaz temporalmente) y observa:

1ping -O 1.0.0.1
2# Unos pocos paquetes perdidos mientras dpinger detecta la caída…
3# …y luego vuelve a responder por WAN2
4
5curl -4 https://ifconfig.me
6# → IP de WAN2

En System → Gateways → Status, GW_WAN1 debe pasar a Offline. Reconecta y el tráfico nuevo regresa a WAN1. Las conexiones existentes sobre WAN2 se mantienen hasta que terminan (o hasta que se maten los estados).

Prueba de balanceo

Con GW_BALANCEO en la regla 5, abre varias conexiones desde hosts distintos y revisa en Firewall → Diagnostics → States que haya estados saliendo por ambas WAN. Con sticky connections un mismo host tiende a quedarse en un enlace — eso es lo esperado.

DNS del firewall

Interfaces → Diagnostics → DNS Lookup con WAN1 desconectado: debe resolver. Si falla, revisa los servidores DNS por gateway y Allow default gateway switching (sección 4).


Problemas comunes

SíntomaCausa probable
WAN1 cae y LAN no tiene internetLa regla LAN no tiene el gateway group asignado
LAN navega pero el firewall no resuelve DNS en failoverFalta default gateway switching o DNS fijado a un solo gateway
No llego a la VLAN de servidores / VPN desde LANFalta la regla RFC1918 con gateway default antes de la del grupo
Tráfico por WAN2 sale pero no vuelveNAT de salida en modo manual sin regla para WAN2
Gateway oscila entre online y offlineUmbrales demasiado estrictos o Monitor IP que limita ICMP
Ambos gateways “Online” aunque uno no tiene internetMonitor IP compartida o monitoreando el router del ISP
Bancos / sitios cierran sesión con balanceoSticky connections desactivado

Resumen

ComponenteConfiguración
GatewaysUno por WAN, Monitor IP distinta, upstream ✓
Gateway GroupTiers distintos = failover, mismo tier = balanceo
DNS del firewallUn servidor por gateway + default gateway switching
NAT de salidaAutomático (una regla por WAN)
Reglas WANNinguna regla pass; bloqueo implícito
Reglas LANExcepción RFC1918 sin gateway → regla final con grupo

El concepto clave: en OPNsense el multiWAN es policy routing. Los gateways y grupos solo describen los enlaces y cómo se comportan; es la regla de firewall con el campo Gateway la que decide por dónde sale cada paquete. Una vez que eso queda claro, el ruteo selectivo (VoIP por un enlace, backups por otro, invitados por el más barato) es solo cuestión de agregar reglas más específicas encima de la regla general.