Al igual que Javier, tengo problemas con Speedy: navegando por paginas Web aparece un error aleatorio que me obliga a apretar F5 cada cierto tiempo.
Es bastante molesto hacer eso a mano, asi que hice un mini script para automatizar la tarea. Les presento a Hammer of Thor, un Proxy SOCKS que cuando detecta el error puntual de desconexion de Speedy sigue insistiendo hasta que logra cargar la página.
Técnicamente hablando, de forma aleatoria se genera un paquete IP con el flag RST activado, generando que efectivamente se cierre la conexión. Lo extraño es que ese paquete llega unos pocos milisegundos más tarde del saludo de tres vias. Cosa 'e mandinga dirá alguno.
El programa está hecho en Python usando Twisted, e implementa de forma casera el protocolo SOCKS v5 siguiendo la RFC. Espero poder sacar una nueva version que entienda tambien v4 y Proxy HTTP, pero mi tiempo libre es poco. Se aceptan contribuciones :)
Actualización 12 de Octubre: Parece que la causa de fondo es en realidad un "TCP reset attack"; para mas detalles mirar el thread de la lista de Ubuntu. Una alternativa al Martillo de Thor es filtrar los paquetes RST; por ejemplo con iptables para Linux se puede hacer:
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -m recent --set --name thor --rdest -j ACCEPTLa idea es muy similar al Martillo de Thor: si llega un RST antes de que se cumpla 1 segundo desde que se inició la conexion, descartarlo. Este es un problema que seguro habrá que escalarlo a la CNC, ¿no?.
iptables -A INPUT -p tcp -m tcp --tcp-flag RST RST -m state --state ESTABLISHED -m recent --name thor --rcheck --rsource --seconds 1 -j DROP
18 comentarios:
Gracias Alejo, por lo que estuvimos comentando en Ubuntu-Ar es mucho más probable si tenés algún SO que no sea Windows.
https://lists.ubuntu.com/archives/ubuntu-ar/2010-September/033428.html
Lo pruebo y lo difundo. :-)
Saludos
Excelente!
Ahi estuve leyendo el tread en la lista, parece que todos llegamos a las mismas conclusiones.
Al Proxy seguro que le faltan pulir varios detalles, entre ellos el timeout de espera. Una desventaja del HoT es que hace la navegacion ligeramente más lenta.
(aunque siempre es mejor el 70% de algo que el 0% de nada)
Muy bueno che! lo estoy usando y funciona de 10, ya me estaba volviendo loco esto, al menos sirve para zafar hasta que los de speedy decidan ponerse las pilas...
Alejo:
Infinitas gracias por tu aporte desinteresado. Ya estoy probando tu hammer y no noto para nada la ralentización de velocidad que indicás.
Será que yo siempre escribo bastante mas que lo que navego ;-)
Saludos
Excelente!
Esto me viene re bien. En el trabajo estuvimos con este drama. Va a ser fácil poner en funcionamiento este script porque todos usamos Linux.
Gracias por este aporte.
Funciona muy bien, gracias me estaba volviendo loco con el F5!!!
Hola Alejo, te cuento que el problema tambien se da con mi fono con symbian. Se puede usar HoT con twisted 9.0.0-1?
Gracias
otra cosa que note es que con windows 7 se nota menos que con win xp :S. Como siempre MS esconde los problemas de fondo :(
German,
HoT solo usa una pequeña parte del framework Twisted, por lo que estimo que deberia funcionar sin mayores complicaciones.
En caso de que funcione, ¿podrás escribir alguna mini guia, asi lo agrego en la documentacion?
Gracias!
Lo estoy usando en este momento con esa version de twisted sin problemas aparentemente. Te cuento que use esta version porque es un paquete precompilado que uso en mi NAS (un WD con un linux compactito) y es la ultima version que compilo la gente que administra el repositorio. Resumiendo, HoT funcionando en un NAS WD mybook WE. Tengo que hacer algo para usar mi fono porque solo acepta http proxy.
y pensé que estaba loco, que estaba solo... yo noté lo mismo con los RST que llegaban a mi conexión. Esto es un problema feo, no se si un error porque son idiotas o queriendo, porque son forros, lo importante es que speedy le esta pifiando feo con esto. No se si le pasó a alguno pero usar iPod/iPhones/iPads, en fin cualquier cosa que use safari se hace imposible con este problema, los otros navegadores como q no son tan sensibles pero el problema se nota igual!
Tiene buena pinta.
Para hacer andar esto en Tomato, hay que cargar antes el módulo de ipt_recent!
Hola Alejo, soy un usuario de OSX y estoy sufriendo el mismo problema. Quería consultarte si sabes como sería la sintaxis que utilizas en iptables para ipfw. Te agradecería si podés darme una mano.
steppenwolf,
No, no conozco como hacerlo en OSX. Probaste usar Hammer of Thor? Tengo entendido que con Firefox funciona bien.
Hola cuando quiero descarlar el script me dice que no esta disponible. Podrìas chequear el upload? gracias.
Cómo utilizo el iptables?
Gracias.
Camilo.
camirie@gmail.com
@Camilo,
Acabo de chequearlo y la descarga esta funcionando lo mas bien.
Sobre iptables, son dos reglas para que ejecutes en Linux. Si estas usando Ubuntu deberias primero hacer:
sudo bash
y despues ejecutar los dos comandos.
Para mitigar el problema si estan usando haciendo NAT con linux. Es basicamente lo mismo pero usando conntrack.
iptables -I FORWARD -p tcp --dport 80 -m conntrack --ctstate NEW -m recent --set --name thor --rdest -j ACCEPT
iptables -I FORWARD -p tcp --sport 80 -m tcp --tcp-flag RST RST -m conntrack --ctstate ESTABLISHED,RELATED -m recent --name thor --rcheck --rsource --seconds 1 -j DROP
Para mitigar el problema si estan usando haciendo NAT con linux. Es basicamente lo mismo pero usando conntrack.
iptables -I FORWARD -p tcp --dport 80 -m conntrack --ctstate NEW -m recent --set --name thor --rdest -j ACCEPT
iptables -I FORWARD -p tcp --sport 80 -m tcp --tcp-flag RST RST -m conntrack --ctstate ESTABLISHED,RELATED -m recent --name thor --rcheck --rsource --seconds 1 -j DROP
Publicar un comentario