[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: MTU para una LAN, fragmentar paquetes



2005-12-29 21:19 +0100, Iñaki <ibc2@euskalnet.net>:
> Hola, hoy he tenido el supongo que clásico problema de poder acceder desde
> ordenadores en una LAN a ciertas webs y no a otras.

Clásico problema con interesantes posibilidades. ¿Cuántas webs dan
problemas? Quizás la pregunta te permita acotar de primeras la fuente
del problema.


> Después de comprobar los DNS's y demás se me ha ocurrido probar a reducir el
> MTU del interfaz LAN de 1500 a 1492 y ya funciona.
>
> El caso es que el router es una Debian con ADLS por ppp0 con MTU 1492 (lo
> típico), y la LAN es eth1 con MTU 1500 (lo típico también). Pensaba que nunca
> habría ningún problema pues que yo sepa, si una máquina envía un paquete de
> un tamaño mayor al MTU de un tramo de la red, es el router correspondiente el
> que se encarga de fragmentar el paquete. Eso es al menos lo que hecho en
> muchos ejercicios teóricos en la universidad.

Correcto en cuanto a la teoría, pero en la práctica una máquina puede
estar mal configurada. Supón que una de las webs esté detrás de un
cortafuegos que sólo debe dejar pasar tráfico TCP dirigido al puerto
80. Una traducción de dicha regla que no tenga en cuenta la
fragmentación en una máquina basada en iptables de Linux llevaría a
descartar todos los fragmentos, por no llevar cabecera TCP (como se
explica en el packet-filtering-HOWTO. Esto también es aplicable a tu
router, sobre todo en las respuestas, y puede no ser por error sino
por eficiencia (con algo de mala uva si no se responde con un ICMP
"Destination Unreachable" con causa "4 = fragmentation needed and DF
set").

Supongo que puede haber más casos, pero antes de buscarlos convendría
intentar definir las causas. Si el problema está en la fragmentación y
se ve durante la navegación web, puedes intentar de nuevo buscar al
culpable. El tráfico web es mayoritariamente unidireccional, con lo
que el culpable parecería ser tu máquina. En las páginas que fallan,
¿se cumple esta regla? Por otro lado, una captura de paquetes de las
páginas que se ven debería establecer si los paquetes que recibes
superan o no los 1492 de MTU.


> Pero lo que yo me pregunto es porqué razón no lo hace el router
> automáticamente sin decirle nada, ¿acaso no fragmenta los paquetes IP de
> tamaño superior transparentemente sin que la máquina origen se entere? pues
> anda que no lo he hecho veces en papel...

Debería fragmentarlos, pero habría que comprobarlo. No tengo equipo
para hacerlo, pero quizás el comparar el resultado de lanzar
"traceroute -M want" y "traceroute -M dont" te ayude a ver dónde está
el problema. Si no, quizás puedas mirar como funciona "tracepath" y
ver si es posible enviar un UDP de 1500 pero que la respuesta sea
pequeña, para así tratar de reducir la problemática del MTU sólo a la
ida (si no importase la vuelta, la serie "ping", "ping -s 1486" y
"ping -s 1500" debería dar la respuesta).


> Supongo que al hacer "ifconfig eth0 mtu 1492" estoy obligando a que los
> equipos de la LAN envíen tramas de tamaño máximo 1492, pero la cosa es que no
> debería ser así,

¿Deber? No es algo necesario en IPv4, pero es una labor social que
retira trabajo a todos los equipos que tienen que manejar los
fragmentos (y de paso aumenta tu rendimiento visible) y que no está de
más aplicar. De hecho, la fragmentación es tan enojosa como para que
IPv6 no la soporte.


> la máquina de la LAN envía a 1500 porque la red que usa es
> una Ethernet, y luego el router (Debian) debería fragmentar la trama sin que
> el ordenador local se entere. ¿No es así?

Sí, así debería ser.


> En caso de que no esté equivocado, ¿qué hay que hacer para habilitar la
> fragmentación de paquetes en el router Debian? ¿algún módulo?

No creo que el problema sea el ejecutar la fragmentación, sino el
trato del paquete fragmentado por tu máquina o por máquinas ajenas. A
ver qué descubres.

--
Gonzalo HIGUERA DÍAZ <gonhidi@gmail.com>



Reply to: