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
| Interfaz | Nombre | Tipo | Red / IP | Gateway |
|---|---|---|---|---|
| igb0 | WAN1 | Static | 203.0.113.2/30 | 203.0.113.1 |
| igb1 | WAN2 | DHCP | asignada por ISP B | dinámico |
| igb2 | LAN | Static | 192.168.10.1/24 | — |
Las direcciones
203.0.113.0/24y198.51.100.0/24son 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-toni 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
| Campo | Valor |
|---|---|
| Name | GW_WAN1 |
| Interface | WAN1 |
| IP Address | 203.0.113.1 |
| Upstream Gateway | ✓ |
| Monitor IP | 1.1.1.1 |
| Priority | 1 |
| Description | Fibra ISP A |
GW_WAN2
| Campo | Valor |
|---|---|
| Name | GW_WAN2 |
| Interface | WAN2 |
| IP Address | dynamic |
| Upstream Gateway | ✓ |
| Monitor IP | 8.8.8.8 |
| Priority | 2 |
| Description | Cable 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 monitorean8.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:
| Campo | Valor sugerido |
|---|---|
| Latency thresholds | 200 / 500 ms |
| Packet Loss thresholds | 10 / 20 % |
| Probe Interval | 1 s |
| Time Period | 60 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)
| Campo | Valor |
|---|---|
| Group Name | GW_FAILOVER |
| GW_WAN1 | Tier 1 |
| GW_WAN2 | Tier 2 |
| Trigger Level | Packet Loss or High Latency |
| Description | WAN1 principal, WAN2 respaldo |
Opción B — Balanceo
| Campo | Valor |
|---|---|
| Group Name | GW_BALANCEO |
| GW_WAN1 | Tier 1 |
| GW_WAN2 | Tier 1 |
| Trigger Level | Packet Loss or High Latency |
| Description | Ambos 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:
| Trigger | Se excluye el gateway cuando… |
|---|---|
| Member Down | Pérdida total (100 %) |
| Packet Loss | Supera el umbral alto de pérdida |
| High Latency | Supera el umbral alto de latencia |
| Packet Loss or High Latency | Cualquiera 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 Server | Use gateway |
|---|---|
| 1.1.1.1 | GW_WAN1 |
| 8.8.8.8 | GW_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ón | Valor | Por 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:
| Interface | Source | Translation |
|---|---|---|
| WAN1 | 192.168.10.0/24 | WAN1 address |
| WAN2 | 192.168.10.0/24 | WAN2 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
| Campo | Valor |
|---|---|
| Name | RFC1918 |
| Type | Network(s) |
| Content | 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 |
VOIP_PROVEEDOR (opcional, para el ejemplo de ruteo selectivo)
| Campo | Valor |
|---|---|
| Name | VOIP_PROVEEDOR |
| Type | Host(s) / Network(s) |
| Content | IPs 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
| Campo | Valor |
|---|---|
| Action | Pass |
| Protocol | TCP/UDP |
| Source | LAN net |
| Destination | LAN address |
| Dest. Port | 53 (DNS) |
| Gateway | default |
| Description | DNS local |
Regla 2 — Bloquear DNS externo (fuerza a los clientes a usar Unbound)
| Campo | Valor |
|---|---|
| Action | Block |
| Protocol | TCP/UDP |
| Source | LAN net |
| Destination | any |
| Dest. Port | 53 (DNS) |
| Log | ✓ |
| Description | Bloquear DNS externo |
Regla 3 — Tráfico local sin policy routing
| Campo | Valor |
|---|---|
| Action | Pass |
| Protocol | any |
| Source | LAN net |
| Destination | RFC1918 |
| Gateway | default |
| Description | Trá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)
| Campo | Valor |
|---|---|
| Action | Pass |
| Protocol | UDP |
| Source | LAN net |
| Destination | VOIP_PROVEEDOR |
| Gateway | GW_WAN2 |
| Description | SIP/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
| Campo | Valor |
|---|---|
| Action | Pass |
| Protocol | any |
| Source | LAN net |
| Destination | any |
| Gateway | GW_FAILOVER |
| Description | Internet — 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ón | Destino | Puerto | Gateway |
|---|---|---|---|---|
| 1 | Pass | LAN address | 53 | default |
| 2 | Block | any | 53 | — |
| 3 | Pass | RFC1918 | any | default |
| 4 | Pass | VOIP_PROVEEDOR | any | GW_WAN2 |
| 5 | Pass | any | any | GW_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íntoma | Causa probable |
|---|---|
| WAN1 cae y LAN no tiene internet | La regla LAN no tiene el gateway group asignado |
| LAN navega pero el firewall no resuelve DNS en failover | Falta default gateway switching o DNS fijado a un solo gateway |
| No llego a la VLAN de servidores / VPN desde LAN | Falta la regla RFC1918 con gateway default antes de la del grupo |
| Tráfico por WAN2 sale pero no vuelve | NAT de salida en modo manual sin regla para WAN2 |
| Gateway oscila entre online y offline | Umbrales demasiado estrictos o Monitor IP que limita ICMP |
| Ambos gateways “Online” aunque uno no tiene internet | Monitor IP compartida o monitoreando el router del ISP |
| Bancos / sitios cierran sesión con balanceo | Sticky connections desactivado |
Resumen
| Componente | Configuración |
|---|---|
| Gateways | Uno por WAN, Monitor IP distinta, upstream ✓ |
| Gateway Group | Tiers distintos = failover, mismo tier = balanceo |
| DNS del firewall | Un servidor por gateway + default gateway switching |
| NAT de salida | Automático (una regla por WAN) |
| Reglas WAN | Ninguna regla pass; bloqueo implícito |
| Reglas LAN | Excepció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.