Hola!
Desde hace un par de meses me cambié de domicilio y pasé de Telefónica ADSL a Ono 3Mb. De momento todo bien aunque a veces si subo mucho por P2P va todo lento, aunque asumo que es normal por el poco ancho de banda de subida.
Lo que me mosquea es que desde el cambio, cuando accedo por SSH a sitios externos o accedo desde fuera al servidor de mi casa por SSH, las conexiones se cortan a cada rato sin dar señal. Habitualmente cuando se corta la conexión SSH aparece un mensaje indicando que se ha perdido la conexión, pero con ONO ni siquiera aparece este mensaje, simplemente no llegan datos desde el servidor, pero la conexión parece que sigue establecida.
Ya digo que ocurre tanto de entrada (hacia mi servidor en mi casa) como de salida (desde mi casa a servidores que administro en distintos hostings). La verdad que resulta bastante molesto y me impide trabajar con normalidad.
Mi modem es un Thomson TCW-710, por si eso ayuda.
Gracias a todos!
SOLUCIONADO
Gracias a las pistas de yommimo y los consejos de algunos anónimos he solucionado el problema.
Como me han recomendado, me he asegurado que el KeepAlive estaba activado, esto no solamente es una ajuste del cliente sino también del servidor SSH, aunque por lo general suele estar activado por defecto (por lo menos usando OpenSSH parece que así es).
El tema está en que el NAT del router por lo visto, por lo menos el del Thomson, considera que la conexión SSH está inactiva tras cierto tiempo de inactividad y la cierra por su parte para liberar recursos, haciendo caso omiso el KeepAlive (no debería, pero bueno, así de bien trabajan en Thomson). Así que la culpa no es de la red de ONO es culpa de los trastos de routers que ponen.
La solución que parece que me está funcionando, puede configurarse tanto en el cliente como en el servidor (en uno de los lados es suficiente). Yo la he configurado en el cliente dado que en algunos servidores no tengo acceso a la configuración de SSH.
Mi recomendación sería que se configurase en los clientes que acceden a través de ONO (o del router problemático) y en los servidores que están detrás del router problemático.
En el CLIENTE (usando OpenSSH, supongo que PuTTY tendrá su equivalente):
- Editar .ssh/config (o /etc/ssh/ssh_config)
- Añadir:
ServerAliveInterval 30 ServerAliveCountMax 60
Esto establecerá que el cliente enviará un mensaje de mantenimiento de la conexión cada 30 segundos al servidor, por lo que el NAT ya no lo considerará una conexión inactiva. Y el segundo parámetro indicará que se haga esto hasta 100 veces mientras no haya actividad (30*60 = 1800s = 30 minutos).
O en el SERVIDOR (OpenSSH)
- Editar /etc/ssh/sshd_config (puede estar en otro sitio, dependiendo de la distribución de Linux)
- Añadir al final:
ClientAliveInterval 30 ClientAliveCountMax 60
Esto hará que las conexiones a este servidor sean obligadas a enviar un mensaje de mantenimiento de la conexión, permaneciendo correctamente abiertas a través de los routers con NATs problemáticos.
Espero que os sirva a algunos para solucionar los problemas con el SSH. Si alguien se anima a explicar cómo se configura este parámetro en PuTTY sería ideal, pero no tengo un Windows delante para probarlo.
Gracias a todos los que me habéis ayudado a encontrar la solución.