miércoles, junio 17, 2009

Corrigiendo el error de navegación de algunos sitios con Linux

Desde hace mucho que tenía problemas para entrar a un sitio en específico, pero siempre me incliné por pensar en que la página era una porquería (bueno, un poco y sí), el problema es que esa página es la de mi tarjeta de crédito, de manera que no podía ver mi estado de cuenta ni nada... Preguntando a un grupo de usuarios de Linux descubrí que sólo nos pasaba a nosotros los linuxeros, el resto podía entrar a la página, y de hecho no eran las únicas páginas con las que pasaba, así que me puse a investigar un poco y descubrí el problema...

Primero si tienen Linux y quieren probar, intenten ingresar a cualquiera de estos 2 sitios:
http://www.pacificard.com.ec/
http://www.presidencia.gov.ec/

Lo más seguro es que se quede eternamente tratando de ingresar hasta que les envíe un mensaje diciendo que el servidor ha reiniciado la conexión o el famoso mensaje "Connection reset by peer".

La única característica en común es que ambos sitios por momentos no responden suficientemente rápido, pero eso en una máquina con Windows por ejemplo lo único que hace es que la página se cargue de manera más lenta, pero nada más...

Esto me tuvo intrigado por un buen tiempo hasta que logré dar con la solución, el "problema" se debe a una mejora del núcleo de linux, a partir de las versiones 2.6.17 en adelante... Se hizo un cambio en la manera en la que se mantenían las conexiones, descartando las conexiones lentas para poder acelerar las descargas, por eso muchos al probar por primera vez Linux decían que hasta se podían bajar cosas más rápido que en Windows... y bueno, es verdad, pero eso traía un precio, algunos sitios lentos o con problemas de latencia dejan automáticamente de funcionar con nuestras máquinas.

En mi caso como realmente necesitaba ingresar a esa página, tuve que "deshacer" el cambio para que mi compu se comporte igual que el resto de las máquinas... Por suerte no era necesario nada más que agregar una línea a un archivo, lo que tienen que hacer es editar el archivo /etc/sysctl.conf (al menos esa es la ruta en Ubuntu), por ejemplo pueden presionar ALT+F2 y en la caja de ejecución escribir este comando:

gksu gedit /etc/sysctl.conf

Y al final del archivo copian y pegan estas líneas:

# Workaround for TCP Window Scaling bugs in other ppl's equipment:
net.ipv4.tcp_wmem = 4096 16384 512000
net.ipv4.tcp_rmem = 4096 87380 512000

Guardan el archivo y listo, bastaría con reiniciar la máquina para que se hagan efectivos los cambios, si no quieren reiniciar la máquina, pueden hacer que los cambios se efectivicen ejecutando el siguiente comando desde una terminal:

sudo sysctl -p

Y listo, pueden volver a intentar a las páginas de prueba y veran la diferencia... El único detalle es que ya no tendrán la "acelerada" de descarga que tenía antes. Pero bue, lo más probable es que inclusive otras páginas que tenían problemas ahora se puedan navegar sin complicaciones.

No hay comentarios.: