Jak sprawić, by lokalny serwer WWW był widoczny z Internetu * bez * konfigurowania przekierowania portów na routerze?

12

Tworzę strony internetowe na moim (wysokiej klasy) laptopie i pracuję z różnych fizycznych lokalizacji.

Chciałbym uniknąć kłopotów z ciągłą synchronizacją z zewnętrznie widocznym serwerem internetowym, aby klienci mogli testować postępy strony (lub do powiązanych celów). Dlatego próbuję znaleźć sposób, aby mój laptop był automatycznie publicznie dostępny widoczny z Internetu, z dowolnego miejsca, nawet gdy nie mam dostępu do routera, aby skonfigurować przekierowanie portów (np. z kawiarni lub z innych publicznych połączeń bezprzewodowych).

I już używać DynDNS aby mój wybór domen forward na serwerze stacjonarnym przez router, że zostały utworzone ... ale jak mówię, chciałbym złom etap wykorzystywania tego serwera pulpitu.

Miałem nadzieję, że płatne usługi odwrotnego proxy (naliczanie miesięcznej opłaty za konto) dostarczą prawnie zastrzeżonego oprogramowania typu klient / serwer „odwrotnego proxy”, które można wykorzystać do tego celu. Nie mogę znaleźć. Korzystam już z TeamViewer i LogMeIn, oferując podobne zastrzeżone usługi. W rzeczywistości próbowałem użyć LogMeIn Hamachi VPN, aby to umożliwić - umożliwiając mojemu komputerowi (już widoczny w Internecie) przekazywanie ruchu IP żądającego portu 80 wraz z VPN do mojego laptopa. Jednak nie wydaje się możliwe ustawienie Hamachi / Windows w ten sposób (ale mogę się mylić).

Mam nadzieję, że istnieje prosty i solidny sposób na osiągnięcie tego.

Dan Nissenbaum
źródło
Możesz skonfigurować podstawowy serwer WWW za pomocą przeglądarki Opera (Opera Unite), ale jest to rozwiązanie tylko w przypadku aplikacji HTML + JavaScript, która moim zdaniem nie odpowiada Twoim potrzebom.
jakub.g
Obecnie mam działający serwer WWW - Apache (skonfigurowany jako część instalacji XAMPP dla Windows). Ten serwer WWW działa dobrze, a kiedy działam na pulpicie za stałym routerem, nie ma problemu z widocznością z Internetu, ponieważ skonfigurowałem przekierowanie portów na moim routerze. Jestem zainteresowany znalezieniem sposobu, aby mój lokalny serwer WWW był publicznie widoczny z Internetu, gdy nie mam dostępu do routera w celu skonfigurowania przekierowania portów.
Dan Nissenbaum,

Odpowiedzi:

8

Jeśli masz serwer, do którego możesz SSH, a ten serwer pozwala ci słuchać na odpowiednich portach publicznych adresów IP (które, jeśli je kontrolujesz, będą - może nawet komputer stacjonarny, który opisujesz, jeśli instalujesz SSHd przez cygwin) lub podobny) możesz użyć opcji tunelowania SSH, aby przyciągnąć ruch do lokalnego serwera.

Coś w rodzaju: ssh [email protected] -g -R 11.22.33.44:80:127.0.0.1:80po połączeniu i uwierzytelnieniu sprawi, że port 80 na 11.22.33.44 (zakładając, że jest to adres publiczny serwera) będzie przyjmował połączenia, które są następnie przekazywane do lokalnego portu 80. Potrzebujesz włączonej opcji GatewayPorts na serwerze aby w ten sposób nasłuchiwać na nielokalnym adresie hosta i należy zalogować się jako root, aby nasłuchiwać na portach poniżej 1024, a jeśli usługa już nasłuchuje na porcie 80, oczywiście i tak musisz wybrać coś innego. -CZalecane jest dodanie opcji umożliwiającej kompresję strumieni przesyłanych za pośrednictwem SSH, szczególnie jeśli podłączasz laptopa przez powolną sieć (być może utknął w szczerym polu z dostępnym tylko połączeniem mobilnym GPRS).

Aby użyć ssh w systemie Windows, masz kilka opcji. Możesz zainstalować port cygwina [wtedy polecenie, które podałem powyżej, powinno JustWork (tm)] lub użyć innego klienta. PuTTY jest bardzo popularną opcją i obsługuje zdalne tunelowanie portów.

W ten sposób serwer sieciowy twojego komputera będzie zawsze dostępny pod tym samym adresem, również po podłączeniu, bez względu na to, skąd się łączysz, więc nie ma potrzeby używania dynamicznego DNS dla przyjaznych dla ludzi nazw, które chcesz przypisać (zakładając, że serwer, z którym się łączysz ma oczywiście stały adres publiczny).

Zamiast używać do tego serwera domowego lub biurowego, co może spowolnić proces, chyba że masz dobre szybkie połączenie w obu kierunkach, możesz uzyskać lepsze wyniki, wynajmując gdzieś (najlepiej w tym samym kraju) mały Linux VPS tylko na w tym celu. Potrzebujesz tylko najmniejszych maszyn, o ile przepustowość jest wystarczająca, więc będzie to kosztować tylko kilka lub kilka dolarów miesięcznie.

Oprócz SSH możesz również wziąć pod uwagę narzędzie VPN, takie jak OpenVPN i użyć prostych reguł iptables na serwerze, aby przekazywać połączenia do komputera po połączeniu. Może to być bardziej wydajne i mniej kłopotliwe po skonfigurowaniu, ale może być trochę dodatkowym kłopotem z konfiguracją, jeśli nie znasz go i routingu w ogóle. Ponownie tani VPS lub własny serwer biurowy / domowy zrobiłby jako serwerowy koniec VPN.

David Spillett
źródło
+1: Właśnie miałem zasugerować tunelowanie ssh, ale pobiłeś mnie i wyjaśniłeś to jaśniej, niż bym musiał, aby uruchomić.
Dave Sherohman,
Doskonała odpowiedź, dzięki. Mam już WinSSHD (z Bitvise - płatnego programu), więc powinienem móc z niego korzystać. Mogę spróbować użyć iptables do routingu danych (początkowo, gdy o tym myślę, pomyliłem się, ponieważ wiedziałem, że dane docierają do komputera w sieci lokalnej współdzielonej z routerem, ale nie w sieci lokalnej współdzielonej z VPN - nie to powinno mnie pomylić). Każdy, kto chciałby opublikować przykład niezbędnego iptable wpisu, który działa z routerem i przekazuje dane do sieci VPN, byłby bardzo mile widziany i doceniony!
Dan Nissenbaum,
1

Tunelowanie IPV6 na laptopie w połączeniu z proxy IPv4 do 6 - gogo6 ma miłą, bezpłatną usługę z klientem do automatycznej aktualizacji w ramach freenet6 -. Połącz to z rekordem AAAA i serwerem proxy, który tłumaczy z ipv6 na 4 ( sixxs uruchamia publiczny), lub dla bardziej eleganckiego rozwiązania, twój własny serwer proxy ( polipo może działać), który wykonuje tłumaczenie działające na ten sam adres A

Prawidłowo skonfigurowane, powinno to być w większości przezroczyste, z wyjątkiem niewielkich opóźnień w odbijaniu się tyle razy.

Journeyman Geek
źródło