
Nueva versión
Entonces, haré una lista de las cosas que tengo para que quede más claro.
- PC con Windows 10 con un servidor de medios Plex y Kitty
- VPS de OVH ejecutándose en Debian 9 Stretch
lo que quiero :
- Quiero acceder a mi servidor desde cualquier lugar fuera de la red local.
cómo :
- usando el vps como un túnel hacia mi servidor Plex
Problema :
- IP dinámica Double Nat desde el enrutador 4G / LTE del lado del ISP con una suscripción
- no es posible el reenvío de puertos
asunto :
- cuando la IP cambia "diariamente" en la PC (Windows 10), la conexión al vps a través de Kitty fallaba
solución manual al problema:
- encuentre el PID del proceso que mantiene el puerto abierto y elimínelo
lo que necesito :
- para hacerlo automáticamente o tener otra solución al problema
Imágenes para ayudarte a entender
Después del cambio de ip en el log de Kitty
Manera manual de resolver el problema.
Preguntas y respuestas
Jugo de proxeneta: gracias ^^ de todos modos la herramienta no-ip también me pareció bastante adecuada. Pero como el ISP tiene doble NAT y básicamente tendría que ejecutar un software No-ip en su segundo "enrutador" detrás del mío. Lo cual es imposible, estarías de acuerdo ^^. Realmente mi problema es realmente simple, pero molesto porque parece que la salida es simple. Pero no puedo hacerlo por el camino correcto :/
PD: sí, no te preocupes, la versión anterior es un gran borrador de lo que quería que fuera ^^ en la nueva tienes todo lo que necesitas para ayudarme, supongo :/ ^^
Old version
Tengo un VPS de OVH que utilizo para hacer un túnel de mi servidor multimedia en PLEX desde mi PC al VPS. Todo bien y funcionando, excepto...
Mi IP es dinámica y con doble NAT. Mi IP externa cambia y se renueva con frecuencia, al menos una vez al día. Por lo tanto, mi conexión al VPS a través de Kitty (una bifurcación de PuTTY) se rompe. Eso lo resolví con la reconexión automática después de un aborto de conexión. De todos modos, cuando se hace eso, el túnel del puerto que especifiqué en KiTTY fallaría, porque la conexión anterior no se cerró correctamente.
Para el lado del servidor es Debian 9 Stretch.
Encontré la solución, que es encontrar el PID de la misma conexión y eliminarlo.a mano. Ahí está mi problema, me gustaría automatizarlo con un script. Aquí pido su ayuda esperando que alguien pueda estar dando una mano.
Ps: mis habilidades en secuencias de comandos son tan bajas como podría parecer, así que sea lo más claro posible, gracias.
Respuestas a algunos comentarios.
Scott– Cuando mi dirección IP cambia, la conexión se bloqueará. En ese momento se volvería a conectar gracias a KiTTY. En la línea de comando simplemente escribiría
netstat -lnp
, me mostraría todas las conexiones activas. Encontraría el que está vinculado con el puerto especificado (en este caso32400
) y el PID asociado, luego eliminaría el mismoPID
conkill
. La última vez el PID fue,12007
por ejemplo.Kamil Maciorowski– Intenté esto (refiriéndose aesta respuesta a otra pregunta):
permanentemente editando el
/etc/sysctl.conf
archivo, agregue:net.ipv4.tcp_keepalive_time=300
y
Si pudiera reconfigurar
sshd
el servidor, esta es, en mi opinión, la forma más elegante. Deje quesshd_config
contenga líneas como:ClientAliveCountMax 3 ClientAliveInterval 15
pero ninguno de esos funciona para mí cuando simulé un fallo de mi conexión, se volverá a conectar y el puerto seguirá ocupado.
También la solución bajo
De vuelta al cliente
Parecería que funciona para mí sólo si pudiera adaptarlo a mi situación.
"pero ninguno de esos funciona para mí cuando simulé un fallo de mi conexión, se volverá a conectar y el puerto seguirá ocupado" – ¿Reinició sshd? ¿Intentaste volver a conectarte de inmediato? Con esta configuración, deberá esperar hasta un minuto hasta que el puerto quede libre. – Kamil Maciorowski
sí, reinicié el SSHD con el siguiente comando:
/etc/init.d/ssh reiniciar
y para estar seguro porque no lo sé que reiniciar sshd
reinicio del servicio sshd
la reconexión es automática e instantánea. Ahora estoy buscando una manera de retrasar este proceso, si sabes cómo, dímelo, gracias para que sepas:
net.ipv4.tcp_keepalive_time=300
Lo configuré en 10 segundos en lugar de 300, ¿aún así está bien?
Además, no entendí tu segundo comentario sobre cargar dos sesiones a la vez y arreglarlo con la segunda. Mi objetivo es simplemente reiniciar el proceso de sesión real, que está automatizado. Ahora necesito liberar el puerto para poder volver a abrirlo. con el nuevo bono.
Aclaración: en mi comentario anterior hay una forma genérica de evitar bloquearse fuera del servidor. Si rompiste sshd_config lo suficientemente grave, no podrás volver a realizar ssh. Es por eso que siempre debes probarlo con una nueva conexión, mientras que la anterior aún te permite revertir los cambios pase lo que pase. Tenga en cuenta que, en general, es posible tener un sshd_config sintácticamente válido y aún así no poder conectarse; por lo que reiniciar sshd sin ningún error no significa necesariamente que vaya a funcionar. – Kamil Maciorowski
Entonces, al final, ¿cuáles son mis soluciones para automatizar este proceso y liberar el puerto después de un período de tiempo más corto y cómo retrasar la reconexión en Kitty con un script u otra cosa? Nuevamente gracias amigo por tu tiempo, te lo agradezco.
"La reconexión es automática e instantánea. Ahora estoy buscando una manera de retrasar este proceso". Te refieres a que KiTTY intenta volver a conectarse sin demora, ¿verdad? En Linux, en el lado del cliente, su problema se puede resolver fácilmente mediante autossh o haciendo un bucle ssh -o ExitOnForwardFailure=yes… (consulte esta respuesta). Creo que ssh en Cygwin debería admitir esta opción. Si insistes en un script del lado del servidor, supongo que se puede hacer; pero el script no debe cerrar el túnel si no es el túnel antiguo. Ahora no tengo tiempo para ofrecer una solución tan engorrosa; tal vez en 12 horas. – Kamil Maciorowski
Bien, gracias, te veré en 12 h de todos modos, hasta entonces intentaré todas las demás soluciones. Te haré saber cómo va, gracias de nuevo, amigo.