Come rendere visibile un server Web locale da Internet * senza * configurare il port forwarding sul router?


12

Sviluppo siti Web sul mio laptop (di fascia alta) e lavoro da varie località fisiche.

Vorrei salvare la seccatura della sincronizzazione costante con un server Web visibile esternamente per consentire ai client di testare l'avanzamento del sito (o per scopi correlati). Pertanto, sto cercando di trovare un modo per consentire al mio laptop di essere automaticamente pubblicamente visibile da Internet, da qualsiasi posizione, anche quando non ho accesso al router per configurare il port forwarding (come da bar o altre connessioni wireless pubbliche).

Uso già DynDNS per fare la mia scelta di nomi di dominio in avanti per un server di desktop tramite un router che io ho creato ... ma come ho detto, mi piacerebbe abolire la fase di utilizzare questo server di desktop.

Speravo che i servizi di proxy inverso a pagamento (addebitando una tariffa mensile per un account) fornissero software "proxy inverso" client / server a livello di socket che potesse essere utilizzato a tale scopo. Non riesco a trovarne uno. Uso già TeamViewer e LogMeIn, fornendo servizi proprietari simili. In effetti, ho tentato di utilizzare LogMeIn Hamachi VPN per renderlo possibile - rendendo il mio desktop (già visibile a Internet) inoltrare il traffico IP che richiede la porta 80 lungo la VPN al mio laptop. Tuttavia, non sembra possibile impostare Hamachi / Windows in questo modo (ma potrei sbagliarmi).

Spero che ci sia un modo semplice e robusto per raggiungere questo obiettivo.


Puoi effettivamente configurare un server web di base usando il browser Opera (Opera unite), ma questa è una soluzione solo nel caso di un'applicazione HTML + JavaScript che credo non soddisfi le tue esigenze.
jakub.g,

Al momento ho un server web che è operativo - Apache (impostato come parte di un'installazione XAMPP per Windows). Questo server Web funziona bene e quando è in esecuzione sul desktop dietro un router permanente non ha problemi a essere visibile da Internet, perché ho impostato il port forwarding sul mio router. Sono interessato a trovare un modo per rendere il mio server Web locale visibile pubblicamente da Internet quando non ho accesso al router per impostare il port forwarding.
Dan Nissenbaum,

Risposte:


8

Se hai un server su cui puoi SSH e quel server ti consente di ascoltare sulle porte pertinenti gli indirizzi IP pubblici (che se lo controlli, sarà - forse anche la macchina desktop che descrivi se installi SSHd tramite cygwin o simile) potresti utilizzare l'opzione di tunneling di SSH per indirizzare il traffico verso il tuo server locale.

Qualcosa del tipo: ssh root@your.server.tld -g -R 11.22.33.44:80:127.0.0.1:80una volta connesso e autenticato, effettuerà la porta 80 su 11.22.33.44 (supponendo che sia un indirizzo pubblico del server) prenderà le connessioni che verranno quindi inoltrate alla porta locale 80. È necessaria l'opzione GatewayPorts abilitata sul server per ascoltare su un indirizzo non localhost in questo modo, ed è necessario aver effettuato l'accesso come root per ascoltare su porte inferiori a 1024, e se esiste già un servizio in ascolto sulla porta 80 lì ovviamente è necessario scegliere qualcos'altro. Si consiglia di aggiungere l' -Copzione per abilitare la compressione degli stream in corso tramite SSH, soprattutto se si collega il laptop tramite una rete lenta (forse bloccato nel mezzo del nulla con solo una connessione mobile GPRS disponibile).

Per usare ssh su Windows hai alcune opzioni. È possibile installare la porta di Cygwin [quindi il comando che ho dato sopra dovrebbe JustWork (tm)] o utilizzare qualche altro client. PuTTY è un'opzione molto popolare e supporta il tunneling delle porte remote.

In questo modo il server Web della tua macchina sarà sempre disponibile allo stesso indirizzo anche quando connesso, indipendentemente da dove ti connetti, quindi non è necessario utilizzare DNS dinamico per nomi umani che potresti voler assegnare (supponendo che il server a cui ti connetti ha un indirizzo pubblico fisso, ovviamente).

Invece di utilizzare un server di casa o dell'ufficio per questo, che potrebbe rallentare ulteriormente le cose a meno che tu non abbia una buona connessione veloce in entrambe le direzioni lì, potresti ottenere risultati migliori noleggiando un piccolo VPS Linux da qualche parte (preferibilmente nello stesso paese) solo per questo scopo. Hai solo bisogno delle macchine più piccole purché vi sia una larghezza di banda sufficiente, quindi questo costerà solo un paio o pochi $ al mese.

Oltre a SSH puoi anche prendere in considerazione uno strumento VPN come OpenVPN e utilizzare semplici regole iptables sul server per inoltrare le connessioni al tuo computer quando connesso. Questo può essere più efficiente e meno complicato una volta installato, ma può essere un po 'più complicato da configurare se non si ha familiarità con esso e il routing in generale già. Ancora una volta un VPS economico o il proprio server di casa / ufficio farebbe da fine server alla VPN.


+1: Stavo per suggerire il tunneling ssh, ma mi hai battuto e mi hai spiegato più chiaramente di quanto avrei dovuto, per avviare.
Dave Sherohman,

Ottima risposta, grazie. Ho già WinSSHD (da Bitvise - un programma a pagamento), quindi dovrei essere in grado di usarlo. Potrei provare a usare iptables per il routing dei dati (inizialmente pensando a questo, mi sono confuso perché sapevo che i dati stavano arrivando al computer sulla rete locale condivisa con il router, ma non sulla rete locale condivisa con la VPN - non che questo mi debba confondere). Chiunque desideri pubblicare un esempio della voce iptable necessaria che funziona con un router e passa i dati a una rete VPN, sarebbe il benvenuto e apprezzato!
Dan Nissenbaum,

1

Tunneling IPV6 sul laptop, combinato con un proxy da ipv4 a 6 - gogo6 offre un servizio piacevole e gratuito con un client per l'aggiornamento automatico come parte di freenet6 -. Combinalo con un record AAAA e un proxy che converte da ipv6 a 4 ( sixxs ne esegue uno pubblico) o, per una soluzione più elegante, il tuo server proxy ( polipo potrebbe funzionare) che esegue la traduzione in esecuzione sullo stesso indirizzo A

Impostato correttamente, questo dovrebbe essere per lo più trasparente, a parte una leggera latenza da rimbalzare così tante volte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.