Quiero implementar una Raspberry Pi en mi cabaña de fin de semana. El Raspberry Pi está allí para registrar las temperaturas y enviarlas a un servidor remoto que tiene una ip fija, guarda los datos y los muestra en un sitio web simple.
Sin embargo, puede surgir la situación de que quiero cambiar algo en la Raspberry Pi. Por ejemplo, actualizaciones del sistema o un cambio en el programa que envía los datos al servidor o lo que sea.
Con la configuración propuesta, no podría conectarme a Raspberry Pi desde fuera de su LAN.
NOTA: No quiero cambiar la red, y el enrutador existente no tiene la capacidad de reenvío de puertos, dynDNS o VPN.
Recientemente leí sobre la perforación de agujeros UDP. La idea básica es que el cliente envía un paquete UDP a una dirección de servidor conocida (es decir, con una IP pública o dynDNS habilitado). El cliente B que desea conectarse al cliente A le pide al servidor la IP pública y el número de puerto del cliente A.
Luego puede conectarse al cliente A directamente en su IP pública y puerto que es dinámico. Debido a que el cliente A se conectó por primera vez al servidor en el puerto ahora utilizado, el NAT reenviará los paquetes al cliente A.
Espero haber resumido la idea correctamente, más o menos ...
Todo esto suena bien, pero el problema es que esto no está garantizado para funcionar con una conexión TCP, ya que el enrutador puede "entender" el apretón de manos de la conexión TCP y, si no está configurado correctamente, no se reenviará los paquetes.
Entonces, ¿cómo puedo abrir una sesión SSH del cliente B al cliente A, sin el cliente A sentado detrás de un enrutador con dynDNS, una IP pública fija o la capacidad de reenvío de puertos? El uso de un servidor central con un IP público, fijo o nombre de dominio sería posible difícil.
fuente
-w
pero dijo udp sobre tcp (quizás por eso él incluye cualquier intento de reenviar udp con ssh), implica problemas tales como alta latencia y retransmisiones de cosas que ya no desea. Sin embargo, supongo que todavía es algo interesante intentarlo. Veo este vpn a través de ssh y -w mencionado aquí también wiki.archlinux.org/index.php/VPN_over_SSHRespuestas:
pwnat
Fuente: http://samy.pl/pwnat.pdf
https://github.com/samyk/pwnat
fuente
Aquí hay un par de soluciones:
Puede configurar su Raspberry Pi para conectarse nuevamente a un servidor OpenVPN y tendrá acceso a él todo el tiempo.
Puedes echar un vistazo a PageKite. Verifique https://pagekite.net/wiki/Howto/SshOverPageKite/
fuente
Es una solución algo sucia pero fácil, pero ¿qué pasa con el uso de netcat? En Raspberry Pi puedes crear un script que repita el comando:
En su host local, haga:
Y:
Podrá escribir un comando en la primera instancia y ver la respuesta en la segunda.
fuente