WireGuard no tiene ninguna negociación de MTU. Cifra lo que le entregue la interfaz y envía el resultado, y si el paquete encapsulado supera la ruta, se descarta o se fragmenta en algún lugar que no puedes ver. Alguien tiene que elegir la MTU de la interfaz, y ese alguien es la herramienta que levantó la interfaz.

Hay tres candidatos, y es fácil confundirlos.

Tres lugares de los que puede venir el valor

El valor puede fijarse explícitamente en la configuración de la interfaz, calcularlo la herramienta de configuración a partir de la información de ruta, o fijarlo cualquier gestor de red que sea dueño de la interfaz. Una llamada normal de wg no hace nada de eso, porque wg solo gestiona claves y pares. La MTU vive en la interfaz de red, y por eso ip link show wg0 es donde la lees.

Si no tienes claro qué caso se aplica, lee primero la MTU y luego averigua quién inició la interfaz.

Decide según quién ejecuta la interfaz

Si la inicia wg-quick, gana una línea MTU explícita y, si no, calcula un valor. Si la inicia un gestor de red, decide el perfil de ese gestor. Si la inicia un entorno de ejecución de contenedores o un cliente de proveedor, lee su documentación en lugar de suponer el comportamiento de wg-quick.

La decisión no es qué número es mejor en abstracto. Es qué componente puedes configurar de verdad.

Qué hace el cálculo por defecto

wg-quick busca la ruta hasta el extremo del par, toma la MTU de esa interfaz de salida y resta la sobrecarga de encapsulación. Con una cabecera externa IPv4 son unos 60 bytes; con IPv6 son unos 80. El resultado se limita para que una ruta de 1500 bytes dé 1420 en lugar de un valor que solo funciona en una familia de direcciones. Es un valor por defecto razonable, no una medición de tu ruta.

No puede saber nada de un túnel posterior, un enlace móvil o una ruta ICMP filtrada.

El límite esconde una pregunta real. Si tu ruta es de verdad 9000 bytes de extremo a extremo, 1420 deja rendimiento sobre la mesa, y si la ruta es de 1400, 1420 ya es demasiado grande. El valor por defecto es un compromiso, y hay que tratarlo como tal.

Cuando la ruta cambia bajo tus pies

Un portátil que pasa de Ethernet a Wi-Fi y luego al punto de acceso de un móvil conserva la MTU de la interfaz con la que empezó. Puede que la ruta externa ahora sea más pequeña, y nada vuelve a negociar. Los túneles anidados lo empeoran, porque cada capa resta su propia sobrecarga del mismo presupuesto. El valor que funcionaba en la oficina no es el valor que funciona en el aeropuerto.

Un handshake reciente demuestra que las claves funcionan. No demuestra nada sobre si caben los paquetes grandes.

Prueba un número cada vez

Mantén la misma aplicación y el mismo destino, cambia un valor y mide. ping -M do -s 1372 prueba un paquete de 1400 bytes con el bit DF activado, y esa es la forma de prueba que quieres. Si las peticiones pequeñas funcionan y las grandes se atascan, tienes un problema de tamaño y no de enrutamiento.

Cambia solo la MTU. Ajustar varias opciones de paquete a la vez no te dice cuál importaba.

Y no esperes que un cambio de MTU arregle una ruta de retorno que falta, una regla de reenvío o un fallo de DNS. También producen síntomas de falta de tráfico, y tienen sus propias pruebas. El manual de wg-quick documenta la selección automática.

Artículos relacionados