Programmazione Python > Programmazione in rete - web

Accesso remoto da Internet con IP pubblico a client in sottorete

(1/2) > >>

Pasquale:
Salve a tutti,
sto sviluppando un programma per la gestione remota di alcuni servizi tra due PC: uno server e l'altro client. Il programma funziona perfettamente nella mia rete locale LAN, ora però vorrei avere la possibilità di accedere al server da remoto anche da internet utilizzando l'IP pubblico. Come posso fare? Escludendo la pratica di aprire le porte del router, c'è un altro modo per farlo? Teamviewer ad esempio fa il desktop remoto senza troppi problemi e senza aprire nessuna porta del router. Come fa?

Saluti

nuzzopippo:
Non sono molto esperto in materia, quindi prendimi con le molle, ma non credo si possa escludere "la pratica di aprire le porte del router", in qualche modo devi comunque reindirizzare l'accesso esterno al server nella lan locale.

Riguardo TeamViewer, non lo conosco. Probabilmente utilizza dei tunnel criptati, tipo OpenVPN, i quali faranno capo a dei server che stabiliranno la comunicazione tra i due host coinvolti.

Sul "come realizzare" un accesso "anche da internet", dipende un po' dalla Tua connessione, se essa dispone di un indirizzo IP pubblico "fisso", semplicemente utilizzi tale indirizzo per connetterti alla porta "occorrente", le impostazioni del tuo router dovranno fare il resto.

Quando, invece, Tu disponga di un indirizzo IP dinamico (la stragrande maggioranza dei casi) "potresti" appoggiarti ad un server VPN e stabilire una connessione VPN (Virtual Private Network) suo tramite ... tale "casistica" è avulsa dal Tuo programma, si tratta di stabilire un sistema di rete che funzioni all'incirca come una rete locale in internet, separata dal resto tramite un "tunnel" criptato, una spiegazione del funzionamento.
Vi è da dire che una connessione VPN dipende molto dalla "serietà" del server utilizzato, fa decadere le prestazioni della comunicazione e, comunque, la garanzia di riservatezza non è mai al 100% (unico computer "sicuro" è quello non connesso e spento).

Non sono a conoscenza di tecniche per la comunicazione da internet tra IP dinamici senza intermediazione di server dedicati (tipo opendns, etc.) la difficoltà è data dalla mancata conoscenza degli indirizzi da parte degli applicativi.

Pasquale:
Ti ringrazio per la risposta. Il problema degli IP dinamici si risolve facilmente: basta acquistare un semplice servizio di hosting e metterci su un programmino java che faccia da server a cui i client si collegano e dichiarano i propri IP. Il problema invece è il trasferimento dei dati. Nel mio caso specifico vorrei fare uno streaming video ed inviare alcune semplici stringhe per controllare dei componenti elettronici. Lo streaming video credo sia la cosa più pesante da inviare, ma come la invio?? tramite http potrei inviare le stringhe di comandi ma per il video non credo sia il massimo perchè non ci sarebbe nessun tipo di compressione e soprattutto ci sarebbe una latenza enorme. Qualche idea?

nuzzopippo:

--- Citazione da: Pasquale - Dicembre 05, 2020, 16:54 ---Ti ringrazio per la risposta. Il problema degli IP dinamici si risolve facilmente: basta acquistare un semplice servizio di hosting e metterci su un programmino java che faccia da server a cui i client si collegano e dichiarano i propri IP. Il problema invece è il trasferimento dei dati. Nel mio caso specifico vorrei fare uno streaming video ed inviare alcune semplici stringhe per controllare dei componenti elettronici. Lo streaming video credo sia la cosa più pesante da inviare, ma come la invio?? tramite http potrei inviare le stringhe di comandi ma per il video non credo sia il massimo perchè non ci sarebbe nessun tipo di compressione e soprattutto ci sarebbe una latenza enorme. Qualche idea?

--- Termina citazione ---

Le comunicazioni, anche quelle http, sono comunque in forma binaria, se devi crearti un programma intermedio in java per smistare le comunicazioni dipende un po' da cosa Ti mette a disposizione il "servizio di hosting", se Ti è possibile avere un servizio con aperte porte a Tua discrezione per Tuoi programmi, allora credo Tu possa crearti un socket in ascolto su una porta scelta e smistarlo tra i client come un qualsiasi file, te lo "comprimi" alla fonte e lo decomprimi a destinazione raggiunta

 ... mai provata la cosa ma ipotizzando un nodo di comunicazione intermedio, quest'ultimo non potrebbe, magari.  comunicare agli host interessati i vicendevoli indirizzi IP pubblici del momento, e con questa conoscenza non potrebbero essi stabilire una connessione diretta tra loro (sempre con i router di mezzo, ovvio)?

Magari questa è una domanda per più esperti di me.

Pasquale:
 "mai provata la cosa ma ipotizzando un nodo di comunicazione intermedio, quest'ultimo non potrebbe, magari.  comunicare agli host interessati i vicendevoli indirizzi IP pubblici del momento, e con questa conoscenza non potrebbero essi stabilire una connessione diretta tra loro (sempre con i router di mezzo, ovvio)?"

Si esatto era proprio questo che vorrei fare: cioè il server intermedio mi serve solo per comunicare ai rispettivi clienti quali sono gli IP pubblici reciproci e le sottoreti, ma poi vorrei creare una comunicazione diretta tra i due client, perchè comunque saranno solo due e non di più. E' fattibile? se si, come si fa? all'interno di una rete LAN privata lo so' fare, sul web però non ho idea

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa