# Redirigir únicamente el tráfico hacia Cloudflare mediante VPN en pfSense

- Link: https://binariocero.com/redes/redirigir-unicamente-el-trafico-hacia-cloudflare-mediante-vpn-en-pfsense
- Published: 2026-02-20T14:02:53+01:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

Cuando los operadores bloquean tráfico hacia servicios protegidos por Cloudflare
durante eventos, la solución habitual es activar una VPN global. Sin embargo, eso
penaliza latencia y velocidad.

En esta guía configuraremos **pfSense** para que:

 * Solo el tráfico cuyo destino sea Cloudflare vaya por VPN
 * El resto continúe por la WAN habitual

Este procedimiento se ha validado en:

 * pfSense CE 2.8.1
 * pfSense Plus
 * OPNsense
 * RouterOS

# Nivel requerido

Configuración avanzada.
Se requieren conocimientos en:

 * Interfaces virtuales
 * Gateways personalizados
 * Policy Routing
 * Alias en firewall
 * VPN WireGuard

Se recomienda entorno de pruebas antes de producción.

# Requisitos

## Sistema compatible

No válido en routers domésticos (ASUS, FRITZ!Box, TP-Link, etc.).

Necesario:

 * Cliente WireGuard u OpenVPN
 * Soporte para interfaz virtual de túnel
 * Posibilidad de crear alias
 * Policy Routing por gateway específico

## Requisitos hardware mínimos

| Componente | Mínimo | Recomendado | 
| CPU | x86-64 1 GHz | Intel i5 | 
| RAM | 2 GB | 4–8 GB | 
| Disco | 32 GB | 256 GB | 
| NIC | 2 (WAN + LAN) | 3+ |

# Servicio VPN

Debe proporcionar configuración WireGuard.

Opciones:

| Opción | Protocolo | Coste | Perfil | 
| Cloudflare WARP | WireGuard | Gratis | Pruebas |

# Instalación WireGuard en pfSense

Ruta:

    ```wp-block-preformatted
    System → Package Manager → Available Packages
    ```

Instalar **WireGuard**.

# Configuración del túnel WireGuard

Ir a:

    ```wp-block-preformatted
    VPN → WireGuard → Add Tunnel
    ```

## Ejemplo de fichero WireGuard (.conf)

    ```wp-block-code
    [Interface]
    PrivateKey = xxxxx
    Address = 10.0.0.2/32
    DNS = 1.1.1.1[Peer]
    PublicKey = yyyyy
    PresharedKey = zzzzz
    AllowedIPs = 0.0.0.0/0
    Endpoint = vpn.ejemplo.com:51820
    PersistentKeepalive = 25
    ```

## Configuración del túnel

En "Add Tunnel":

 * ✔ Enable
 * Description: WG_TUNEL
 * Listen Port: opcional
 * Interface Keys → pegar PrivateKey
 * Public Key se genera automáticamente

Guardar.

## Añadir Peer

Pulsar **Add Peer** y configurar:

 * ✔ Enable
 * Tunnel: WG_TUNEL
 * Dynamic Endpoint: desmarcado
 * Endpoint: vpn.ejemplo.com
 * Port: 51820
 * Keepalive: 25
 * Public Key: yyyyy
 * Preshared Key: zzzzz (si existe)
 * Allowed IPs:
    - 0.0.0.0
    - Mask: 0

Guardar.

## Activar WireGuard

Ir a:

    ```wp-block-preformatted
    VPN → WireGuard → Settings
    ```

✔ Enable WireGuard

Guardar.

Comprobar en:

    ```wp-block-preformatted
    Status → WireGuard
    ```

Debe aparecer handshake activo.

# Crear interfaz virtual

Ruta:

    ```wp-block-preformatted
    Interfaces → Assignments
    ```

En "Available network ports":

Seleccionar:

    ```wp-block-preformatted
    tun_wg0
    ```

`Add → Save → Apply`

Editar interfaz creada (OPT1).

Configurar:

 * ✔ Enable
 * Description: WG_TUNEL
 * IPv4 Configuration Type: Static IPv4
 * IPv6: None
 * IPv4 Address:
    - 10.0.0.2
    - /32

Guardar y aplicar.

# Crear Gateway

Ruta:

    ```wp-block-preformatted
    System → Routing → Gateways → Add
    ```

Configurar:

 * Disabled: desmarcado
 * Interface: WG_TUNEL
 * Address Family: IPv4
 * Name: GW_WIREGUARD
 * Gateway: 10.0.0.2
 * Gateway Monitoring: desmarcado
 * Gateway Action: desmarcado
 * Monitor IP: 10.0.0.1

En Advanced:

✔ Use non-local gateway through interface specific route

Guardar y Apply.

# Crear Alias

Ruta:

    ```wp-block-preformatted
    Firewall → Aliases
    ```

## Alias origen

Nombre: ORIGEN_TUNEL

Tipo: Host(s)

Añadir IPs locales deseadas.

Guardar.

## Alias destino (Cloudflare)

Descargar redes IPv4 oficiales desde:

Cloudflare

URL directa:

    ```wp-block-preformatted
    https://www.cloudflare.com/ips-v4/
    ```

Crear alias:

 * Nombre: DESTINO_CLOUDFLARE
 * Tipo: Network(s)

Importar subredes manualmente
o usar tipo URL con:

 * Update Frequency: 1 día

Guardar y Apply Changes.

# Crear regla Firewall

Ruta:

    ```wp-block-preformatted
    Firewall → Rules → LAN
    ```

Add Rule (abajo).

Configurar:

 * Action: Pass
 * Interface: LAN
 * Address Family: IPv4
 * Protocol: any
 * Source: ORIGEN_TUNEL
 * Destination: DESTINO_CLOUDFLARE

En Advanced:

 * Gateway: GW_WIREGUARD

Guardar.

Mover la regla a la **segunda posición**.

Si queda al final, no aplicará correctamente.

# Verificación

Ejecutar:

    ```wp-block-preformatted
    tracert 104.16.0.1
    ```

(o cualquier IP de Cloudflare)

Debe salir por VPN.

Probar otra web normal:

Debe salir por WAN habitual.

# Posibles errores

| Problema | Causa | 
| No hay tráfico por VPN | Regla mal posicionada | 
| Gateway aparece down | Monitor IP incorrecta | 
| No hay handshake | Endpoint o claves erróneas | 
| Todo el tráfico va por VPN | AllowedIPs mal configurado |

# Resultado final

Con esta configuración:

 * Solo tráfico hacia Cloudflare pasa por VPN
 * El resto mantiene latencia y velocidad normales
 * Servicios con geolocalización no se ven afectados
 * Juegos y streaming no sufren penalización
