5 jul 2010

A vueltas con el MTU

Después de que mi router ADSL se muriera tuve que comprar uno nuevo, a partir de ahí lo típico: visita a la web del operador de telefonía para consultar la configuración del ADSL, configurar el router, probar la conexión, revisar la configuración, volver a probar la conexión y finalmente mirar con una mezcla de incredulidad y satisfacción la luz de conexión encendida. Una vez que que el router se enciende como un arbol de navidad empiezo a navegar por las webs de siempre. Google funciona perfectamente así que paso a Microsiervos ... pues parece que no va. Vuelvo a probar Google sigue funcionando correctamente, pruebo otra página nada, una tercera funciona bien; parece que pasa algo raro con la conexión. Pruebo a hacer un ping a una de las páginas que no funciona, el ping funciona correctamente. Confirmado pasa algo raro.


Después de un par de pruebas y consultas a Google paraece que el problema está en el MTU del router. El MTU es la Unidad Máxima de Transferencia, lo que viene a ser el paquete de datos más grande que puede recibir nuestra red, el problema consistía en que el MTU por defecto para PPoE (sobre el que funciona mi ADSL) es de 1492 bytes mientras que el de ETHERNET V2 es de 1500. Normalmente esto no resulta un problema pues los routers cuando los paquetes son demasiado grandes envían una respuesta ICMP a la máquina que realiza el envío para que esta use paquetes más pequeños; pero mi router nuevo simplemente descartaba los paquetes demasiado grandes por lo que algunas direcciones funcionaban y otras no (más información sobre Path MTU Discovery).

Para solucionar esto tenemos dos opciones cambiar el MTU en el router que sería la opción más cómoda si tenemos varias máquinas en nuestra red y tanto el router como nuestra conexión soportan el cambio o cambiar el MTU de nuestra máquina. Para cambiar el MTU de nuestra máquina en Ubuntu lo podemos probar primero con el comando ifconfig para asegurarnos de que todo funciona correctamente: ifconfig eth0 mtu 1492. Una vez que hemos comprobado que nuestra red funciona correctamente podemos hacer el cambio permanente modificando el fichero de configuración de la red en /etc/network/intefaces:

#Si nuestra interfaz es estática
iface eth0 inet static
                address 192.168.0.1
                network 192.168.0.0
                gateway 192.168.0.254
                netmask 255.255.255.0
                mtu 1492

#Si nuestra interfaz se configura con DHCP
auto eth1
                iface eth1 inet dhcp
                mtu 1492

No hay comentarios: