Cómo ssh dos computadoras detrás de NAT y Firewall, sin una tercera computadora

9

Estoy tratando de ingresar a mi caja de Linux en casa. Mi hogar es un entorno de estilo dormitorio: NAT y Firewall con una computadora portátil personal que ejecuta Arch Linux. Mi trabajo es estilo corporativo Windows 7: NAT y firewall proxy, sin derechos de administrador.

Puedo conectar los dos equipos portátiles Team Viewer. Sin embargo, esto no se ajusta a lo que realmente estoy buscando. Estoy buscando simplemente SSH en mi caja de Linux en casa, dejando mi caja de Linux desconectada por completo, básicamente sin cabeza cuando no estoy allí.

He leído sobre la tunelización, sin embargo, si entiendo la tunelización correctamente, necesito un servidor de terceros al que ambas computadoras puedan conectarse. No tengo ese servidor y tampoco deseo pagarlo.


¿Cuál es la solución simple y segura para SSH'ing en mi computadora portátil desde el trabajo? ¿Existe un 'tercer servidor' gratuito y seguro? He estado arriba y abajo en Google, pero parece estar cada vez más confundido.

usuario1026169
fuente
2
¿Tienes acceso al enrutador? Por lo general, debe ajustar la configuración de NAT para apuntar su dirección IP pública a su servidor SSH interno para hacer algo como esto.
jmreicha
No, no tengo acceso al enrutador y no puedo ajustar la configuración de NAT.
user1026169
Entonces, en este caso, es probable que deba conectarse a través de un tercer servidor para conectarse si la opción Team Viewer no funciona.
jmreicha
¿Quién proporciona un servidor que puedo usar solo como proxy para ssh?
user1026169
Apuesto a que un VPS basado en la nube haría el truco.
jmreicha

Respuestas:

16

pwnat es una herramienta de código abierto que supuestamente aborda este problema. Dice :

pwnat es una herramienta que permite que cualquier cantidad de clientes detrás de NAT se comunique con un servidor detrás de un NAT separado sin reenvío de puertos y sin configuración DMZ en ningún enrutador para comunicarse directamente entre sí. El servidor no necesita saber nada sobre los clientes que intentan conectarse.

No hay intermediarios, no hay proxy, no hay una tercera parte, no se requiere UPnP / STUN / ICE, no hay suplantación de identidad y no hay trucos de DNS.

Más importante aún, el cliente puede conectarse a cualquier host o puerto en cualquier host remoto o a un host fijo y puerto decidido por el servidor.

pwnat establece este tipo de conexión:

Máquina A (IP: 192.168.1.3) -> NAT A (IP: 122.xxx) -> Internet -> NAT B (IP: 59.xxx) -> Máquina B (192.168.2.10)

pwnat se distribuye solo para Linux, pero el artículo PWNAT: versión completa de Windows contiene la versión de Windows . Ver también, por el mismo autor PWNAT: Ejemplo .

El método utilizado por pwnat es increíblemente inteligente, pero no hay garantía de que funcione con su entorno.

harrymc
fuente
1
Nota: pwnat depende de ICMP para funcionar. Específicamente, eco icmp y mensajes de tiempo excedido. Esto funciona porque ICMP no tiene estado.
shadowbq
No funciona para mi Los enrutadores NAT no son lo suficientemente inteligentes como para implementar estándares, ni lo suficientemente inteligentes como para comprender al autor pwnat. +1 aún para la inteligencia.
Quantum
También probé pwnat sin éxito. Pero es posible que tenga algo mal en mi configuración. ¿Hay alguien que haya tenido éxito que pueda brindar apoyo?
robguinness
5

Personalmente, creo que la tunelización es su mejor opción, a pesar de que aún no posee un tercer servidor.

Amazon EC2 ofrece una opción de precios de nivel gratuito que permite a los nuevos clientes ejecutar una microinstancia de Linux / Windows por hasta 750 horas / mes, gratis, durante un año. No he utilizado el servicio yo mismo, pero supongo que si solo ejecuta el servidor virtual cuando sea necesario, obtendrá un túnel SSH y lo ejecutará de forma gratuita. ¿Incluso podría encontrar el servicio lo suficientemente barato como para justificar el pago?

Hak5 produjo una buena introducción al túnel (con persistencia). También puede configurar una secuencia de comandos activada por CRON para intentar conexiones al servidor virtual para que tenga acceso a la computadora portátil a los pocos minutos de iniciar la instancia de EC2 ...

danielcraigie
fuente
Gracias, encontré un VPS gratuito con la ayuda de algunos foros.
user1026169
1
También tenga en cuenta que 750 horas son 31.25 días ... Así que básicamente obtiene una t2.microinstancia gratis, durante un año.
Attie
3

La mejor opción sería configurar el reenvío de puertos si puede, pero si su campus realiza el firewall y no puede hacer ningún reenvío de puertos usted mismo, entonces use esta sugerencia.

Sí, hay un tercer servidor gratuito y ya lo está utilizando, TeamViewer. Asegúrese de tener TeamViewer instalado como servicio (o cualquiera que sea el equivalente para Linux, solo uso la versión de Windows). Luego instale el controlador VPN en el trabajo y en casa. Luego podrá conectarse utilizando una VPN desde el trabajo y su máquina doméstica tendrá una dirección IP 7.xxx. Luego, si desea ingresar a una sesión de terminal, ejecute SSH a través del enlace VPN.

La opción instalar VPN se encuentra en la configuración avanzada. ingrese la descripción de la imagen aquí

Eso agregará una opción "VPN" para los tipos de conexiones que puede hacer. ingrese la descripción de la imagen aquí

Scott Chamberlain
fuente
1
Muchas gracias por la ayuda detallada y las capturas de pantalla. Sin embargo, estoy usando TeamViewer portable y no tengo derechos de administrador. La opción VPN está atenuada y no puedo usarla.
user1026169
1

Debería poder configurar el reenvío de puertos (puerto 22) en su enrutador / firewall doméstico. Y luego conéctese a la dirección IP pública de su hogar cuando esté en el trabajo. Podría usar algo como dyndns si no tiene una IP pública estática en casa.

NetworkFish
fuente
El reenvío de puertos no es posible en ninguna de mis máquinas debido a la red que las sirve. No tengo configuración de ip, sin embargo, no hay puertos que pueda usar para conectar las máquinas.
user1026169
0

Puede usar un servidor público XMPP / Tox como el "tercer servidor". Es decir, hay proyectos como Tuntox y PPPoAT (PPP sobre cualquier transporte), que utilizan estos protocolos de mensajería instantánea como capas de transporte.

He probado el PPPoAT, que es compatible con XMPP y, a diferencia de PWNAT, este mecanismo realmente funciona para mí.

Para usarlo, necesita dos cuentas XMPP en cualquier servidor público: una para el servidor al que desea iniciar sesión y otra para su cliente. Después de comenzar pppoaten el servidor, luego en el cliente (ambos con los parámetros de configuración apropiados), puede iniciar inmediatamente la conexión como, por ejemplo,

ssh [email protected]

Será más lento que la conexión directa, por supuesto, y la velocidad probablemente dependerá del servidor XMPP que elija, pero para la actividad normal de la consola es lo suficientemente bueno.

En cuanto a la seguridad, SSH puede funcionar en una red totalmente insegura, ya que ya implementa su propio cifrado, por lo que si la conexión basada en XMPP es segura es realmente irrelevante cuando usa SSH.

Ruslan
fuente