Tiene los síntomas de un problema de MTU : algunas conexiones TCP se congelan, de forma más o menos reproducible para un determinado comando o URL, pero sin un patrón general fácilmente discernible. Un síntoma revelador es que las sesiones ssh interactivas funcionan bien, pero las transferencias de archivos casi siempre fallan. Además, pppoe es el principal proveedor de problemas de MTU para usuarios domésticos. Así que prescribo un cheque MTU.
¿Qué es?
El m Aximum t ransmisión u nit es el tamaño máximo de un paquete a través de un enlace de red. La MTU varía de un medio de transporte a otro, por ejemplo, Ethernet por cable y wifi (802.11) tienen diferentes MTU, y los enlaces ATM (que constituyen la mayor parte de la infraestructura de larga distancia) tienen cada uno su propia MTU.
PPPOE es un protocolo encapsulado, lo que significa que cada paquete consta de unos pocos bytes de encabezado seguido por el paquete subyacente, por lo que reduce el tamaño máximo del paquete por el tamaño del encabezado.
IP permite a los enrutadores fragmentar paquetes si detectan que son demasiado grandes para el próximo salto, pero esto no siempre funciona. En teoría, se debe descubrir la MTU adecuadaautomáticamente , pero esto tampoco siempre funciona. En particular, Google sugiere que Network Manager no siempre actúa correctamente sobre la información MTU obtenida del descubrimiento de MTU, pero no sé qué versiones están afectadas o cuáles son los casos de uso problemáticos.
Cómo medirlo
Si tiene tracepath
desde Linux iputils , ejecute tracepath 8.8.8.8
para ver la MTU en la ruta al servidor DNS de Google. Si su versión de traceroute
tiene una --mtu
opción, ejecute traceroute -n --mtu 8.8.8.8
. Consulte Descubrir MTU entre mí y la IP de destino para obtener más opciones.
Al carecer de herramientas automatizadas, puede medir manualmente. Intente enviar paquetes de ping de un tamaño determinado a hosts externos que respondan a ellos, por ejemplo ping -c 1 -s 42 8.8.8.8
(en Linux; en otros sistemas, busque la documentación de su ping
comando). Sus paquetes deben pasar por valores lo suficientemente pequeños de 42 (si 42 no funciona, algo está bloqueando los pings). Para valores mayores, el paquete no pasará. 1464 es un valor máximo típico si la pieza limitante de infraestructura es su red Ethernet local. Si tiene suerte, cuando envía un paquete demasiado grande, verá un mensaje como Frag needed and DF set (mtu = 1492)
. Si no tiene suerte, siga experimentando con el valor hasta que encuentre cuál es el máximo, luego agregue 28 ( -s
especifica el tamaño de la carga útil y además hay 28 bytes de encabezados). Ver tambiénCómo optimizar su conexión a Internet utilizando MTU y RWIN en los foros de Ubuntu.
Cómo configurarlo (reemplace 1454 por la MTU que haya determinado y eth0
por el nombre de su interfaz de red)
- Como una vez (Linux): ejecutar
ifconfig eth0 mtu 1454
- Permanentemente (Debian y derivados como Ubuntu, si no usa Network Manager): Editar
/etc/network/interfaces
. Justo después de la entrada para su interfaz de red (después de la iface eth0 …
directiva), agregue una línea con pre-up ifconfig $IFACE mtu 1454
. Alternativamente, si su dirección IP es estática, puede agregar el mtu 1454
parámetro a la iface eth0 inet static
directiva.
Permanentemente (Debian y derivados como Ubuntu, con o sin Network Manager): Cree un script llamado /etc/network/if-pre-up.d/mtu
con los siguientes contenidos y hágalo ejecutable ( chmod a+rx
):
#!/bin/sh
ifconfig $IFACE mtu 1454
Recursos adicionales