# 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-2
- Published: 2026-02-20T14:08:37+01:00
- Author: Binario 0

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

Cuando se producen bloqueos hacia servicios protegidos por Cloudflare, muchos usuarios
optan por activar una VPN global. El inconveniente es claro: todo el tráfico pasa
por el túnel, afectando rendimiento y latencia.

La solución que vamos a implementar aquí consiste en aplicar **policy routing**,
enviando exclusivamente el tráfico cuyo destino sean redes de Cloudflare a través
de una VPN WireGuard, manteniendo el resto del tráfico por la salida WAN habitual.

El procedimiento está probado sobre:

 * pfSense CE 2.8.1
 * pfSense Plus
 * OPNsense
 * RouterOS

# Nivel técnico requerido

Esta configuración no es básica. Es necesario conocer:

 * Creación de interfaces virtuales
 * Gestión avanzada de gateways
 * Reglas de firewall con gateway específico
 * Conceptos de WireGuard
 * Alias dinámicos

Se recomienda probar primero en laboratorio.

# 1. Requisitos previos

## Router compatible

No es viable en routers domésticos convencionales. Se requiere:

 * Cliente WireGuard u OpenVPN
 * Soporte de interfaz virtual del túnel
 * Creación de alias
 * Policy routing por gateway

## Hardware mínimo recomendado

| Elemento | Mínimo | Recomendado | 
| CPU | x86-64 1 GHz | Intel i5 o superior | 
| RAM | 2 GB | 4–8 GB | 
| Disco | 32 GB | 256 GB | 
| Interfaces | 2 | 3 o más |

# 2. Servicio VPN

Necesitamos un proveedor que ofrezca configuración WireGuard descargable.

Opciones habituales:

| Alternativa | Protocolo | Coste | Uso recomendado | 
| Cloudflare WARP | WireGuard | Gratis | Pruebas |

# 3. Instalación de WireGuard en pfSense

Acceder a:

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

Instalar paquete **WireGuard**.

# 4. Configuración del túnel WireGuard

Ir a:

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

## Ejemplo de archivo de configuración

Este sería un ejemplo típico proporcionado por el proveedor:

    ```wp-block-preformatted
    [Interface]PrivateKey = xxxxxAddress = 10.10.0.2/32DNS = 1.1.1.1[Peer]PublicKey = yyyyyPresharedKey = zzzzzAllowedIPs = 0.0.0.0/0Endpoint = vpn.ejemplo.com:51820PersistentKeepalive = 25
    ```

## Parámetros del túnel

En la sección Add Tunnel:

 * Enable → activado
 * Description → WG_TUNEL
 * Listen Port → opcional
 * Interface Keys → pegar PrivateKey

Guardar.

## Configuración del Peer

Seleccionar Add Peer y definir:

 * Enable → activado
 * Tunnel → WG_TUNEL
 * Dynamic Endpoint → desactivado
 * Endpoint → vpn.ejemplo.com
 * Port → 51820
 * Keepalive → 25
 * Public Key → yyyyy
 * Preshared Key → zzzzz (si existe)
 * Allowed IPs → 0.0.0.0 / 0

Guardar.

## Activar servicio

Ir a:

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

Marcar Enable.

Verificar estado en:

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

Debe existir intercambio de handshake.

# 5. Asignación de interfaz

Ruta:

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

En Available Network Ports seleccionar:

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

Add → Save → Apply.

Editar interfaz creada:

 * Enable
 * Description → WG_TUNEL
 * IPv4 Configuration Type → Static IPv4
 * IPv6 → None
 * IPv4 Address → 10.10.0.2 /32

Guardar y aplicar.

# 6. Configuración del Gateway

Ir a:

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

Definir:

 * Interface → WG_TUNEL
 * Address Family → IPv4
 * Name → GW_WIREGUARD
 * Gateway → 10.10.0.2
 * Monitor IP → 10.10.0.1
 * Gateway Monitoring → desactivado
 * Gateway Action → desactivado

En Advanced activar:

✔ Use non-local gateway through interface specific route

Guardar y aplicar cambios.

# 7. Creación de Alias

Ir a:

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

## Alias de origen

Nombre: ORIGEN_VPN
Tipo: Host(s)

Añadir IPs locales que queremos que puedan tunelizar tráfico hacia Cloudflare.

Guardar.

## Alias de destino (Cloudflare)

Obtener listado oficial de redes IPv4 desde:

Cloudflare

URL:

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

Crear alias:

 * Nombre → REDES_CLOUDFLARE
 * Tipo → Network(s)

Importar todas las subredes manualmente
o usar tipo URL con actualización cada 1
día.

Guardar y Apply Changes.

# 8. Creación de regla de firewall

Acceder a:

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

Crear nueva regla (Add, al final inicialmente):

 * Action → Pass
 * Interface → LAN
 * Address Family → IPv4
 * Protocol → any
 * Source → ORIGEN_VPN
 * Destination → REDES_CLOUDFLARE

En Advanced Options:

 * Gateway → GW_WIREGUARD

Guardar.

⚠ Reordenar la regla y colocarla en segunda posición.

Si permanece al final, quedará anulada por reglas superiores.

# 9. Comprobación del funcionamiento

Ejecutar desde un equipo cliente:

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

La ruta debe salir por el túnel VPN.

Probar con otro destino fuera de Cloudflare: debe salir por WAN.

# Problemas frecuentes

| Síntoma | Posible causa | 
| No pasa tráfico por VPN | Regla mal posicionada | 
| Gateway aparece Down | Monitor IP incorrecta | 
| Sin handshake | Endpoint o claves erróneas | 
| Todo el tráfico usa VPN | AllowedIPs mal definido |

# Resultado final

Tras completar la configuración:

 * Solo tráfico con destino a Cloudflare se enruta por VPN
 * El resto mantiene la salida normal
 * Se minimiza impacto en latencia
 * No se altera geolocalización general
