Por fin veo la luz con el dsl504t

Moderador: koerma

Por fin veo la luz con el dsl504t

Notapor paspal el 14 Oct 2005, 12:05

Hola, llevo casi una semana con el problema del 504t, o sea, ke con emule se cansa de funcionar i deja de funcionar, no pierde las fuentes , pero no le da la gana de bajar. despues de mucho leer , parece ser ke se blokea al recibir tantas conexiones, lo ke se blokea es el router, ehhhh. bueno pues llevo dos dias ke el emule no me baja de 30, o sea ke funciona, como? pues haceis lo siguiente:
en windows xp , inicio , ejecutar, i escribis cmd, dais a intro
despues escribis telnet 192.168.1.1, ke es la ip interna del router. despues os saldra una pantalla ke pone login, escribis root i en password, poneis admin, o el ke tengais vosotros puesto en vuestro 504t, i despues escribis: # echo 2048 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
despues exit i salis de la consola del router, cada vez ke lo reinicies tendreis ke acer esto. de todas formas os pego el texto de un fichero woord ke e encontrado en el emule i ke es de ahi de donde lo e sacado,



Solución a la inestabilidad con Emule d.link dsl-504t

Me gustaría compartir con todo el mundo la solución que he encontrado con el problema de este Router y el emule cuando hay muchas conexiones o bien se usa la red Kademlia. Como algunos sabréis este Router (y me imagino que esto es aplicable a otros routers del mismo fabricante, e incluso de otros fabricantes) está basado en Linux. Pues bien, he descubierto que el problema reside en que por firwmare está limitado a una cantidad máxima de conexiones NAT. Si se excede ésta, el router se cuelga y la conexión deja de responder.
Para solucionar esto, debéis hacer telnet al router:

-> telnet 192.168.1.1

Entonces como login: root y como password: admin (el que tengáis en la web del router si lo cambiáis)

Entonces llegareis al terminal Linux del router:

BusyBox v0.61.pre (2004.07.21-12:17+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

El archivo que tenemos que cambiar en cuestión es el siguiente (si haceis un cat vereis el valor que tiene):

# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max
1024

Lo queremos cambiar a 2048:

# echo 2048 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max

Et voilà! Teóricamente os deberían desaparecer las inestabilidades (probad a meter 400-500 conexiones con el emule a ver que tal). Teoricamente el router soporta un valor maximo de ip_conntrack_max de 2500 pero yo recomiendo provar con 2048.


Ya podéis hacer un exit. La mala noticia es que este cambio se pierde cada vez que apagáisel router :( Para que fuera permanente habría que guardarlo en el firmware y de momento no se como hacerlo todavía.

Espero que os ayude como me ha ayudado a mi, comentaros que he puesto en contacto con Dlink a ver si sacan un Firmware para corregir esto.
PD. Si quereis podeis ver cosas wais en la consola:

Si hacéis un cat /proc/cpuinfo vereis información sobre la pequeña CPU que lleva el router :) y si haceis un cat /proc/version veréis la versión de linux que corre :)
Actualización del tutorial:

He continuado investigando sobre la arquitectura NAT de linux y he llegado a conclusiones importantes. La primera es que mi anterior solución al problema de la estabilidad de sus routers y programas p2p que consistía en incrementar el tamaño máximo de entradas NAT de 1024 a 2048 era incorrecto. Si bien esto me ayudó a aumentar el tiempo que tardaba el router en saturarse, no era más que un mero parche temporal que retrasaba lo inevitable: la saturación de la tabla NAT. Pero después de investigar en documentación técnica, foros y otras fuentes de información he llegado a una solución que parece definitiva y efectiva.

Básicamente el problema no está en el tamaño de la tabla NAT en si mismo sino en que se juntan dos problemas: por un lado, el programa p2p en cuestión (p.e.emule) lanza una cantidad de masiva de conexiones, muchas de las cuales se quedan en un estado "established" pero sin tráfico alguno, las denominadas conexiones fantasma, que se van acumulando y acumulando y acumulando, pueden comprobar esto con el siguiente comando:

