Hola El 02/Jan/06 - 16:41, Iñaki dijo: > El Jueves, 1 de Diciembre de 2005 16:28, Iván Forcada Atienza escribió: > || > Sabeis si con esta combinación se puede hacer? y con el cliente de > || > windows XP? Es verdad que en windows XP hay que añadir MTU al registro y > || > que esos cambios se aplican al reiniciar, pero si en el reinicio coge > || > los datos de DHCP, ya estaria iniciando con la MTU proporcionada o ¿no? > || > || Parece que no vas a poder. No obstante, si lo consigues cuenta cómo ;-). > || Yo al final tuve que usar iptables, como te comentaba en el otro correo. > > Iván, ¿podrías mostrarme la regla de Iptables que usas para forzar a los > clientes a usar un determinado MTU? Yo he probado algunas pero no logro que > funcionen. Es una regla en el gateway a inet. No es que obligue a los clientes a usar un determinado MTU, sino que adapta la conexión TCP para que se establezca con un MSS apropiado para que, posteriormente, en el nivel 3 se generen datagramas IP con el MTU adecuado. Os esplico un poco. Hablo de memoria, no es que tenga la teoría de redes demasiado fresca ;-) así que si meto la gamba con algo, que alguien grite :-D. Sé que hay un hilo actual sobre esto que no he podido seguir al 100%, así que espero no repetir cosas que ya se hayan dicho. Aquí hay dos cosas distintas, el MTU, que depende del nivel 3, y el MSS, nivel 4(TCP). El MTU es el MTU, y no debería hacer falta cambiarlo ya que la teoría dice que un router debe ser capaz de fragmentar. Otra cosa es que interese cambiarlo por cuestiones de pérdidas de rendimiento en casos de fragmentación. Una opción es activar pmtud (activado por defecto en debian) lo cual puede ayudar en algunos casos, y otra es poner el mtu a manopla. La historia es que tengas que cambiarselo a 500 puestos, por ejemplo... y más aún si son güin2... me entran palpitaciones sólo de pensarlo!!. El asunto es que la fragmentación IP debería de funcionar en el router-gateway que está dando salida a inet con pppoe generalmente, lo que nos evitaría tener que tocar nada (otra cosa es que quisiéramos hacerlo para evitar fragmentaciones y pérdidas de rencimiento). Pero... a mi no me funciona... no soy capaz de que las máquinas dentro de una LAN pasen paquetes de 1500 bytes a través del router-gateway con pppoe hacia inet. No tengo ni idea de porqué, le he dado 20000 vueltas sin éxito. Sé que no es problema de iptables... no sé si será un bug del kernel (no creo)... seguramente algo se me escape ... pero de momento así está la cosa. Creo que el pmtud tampoco funciona correctamente puesto que aun estando activado (por defecto) la situación no cambia. Lo que hice yo fue digamos una chapucilla. Lo que yo hice es disminuir el MSS del gateway. La fragmentación IP (MTU) es digamos un método reactivo: solo ocurre cuando "no cabe". Sin embargo, el MSS podríamos decir que es algo preventivo. El MSS se establece en los paquetes SYN al iniciarse la conexión, en un campo variable de la cabecera TCP si no recuerdo mal. El servidor (al otro lado) cuando recibe un valor de MSS no devuelve paquetes de MSS mayor. Si calculamos bien el MSS para que el total, tras pasar por el nivel 3 no sobrepase el MTU, hemos solucionado parcialmente el problema. Es decir, si el MTU es 1492, el MSS máximo debería ser de 40 bytes menos. Lo malo es que los clientes dentro de una ethernet usan un MSS de 1500-40 , al igual que los servidores destino, que muchas veces también están en una ethernet, por lo que estamos en las mismas: o cambiamos el MSS de todos los clientes o nada. Ahi es donde entra en juego iptables. La regla que os voy a poner ahora lo que hace es coger los paquetes SYN y plantarles un MSS calculado a partir del MTU de la interfaz de salida, de manera que cuando se establezca la conexión entre los dos extremos, se haga con segmentos que quepan en los 1492 bytes de MTU que (generalmente) deberíamos tener con pppoe. Digo que es una chapu porque aunque funciona (al menos a mi), no es lo suyo. Además, es solo para TCP :-(. No obstante, yo lo uso y hasta ahora no te tenido ningun problema. La regla es la siguiente: $IPTABLES -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu En ella se calcula el MSS en funcion del MTU, pero también se puede forzar un MSS concreto. La regla va en el gateway-router que da salida a inet. No sé si esto es lo mejor, aunque a mi me funciona. Si a alguien se le ocurre algo más elegante pues guay :-). Espero que te(os) sirva, y perdón por el rollo que os he metido !!! Algunos links que info sobre el tema: - http://www.tcpipguide.com/free/t_TCPMaximumSegmentSizeMSSandRelationshiptoIPDatagra.htm - http://66.249.93.104/search?q=cache:D73JtsqSIHsJ:www.enterprisenetworksandservers.com/monthly/art.php/120+%22ip+fragmentation%22+linux+mtu&hl=es&ie=UTF-8 (aaarggg... el server está caido... solo en caché de google :-( ) - http://www.akadia.com/services/pppoe_iptables.html > Gracias y un saludo. De nada ;-). Saludos!! > -- > y hasta aquí puedo leer... > -- ___________________________________________________________________ Iván Forcada Atienza: correo: ivan@forcada.info ------------------------------------------------------------------- "Software is like sex: it's better when it's free" (Linus Torvalds)
Attachment:
pgpwHwsvheFtT.pgp
Description: PGP signature