PDA

Visualizza la versione completa : Accedere PC Privato dall'esterno


magonicola
20-03-2010, 16:38
Salve, mi servirebbe una mano per questa questione che mi sta creando notevoli grattacapi.

Ho questa situazione:

Nella casa "A" ho 2 pc collegati in LAN tra di loro senza router, con ip del tipo 192.168.0.x.
In particolare

Il PC "A1" ha IP 192.168.0.190, non ha connessione internet verso l'esterno e non è accessibile (non posso effettuare alcuna modifica su di esso), e monta un server web;
Il PC "A2" ha IP 192.168.0.2, ha winxp home, ho completo accesso su di esso e usa il webserver montato sul PC A1 semplicemente accedendo via browser all'IP privato di A1. In più possiede una connessione ad internet HSDPA tramite cellulare LG collegato con Bluetooth e un servizio di dynamicDNS che associa l'ip pubblico della connessione HSDPA ad un nome simbolico.


Nella casa B ho invece un normale PC "B1" con connessione ADSL.

Quello che dovrei fare è accedere a A1 tramite B1 come se fossi nella sua stessa rete privata (mi basta in pratica poter accedere al webserver montato su A1 come client).

Ho provato numerose soluzioni ma sarà per un motivo sarà per un altro non sono mai riuscito a risolvere.
Tentativi:

Creare una VPN
Installare su "A2" un server web che accettasse le richeiste dall'esterno, facesse una CURL modificando l'URL della richiesta verso A1, prendesse il risultato e lo rispedisse, modificando nuovamente l'url, a B1
Trasformare A2 in un router base configurando col port forwarding l'80 verso A1


ma purtroppo, ripeto, è fallito tutto.
Potete darmi una mano a risolvere questo problema?
Grazie.

denis76
23-03-2010, 15:31
Hai avuto modo di provare OpenVPN o Hamacki?

haka
13-04-2010, 20:52
Perfetto....amche io ho il tuo stesso problema....!! Ho provato hamachi e teamviewer (creo la VPV), riesco ad accedere alle risorse condivise, ma come faccio a "puntare" il webserver dall'esterno?

denis76
13-04-2010, 21:07
1) Puoi usare OpenVpn se riesci a capire come funziona.
2) Puoi usare Hamacki. Se lo installi su A2 in esso verrà configurata una scheda di rete virtuale che avrà un suo tale indirizzo. A questo punto puoi fare una regola di nat su quella scheda per cui tutte le connessioni fatte sulla porta 80 vengono redirette su A1. A questo punto scriverai da remoto http://A2 e verrai rediretto in verità sui A1.

haka
13-04-2010, 21:34
Grazie mille. La teoria è chiara: VPN e redirect tramite NAT.... ma la pratica: come faccio la regola?

magonicola
13-05-2010, 16:26
Salve ragassuoli,

ho trovato la mia soluzione, che non è detto essere l'unica nè la ottima, ma è molto soddisfacente.

Innanzitutto REGOLA DEL POLLICE ALTO: quando si tratta di problemi di reti/internet, dare SEMPRE un occhio alla Apache Software Foundation :)

E proprio lì c'è la soluzione ai nostri problemi.

Ricapitolando da B1 devo accedere ad A2 che mi forwarda su A1.

SOLUZIONE:
Spiego rapidamente per mancanza di tempo e presupponendo un piccolo background culturale dei lettori :)

Installare APACHE nel pc A2 (anche una stand-alone tipo XAMPPLite - da me in effetti scelta - va più che bene).


Accedere al file di configurazione httpd.conf che sta da qualche parte :) e abilitare le seguenti linee togliendo il cancelletto ad inizio riga:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule cache_module modules/mod_cache.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule headers_module modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so


Andate alla fine del file ed aggiungete le seguenti linee:

####PROXY#####
<proxy>
Order deny,allow
Allow from all
</proxy>

ProxyPass / http://192.168.1.190/
ProxyPassReverse / http://192.168.1.190/
ProxyPreserveHost On
####FINEPROXY#####

dove 192.168.1.190 è l'ip del pc A1, quello "privato" che si vuole "interrogare" dall'esterno.


Salvare il tutto e riavviare Apache (si ricorda che gira sul pc A2).




Ovivamente da questa "base" funzionante potete fare innumerevoli modifiche per adattare il funzionamento del sistema alle vostre esigenze.

Per dovere di cronaca, in letteratura questo approccio è chiamato REVERSE PROXY e serve... ad un sacco di cose, cercate su google :)

Se arrivati a questo punto avete come me esultato perchè avete provato tutto a casa e poi siete rimasti delusissimi perchè "sul campo" non funzionava un ciufolo senza apparente motivo, sappiate che:

Connessioni Fastweb o quasi tutte le HSDPA (via cellulare) nattano gli ip e non permettono l'accesso diretto ad un terminale dall'esterno. Leggi: non hanno IP pubblico.
Come contattare A2?
Io ho risolto così:


Installare Teamviewer sul pc A2 includendo la VPN

Installare Teamviewer con VPN su tutti i pc "host" del tipo B1 - quelli esterni.