#cat /proc/net/ip_conntrack | grep "tcp" -c (para conexiones TCP)
#cat /proc/net/ip_conntrack | grep "udp" -c (para UDP, emule usa de este tipo tb)

Prueben a lanzar el programa p2p en cuestión y a monitorizar periódicamente las conexiones, verán que comienzan a aumentar y aumentar sin parar hasta que llegan al limite (por defecto, 1024 para mi DLink 504T) y el router se cuelga.

Para rematarlo del todo se ha juntado con un segundo problema: los timeouts de limpieza de la tabla NAT que incorpora por defecto el router son muy largos, demasiados largos para un aparato de estas características, miren por ejemplo:

#cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 432000

Si miran la documentación Linux, este valor se mide en segundos, lo cual significa (sí, sí) que el router tarda 5 días (!) en limpiar la tabla NAT de conexiones "established" fantasma. Como digo este, digo otros timeouts que son demasiado largos. El problema es (sin ánimo de criticar a D-link) que han puesto un kernel Linux a saco en el firmware sin reajustar los valores para adaptarlos a un aparato de esta índole, que tiene una cantidad de RAM limitada (no como equipos PC router que tienen cantidades ingentes de memoria), con ello una cantidad limitada de conexiones máximas (y que los usuarios se encargan de agotar rápidamente).
La solución ha sido poner unos timeouts mucho más cortos para que el router limpie periódicamente la tabla NAT:

echo 2048 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo 50 > /proc/sys/net/ipv4/netfilter/ip_conntrack_generic_timeout
echo 5 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close
echo 120 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close_wait
echo 1200 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
echo 120 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait
echo 60 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_time_wait
echo 10 > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout

Si comprueban ahora con el primer comando mencionado, la cantidad de conexiones activas TCP/UDP verán que se mantienen dentro de un rango aceptable, puesto que el router limpia activamente todas aquellas conexiones que ya no son necesarias a intervalos cortos de tiempo.

El problema es que hay que hacer esto cada vez que se apaga el router, puesto que se pierde.
paspal
 
Mensajes: 4
Registrado: 10 Oct 2005

Notapor Txetxu_ el 18 Oct 2005, 23:08

io usaba el scrpit y la verdad me iba mejor pero tmpc muxo... era un palo cada vez q reiniciaba el router volverlo a poner...
me baje el firm nuevo de ya.com para dlink 504t y como nuevo :)
Txetxu_
 
Mensajes: 27
Registrado: 26 Oct 2003

Notapor viva_la_burra el 26 Oct 2005, 12:55

gracias por la informacion, es justo lo q andaba buscando ;) lo tengo desde hace un mes y estoy desquiciado, solo hago q reiniciarlo cada ciertas horas pq acaba incluso sin dejarme navegar y la burra a paso tortuga, en fin, q muchisimas gracias y voy a meter el nuevo firmware a ver q tal.

Txetxu, de q seccion de la web te lo has descargado ? gracias !! ^_^
viva_la_burra
 
Mensajes: 9
Registrado: 25 Sep 2005

Notapor viva_la_burra el 26 Oct 2005, 14:36

en este enlace esta un firmware modificado por un español q arregla los cuelgues por exceso de conexiones fantasma y ademas optimizado para emule y otros xD vaya tela como se lo curran:

http://www.adslzone.net/postt10769.html

saludos!
viva_la_burra
 
Mensajes: 9
Registrado: 25 Sep 2005

Notapor ignachosoft el 11 Ago 2006, 21:15

yo hago lo mismop y me sale error en la conexion al host, en puerto 23
ignachosoft
 
Mensajes: 3
Registrado: 11 Ago 2006
Ubicación: Tocopilla


Volver a D-Link 500 / 504-G

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

Publicidad

Encuesta

  • ¿Para qué utilizas más el Internet de tu móvil?

    Resultados Encuestas

    Votos: 3071

      Comentarios: 3

Redes 2.0

Entrevistas