Wie kann ein lokaler Webserver aus dem Internet * sichtbar gemacht werden, ohne * eine Portweiterleitung auf dem Router einzurichten?

12

Ich entwickle Websites auf meinem (High-End-) Laptop und arbeite von verschiedenen physischen Standorten aus.

Ich mag den Aufwand der ständig mit einem von außen sichtbaren Web - Server , um für die Kunden zu Testfortschritt der Website (oder für Ähnliche Zwecke) zu synchronisieren speichern .Daher Ich versuche , einen Weg zu finden , um meinen zu ermöglichen Laptop sein automatisch öffentlich Aus dem Internet und von jedem Ort aus sichtbar, auch wenn ich keinen Zugriff auf den Router habe, um die Portweiterleitung einzurichten (z. B. von Coffeeshops oder anderen öffentlichen drahtlosen Verbindungen).

Ich verwende bereits DynDNS meine Wahl von Domain - Namen sich auf einen Desktop - Server über einen Router, dass ich habe einrichten ... aber wie ich sage, würde Ich mag den Schritt der Verwendung diesen Desktop - Servers verschrotten.

Ich hatte gehofft, dass bezahlte Reverse-Proxy-Dienste (die eine monatliche Gebühr für ein Konto erheben) proprietäre Client / Server- "Reverse-Proxy" -Software auf Socket-Ebene bieten, die für diesen Zweck verwendet werden könnte. Ich kann keinen finden. Ich verwende bereits TeamViewer und LogMeIn und biete ähnliche proprietäre Dienste an. Um dies zu ermöglichen, habe ich versucht, LogMeIn Hamachi VPN zu verwenden. Mein Desktop (der bereits für das Internet sichtbar ist) leitet den IP-Verkehr, der den Port 80 anfordert, über das VPN an meinen Laptop weiter. Es scheint jedoch nicht möglich zu sein, Hamachi / Windows so einzurichten (aber ich könnte mich irren).

Ich hoffe, es gibt einen einfachen und robusten Weg, um dies zu erreichen.

Dan Nissenbaum
quelle
Sie können einen einfachen Webserver mit dem Opera-Webbrowser (Opera unite) einrichten. Dies ist jedoch nur eine Lösung für HTML + JavaScript-Anwendungen, die meiner Meinung nach nicht Ihren Anforderungen entspricht.
jakub.g 20.09.11
Ich habe derzeit einen Webserver in Betrieb - Apache (als Teil einer XAMPP für Windows-Installation eingerichtet). Dieser Webserver funktioniert gut, und wenn ich ihn auf meinem Desktop hinter einem permanenten Router ausführe, kann ich ihn problemlos über das Internet anzeigen, da ich die Portweiterleitung auf meinem Router eingerichtet habe. Ich bin daran interessiert , einen Weg zu finden , meinen lokaler Webserver öffentlich sichtbar aus dem Internet zu machen , wenn ich nicht habe Zugriff auf den Router Port - Forwarding einzurichten.
Dan Nissenbaum

Antworten:

8

Wenn Sie einen Server haben, zu dem Sie SSH ausführen können, und dieser Server ermöglicht es Ihnen, auf den relevanten Ports die öffentlichen IP-Adressen abzuhören (was, wenn Sie dies steuern, auch der Desktop-Computer ist, den Sie beschreiben, wenn Sie SSHd über Cygwin installieren) oder ähnliches) Sie können die Tunneling-Option von SSH verwenden, um Datenverkehr auf Ihren lokalen Server zu leiten.

So etwas wie: ssh [email protected] -g -R 11.22.33.44:80:127.0.0.1:80Lässt Port 80 nach der Verbindung und Authentifizierung am 11.22.33.44 (vorausgesetzt, es handelt sich um eine öffentliche Adresse des Servers) Verbindungen annehmen, die dann an Ihren lokalen Port 80 weitergeleitet werden. Auf dem Server muss die Option GatewayPorts aktiviert sein Um auf diese Weise eine nicht-lokale Host-Adresse abzuhören und als root angemeldet zu sein, um Ports unter 1024 abzuhören, und wenn bereits ein Dienst auf Port 80 abhört, müssen Sie offensichtlich trotzdem etwas anderes auswählen. Das Hinzufügen der -COption zum Aktivieren der Komprimierung der über SSH übertragenen Streams wird empfohlen, insbesondere, wenn Sie den Laptop über ein langsames Netzwerk verbinden (möglicherweise mitten im Nirgendwo, wenn nur eine GPRS-Mobilfunkverbindung verfügbar ist).