instaurare una VPN tra i due - si può associare un nome simbolico al pc A2 su teamviewer, creare eseguibili che la facciano instaurare direttamente, creare un dyndns per l'ip privato-virtuale di A2 (che nn cambia mai) e tutte ste cose qui, per le quali vi rimando alla documentazione di Teamviewer ed a zio google :)


Fatto questo, da B1 instauro una VPN con A2 (IP_B1=7.0.0.1, IP_B2=7.0.0.2 ad es) e faccio richieste http del tipo http://7.0.0.2/index.php che A2 modificherà in http://192.168.1.190 (IP_A1) le inoltrerà ad A1, attenderà la risposta, cambierà tutte le stringe reinserendo il suo ip al posto di quello di A1 e rispedirà in maniera trasparente a B2.

Al solito se qualcuno ha qualche obiezione/consiglio/altro può fare reply.

Di chiù nin zò!

CIAO RAGA!

haka
17-05-2010, 21:54
Salve ragassuoli, ho trovato la mia soluzione, che non è detto essere l'unica nè la ottima, ma è molto soddisfacente. Innanzitutto REGOLA DEL POLLICE ALTO: quando si tratta di problemi di reti/internet, dare SEMPRE un occhio alla Apache Software Foundation E proprio lì c'è la soluzione ai nostri problemi. Ricapitolando da B1 devo accedere ad A2 che mi forwarda su A1. SOLUZIONE: Spiego rapidamente per mancanza di tempo e presupponendo un piccolo background culturale dei lettori * Installare APACHE nel pc A2 (anche una stand-alone tipo XAMPPLite - da me in effetti scelta - va più che bene). * Accedere al file di configurazione httpd.conf che sta da qualche parte e abilitare le seguenti linee togliendo il cancelletto ad inizio riga: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule cache_module modules/mod_cache.so LoadModule disk_cache_module modules/mod_disk_cache.so LoadModule mem_cache_module modules/mod_mem_cache.so LoadModule headers_module modules/mod_headers.so LoadModule deflate_module modules/mod_deflate.so * Andate alla fine del file ed aggiungete le seguenti linee: ####PROXY##### <proxy> Order deny,allow Allow from all </proxy> ProxyPass / http://192.168.1.190/ ProxyPassReverse / http://192.168.1.190/ ProxyPreserveHost On ####FINEPROXY##### dove 192.168.1.190 è l'ip del pc A1, quello "privato" che si vuole "interrogare" dall'esterno. * Salvare il tutto e riavviare Apache (si ricorda che gira sul pc A2). Ovivamente da questa "base" funzionante potete fare innumerevoli modifiche per adattare il funzionamento del sistema alle vostre esigenze. Per dovere di cronaca, in letteratura questo approccio è chiamato REVERSE PROXY e serve... ad un sacco di cose, cercate su google Se arrivati a questo punto avete come me esultato perchè avete provato tutto a casa e poi siete rimasti delusissimi perchè "sul campo" non funzionava un ciufolo senza apparente motivo, sappiate che: Connessioni Fastweb o quasi tutte le HSDPA (via cellulare) nattano gli ip e non permettono l'accesso diretto ad un terminale dall'esterno. Leggi: non hanno IP pubblico. Come contattare A2? Io ho risolto così: * Installare Teamviewer sul pc A2 includendo la VPN * Installare Teamviewer con VPN su tutti i pc "host" del tipo B1 - quelli esterni. * instaurare una VPN tra i due - si può associare un nome simbolico al pc A2 su teamviewer, creare eseguibili che la facciano instaurare direttamente, creare un dyndns per l'ip privato-virtuale di A2 (che nn cambia mai) e tutte ste cose qui, per le quali vi rimando alla documentazione di Teamviewer ed a zio google

Fin qui tutto ok.




Fatto questo, da B1 instauro una VPN con A2 (IP_B1=7.0.0.1, IP_B2=7.0.0.2 ad es) e faccio richieste http del tipo http://7.0.0.2/index.php che A2 modificherà in http://192.168.1.190 (IP_A1) le inoltrerà ad A1, attenderà la risposta, cambierà tutte le stringe reinserendo il suo ip al posto di quello di A1 e rispedirà in maniera trasparente a B2.

Non appena vado a http://7.x.x.x/index.php con IE mi da "Impossibile visualizzare....." con Firefox "Teamviewer is running".

PS: Il DMZ del router in disable!!! :bhò:

magonicola
17-05-2010, 22:52
forse teamviewer si è impossessato della porta 80... in effetti tw usa 2 porte, o la 80 o un'altra se trova la 80 occupata.
Lo scopo è far trovare sempre la 80 occupata, perciò sul pc A2 DEVI NECESSARIAMENTE lanciare prima apache sulla 80 e POI teamviewer, che si metterà su una porta ausiliaria che non ricordo.
Prova e fammi sapere! :)

PS: tutto quest'accrocchio è per fare reverse proxy senza router, se hai la rete A controllata da un router è tutto pseudo inutile nel senso che si può fare in modo molto + semplice, se ad es il router ha una connessione, facendo fare direttamente a lui il port forwarding :|

Loading