
¿Existe algún software que me ayude a conectarme/ssh a la computadora de mi casa desde la Internet pública? (Digamos, una cafetería).
Entiendo que se han hecho preguntas similares a esta, pero ninguna parece responder realmente a la pregunta. Permítanme agregar algunos detalles para evitar la habitual gran cantidad de respuestas sobre DynDns y el reenvío de puertos.
Tengo acceso a un servidor SSH de acceso público. El mero reenvío de puertos desde allí no es una solución estable que dure varios días. El reenvío de puertos tiende a cortar conexiones, ser lento, etc.
No quiero configurar/pagar DynDns ni configurar el cruce NAT en mi enrutador.
Siento que lo siguiente debería ser posible, pero no sé si existe un software que ya lo haga:
De la misma manera que los programas peer-to-peer perforan el recorrido NAT, debería ser posible tener un programa ejecutándose en la máquina de mi hogar que abra el acceso externo a los puertos apropiados mediante perforaciones. Además, el programa puede transmitir la IP pública de la computadora doméstica y un puerto visible externamente perforado en algún lugar (por ejemplo, en un servidor público o por correo electrónico) y actualizar periódicamente esta información.
¿Existe software como este? Una parte de esta funcionalidad ya se logra mediante varios programas de torrents.
Respuesta1
No sugiero colocar su dispositivo en una DMZ bajo ninguna circunstancia, a menos que realmente sepa lo que está haciendo y pueda proteger adecuadamente el dispositivo y la red que lo rodea.
Existe un software que puede emular una LAN a través de Internet, llamadoLogMeIn Hamachi. Al instalar y habilitar esto en el host, puede acceder a él iniciando sesión en la VLAN en cualquier lugar de Internet.
Aunque no necesariamente veo el problema con el reenvío de puertos.
Otra opción es utilizar la función de reenvío de puertos integrada de SSH. Si hay otro host SSH accesible desde Internet (lo llamaremos Host 1) en la misma LAN que el host al que intenta conectarse (Host 2), puede emitir un comando que rebote la conexión desde su computadora. (en un puerto local específico) a través del Host 1, y el Host 1 enruta su tráfico al Host 2 sin puerto reenviado en su LAN.
El comando es el siguiente y debe ejecutarse en la máquina local que está intentando utilizar para conectarse al Host 2.
ssh -L [local-port-to-open]:[local-IP-of-Host-2-according-to-Host-1]:[port-to-connect-to-on-Host-2-from-Host-1] [user-of-Host-1]@[Host-1-address]
Esto abrirá un puerto en su máquina (su [local-port-to-open]
argumento) que administra SSH, enviando cualquier tráfico desde ese puerto a través del túnel cifrado hecho mis [user-of-Host-1]@[Host-1-address]
argumentos al Host-2 como se especifica en [local-IP-of-Host-2-according-to-Host-1]:[port-to-connect-to-on-Host-2-from-Host-1]
. Este método se llama reenvío de puerto local (realmente no entiendo el reenvío de puerto remoto).
Por ejemplo, digamos que quiero conectarme al Host 2, que no tiene puerto reenviado, desde mi cafetería local, usando el Host 1, que sí tiene puerto reenviado, para rebotar la conexión en su LAN. Tenga en cuenta que esto abrirá un PTS en la máquina remota, pero puede ignorarlo hasta que desee cerrar este túnel. Luego puedes cerrar esa sesión de terminal como lo harías normalmente.
La IP pública del Host 1 201.31.103.212
(la NAT que encapsula tanto el Host 1 como el Host 2) está en el puerto 1337
para SSH. El host 2, en la LAN, tiene la IP local 192.168.254.40
y utiliza el puerto 22
para SSH. El nombre de usuario de inicio de sesión del Host 1 es fish
.
Ok, entonces solo diré que tengo el puerto local 8080
sin usar y puedo usarlo temporalmente para esta demostración.
El comando que formaría es el siguiente:
ssh -L 8080:192.168.254.40:22 [email protected]
Ahora eso abre el puerto 8080
en su computadora local y envía al 192.168.254.40
puerto 22
(Host 2) de acuerdo con el Host 1 (que es [email protected]
)
Ahora, si desea utilizar SSH en el Host 2, todo lo que tiene que hacer es especificar su computadora en el puerto 8080
. Digamos que el nombre de usuario de inicio de sesión del Host 2 esturtle
ssh [email protected] -p 8080
SSH administra su puerto 8080
y envía su solicitud SSH al Host 1, quien la envía al Host 2. Tenga en cuenta que, en lugar de usar 127.0.0.1
, también puede usar simplemente localhost
. Es sólo preferencia.
Otro uso del reenvío de puertos SSH son los servidores proxy.
Escenario: estoy en la escuela con mi computadora portátil personal y quiero acceder a Twitter, que está bloqueado (en realidad está en mi escuela secundaria, así que hice exactamente esto). Tengo un host SSH con puerto reenviado en mi casa con la IP 39.34.81.56
en el puerto 1337
. Quiero rebotar una conexión a Twitter (los servidores web suelen estar alojados en el puerto 80
) desde el puerto 8080
de mi computadora portátil a través de mi host en casa. Emitiría el comando en mi computadora portátil:
ssh -L 8080:twitter.com:80 [email protected] -p 1337
Ahora puedo acceder localhost:8080
desde mi navegador web y enrutará Twitter a través de mi túnel cifrado, desde sus servidores hasta mi casa y luego hasta mi computadora portátil en la escuela.
Puedo usar este mismo método para iniciar sesión en un sitio web que no usa SSL (pastebin, por ejemplo) en público y asegurarme de que mis credenciales estén seguras porque están cifradas usando SSH y solo se envían sin SSH desde mi casa, lo cual hice. Seguro que es seguro.
¡Buena suerte!
EDITAR: Solo una nota al margen, las direcciones IP que se muestran aquí no deben ser direcciones válidas, pero en caso de que lo sean, no acose a los usuarios de estas IP.
Respuesta2
Sí, creo que el reenvío de puertos ES el método de perforación. Si quisieras, podrías poner tu computadora en una DMZ y evitar todo el desorden.