Erreichen eines Linux-Servers mit einer privaten IP ohne VPN

7

Ich arbeite in einem Netzwerk, in dem ich keine öffentliche IP-Adresse erhalten oder keinen VPN-Zugang einrichten kann. Gibt es eine Möglichkeit, mit einem lokalen Server remote zu kommunizieren, indem ich einen Vermittler in der Cloud verwende, an den sowohl der lokale Server als auch der Remoteclient ausgehende Anforderungen stellen? Wenn der lokale Server alle paar Sekunden eine Anfrage an einen öffentlichen Vermittler (EC2) sendet, um festzustellen, ob ein Remote-Client darauf wartet, mit ihm zu sprechen, spielt die Tatsache, dass er keine öffentliche IP hat, keine Rolle. Zu diesem Zeitpunkt könnte ich auch eine Anfrage von einem Client an einem entfernten Standort stellen und über den öffentlichen Vermittler irgendwie auf den Server ssh. Auf diese Weise initiieren sowohl der Client als auch der Server eine ausgehende Anforderung, die von einer privaten IP stammen kann, ohne dass Änderungen an einem der lokalen Netzwerke vorgenommen werden müssen. Irgendwelche guten Ideen?

Jonathan
quelle
1
Herzlichen Glückwunsch, Sie haben gerade VPN erfunden!
Silent-Bob
@ Silent-Bob oder ssh tunel: D
VeeeneX

Antworten:

8

Sie können einen umgekehrten SSH-Tunnel für diesen "Cloud" -Endpunkt offen lassen.

Angenommen, Box A ist Ihr Desktop, Box P ist der Server mit der privaten IP und Box C ist der Cloud-Server:

auf P den Tunnel öffnen:

P% ssh C -R 2200:localhost:22

Lassen Sie diese Sitzung laufen.

So verbinden Sie sich später von A aus:

A% ssh C
C% ssh localhost -p 2200
P%    # you're now logged into P

Dies funktioniert nur, solange niemand diese erste SSH-Sitzung von P nach C unterbricht, aber solange dies nicht der Fall ist, funktioniert es.

MadHatter
quelle
Sie können auch eine Art Prozessüberwachung verwenden, um sicherzustellen, dass ssh auf P ausgeführt wird, z. B. mit Monit oder Upstart.
CJC
2
Verwenden Sie autossh, um zu vermeiden, dass die Verbindung nach Inaktivität oder auf andere Weise
unterbrochen wird
2

Ich habe den "Tunnel durch einen zugänglichen Server" oft gemacht; aber vor kurzem viel einfacher gefunden, nur IPv6 zu verwenden. Installieren Sie einfach Miredo (oder aktivieren Sie Teredo unter Windows), und Sie erhalten Ihre eigene global zugängliche IPv6-Adresse. Da es anfällig für Änderungen ist, legen Sie ein dynamisches DNS fest, und schon sind Sie fertig.

Javier
quelle
1

Die von MadHatter veröffentlichte SSH-Lösung ist meiner Meinung nach die einfachste. Abhängig davon, was Sie unter "kein VPN" verstehen, können Sie möglicherweise einen OpenVPN-Client auf dem Computer mit der privaten IP und einen OpenVPN-Server auf dem Vermittler einrichten. Der OpenVPN-Client zeigt dem Vermittler nur ausgehenden UDP-Verkehr an. Sie sollten jedoch in der Lage sein, zum Vermittler zu wechseln und über den Tunnel vollen Zugriff auf den privaten Computer zu haben. Mit der richtigen OpenVPN-Serverkonfiguration auf dem Intermediär kann Ihre Remote-Workstation als ein anderer OpenVPN-Client konfiguriert werden. Sie können einfach eine Verbindung zum Server herstellen und den privaten Computer transparent anzeigen.

cjc
quelle