Um ssh unter Windows zu verwenden, haben Sie einige Optionen. Sie können Cygwins Port installieren [dann sollte der Befehl, den ich oben gegeben habe, JustWork (tm)] oder einen anderen Client verwenden. PuTTY ist eine sehr beliebte Option und unterstützt Remote-Port-Tunneling.

Auf diese Weise ist der Webserver Ihres Geräts auch bei einer Verbindung immer unter der gleichen Adresse verfügbar, unabhängig davon, von wo aus Sie eine Verbindung herstellen. Sie müssen daher kein dynamisches DNS für benutzerfreundliche Namen verwenden, die Sie möglicherweise zuweisen möchten (vorausgesetzt, der Server, mit dem Sie eine Verbindung herstellen) hat natürlich eine feste öffentliche Adresse).

Anstatt dafür einen Heim- oder Büroserver zu verwenden, der die Arbeit möglicherweise weiter verlangsamt, es sei denn, Sie haben dort eine schöne schnelle Verbindung in beide Richtungen, erzielen Sie möglicherweise bessere Ergebnisse, wenn Sie einen kleinen Linux-VPS irgendwo (vorzugsweise im selben Land) mieten dieser Zweck. Sie benötigen nur die kleinste Maschine, solange genügend Bandbreite zur Verfügung steht, sodass dies nur ein paar Dollar pro Monat kostet.

Neben SSH können Sie auch ein VPN-Tool wie OpenVPN in Betracht ziehen und einfache iptables-Regeln auf dem Server verwenden, um Verbindungen nach unten zu Ihrem Computer weiterzuleiten, wenn eine Verbindung besteht. Dies ist möglicherweise effizienter und weniger aufwändig, wenn die Einrichtung erst einmal durchgeführt wurde. Die Konfiguration ist jedoch möglicherweise etwas aufwändiger, wenn Sie mit dem Thema und dem Routing im Allgemeinen noch nicht vertraut sind. Auch hier würde ein billiger VPS oder Ihr eigener Büro- / Heimserver als Serverende des VPNs ausreichen.

David Spillett
quelle
+1: Ich wollte gerade SSH-Tunneln vorschlagen, aber du hast mich geschlagen und es klarer erklärt, als ich es getan hätte, um hochzufahren.
Dave Sherohman
Ausgezeichnete Antwort, danke. Ich habe bereits WinSSHD (von Bitvise - ein kostenpflichtiges Programm), also sollte ich das verwenden können. Möglicherweise versuche ich, iptables für das Routing der Daten zu verwenden (als ich anfangs darüber nachdachte, war ich verwirrt, weil ich wusste, dass die Daten auf dem Computer im lokalen Netzwerk ankamen, das mit dem Router geteilt wurde, aber nicht im lokalen Netzwerk, das mit dem VPN geteilt wurde - nicht, dass mich das verwirren sollte). Jeder, der ein Beispiel für den erforderlichen iptable-Eintrag veröffentlichen möchte, der mit einem Router zusammenarbeitet und Daten an ein VPN-Netzwerk weiterleitet, wäre herzlich willkommen und dankbar!
Dan Nissenbaum
1

IPV6-Tunneling auf dem Laptop, kombiniert mit einem IPV4- bis 6-Proxy - gogo6 bietet einen netten, kostenlosen Service mit einem Client, der im Rahmen von freenet6 - automatisch aktualisiert werden kann . Kombinieren Sie dies mit einem AAAA-Datensatz und einem Proxy, der von ipv6 auf 4 übersetzt ( sixxs führt einen öffentlichen aus), oder für eine elegantere Lösung Ihren eigenen Proxy-Server ( polipo funktioniert möglicherweise), der die Übersetzung unter derselben A-Adresse ausführt

Richtig eingestellt, sollte dies größtenteils transparent sein, abgesehen von einer geringen Latenz, die durch so häufiges Hin- und Herschleudern entsteht.

Geselle Geek
quelle