Cómo diagnosticar y corregir problemas de MTU y MSS en túneles VPN IPSec/OpenVPN

El fallo de conectividad en túneles VPN corporativos (como IPsec, WireGuard o OpenVPN) suele manifestarse de forma engañosa: las peticiones de ping pequeñas funcionan correctamente, el handshake de la fase 1 y 2 se completa sin errores, pero al intentar transferir archivos grandes por SMB, cargar aplicaciones web pesadas o autenticar contra un Active Directory remoto, la sesión se congela o se desconecta.

Esta incidencia está provocada por la fragmentación de paquetes IP superpuestos cuando la cabecera de la VPN incrementa el tamaño del paquete por encima del MTU (Maximum Transmission Unit) de la red subyacente, sumado a un bloqueo de los mensajes ICMP Type 3 Code 4 por parte de firewalls intermedios.

El problema del Path MTU Discovery (PMTUD) y la sobrecarga de cabeceras

Cuando un equipo envía datos a través de un túnel cifrado, la encapsulación añade bytes extra al paquete original:

  • Ethernet estándar: MTU de 1500 bytes.
  • Sobrecarga de cifrado (IPSec/ESP): Entre 50 y 73 bytes de cabecera adicional.
  • Resultado: El paquete final cifrado alcanza los 1550 bytes, superando el límite físico de la interfaz WAN.

Si el paquete tiene activado el bit DF (Don’t Fragment), los routers intermedios descartan el paquete y envían un mensaje ICMP de rechazo («Destination Unreachable, Fragmentation Needed«). Si tu firewall o el del ISP bloquea este tráfico ICMP por seguridad, se produce un Black Hole Router (agujero negro), congelando las conexiones TCP sin previo aviso.

Solución 1: Calcular la MTU óptima mediante la consola de comandos

Antes de modificar la configuración de los firewalls o routers, se debe determinar el tamaño exacto del paquete máximo admitido sin fragmentación.

  1. Abre la consola de comandos (cmd) en un equipo cliente.
  2. Ejecuta un ping hacia el servidor remoto dentro del túnel forzando el bit DF y reduciendo progresivamente el tamaño de la carga útil (payload):

ping 192.168.1.1 -f -l 1472
  1. Si la consola responde «El paquete necesita fragmentarse pero se estableció DF», reduce el valor en intervalos de 10 bytes (ej. 1460, 1450…).
  2. Supongamos que el último valor exitoso sin fragmentar es 1412 bytes.
  3. Añade 28 bytes (correspondientes a 20 bytes de la cabecera IP + 8 bytes de la cabecera ICMP) para obtener tu MTU real:
    • 1412 + 28 = 1440 -> MTU de la interfaz VPN = 1440.

Solución 2: Ajustar el valor MSS (Maximum Segment Size) en el Firewall

En lugar de reconfigurar individualmente cada cliente o interfaz de red, la mejor práctica en redes corporativas es aplicar MSS Clamping en el firewall perimetral (Fortinet, pfSense, MikroTik, Cisco).

El tamaño MSS se calcula como:

$\text{MSS} = \text{MTU} – 40 \text{ bytes (cabeceras IP + TCP)}$

Configuración de RedValor MTU RecomendadoValor MSS Recomendado
Ethernet Estándar (Sin VPN)15001460
Túnel OpenVPN / WireGuard14201380
Túnel IPSec con WAN PPPoE13921352

Ejemplo de configuración de MSS Clamping en interfaz WAN/VPN:

  • En pfSense / OPNsense:Ve a InterfacesVPN → Activa MSS Clamping y fija el valor en 1380.
  • En MikroTik (RouterOS):Añade una regla de Mangle para reescribir los paquetes SYN:Fragmento de código/ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn action=change-mss new-mss=1380 passthrough=yes
  • En Fortinet (FortiGate):Aplica el ajuste en la interfaz VPN por CLI:Plaintextconfig system interface edit "VPN_P2P" set tcp-mss-sender 1380 set tcp-mss-receiver 1380 next end

Solución 3: Permitir tráfico ICMP «Fragmentation Needed» en las reglas de seguridad

Para asegurar que el mecanismo nativo de autodetección Path MTU Discovery (PMTUD) funcione sin pérdidas de datos:

  1. Accede a las reglas del firewall en ambos extremos de la VPN.
  2. Crea una regla de entrada (Inbound) que permita específicamente el protocolo ICMP Type 3, Code 4 desde la red WAN hacia las IP del gateway.
  3. Desactiva cualquier filtro agresivo de ICMP Blackhole que descarte paquetes ICMP de control de flujo en la interfaz externa.

Preguntas Frecuentes (FAQ)

¿Qué diferencia hay entre modificar la MTU en el cliente o la MSS en el router?

Modificar la MTU en el cliente solo soluciona el problema para esa máquina específica. Modificar el parámetro MSS (MSS Clamping) en el router intercepta las peticiones de inicio de sesión TCP (paquetes SYN) de cualquier dispositivo de la red y negocia automáticamente un tamaño de segmento seguro que cabe dentro del túnel cifrado.

¿Afecta reducir la MTU al rendimiento global de la red?

La reducción es insignificante en comparación con las caídas de conexión y la retransmisión masiva de paquetes atascados. Ajustar la MTU y la MSS al valor real elimina de raíz la latencia generada por reintentos TCP.

Deja un comentario