Topic: Accesso remoto da Internet con IP pubblico a client in sottorete  (Letto 298 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Pasquale

  • python unicellularis
  • *
  • Post: 7
  • Punti reputazione: 0
    • Mostra profilo
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

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 380
  • Punti reputazione: 0
    • Mostra profilo
Re:Accesso remoto da Internet con IP pubblico a client in sottorete
« Risposta #1 il: Novembre 16, 2020, 10:36 »
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.
« Ultima modifica: Novembre 16, 2020, 10:40 da nuzzopippo »

Offline Pasquale

  • python unicellularis
  • *
  • Post: 7
  • Punti reputazione: 0
    • Mostra profilo
Re:Accesso remoto da Internet con IP pubblico a client in sottorete
« Risposta #2 il: 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?

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 380
  • Punti reputazione: 0
    • Mostra profilo
Re:Accesso remoto da Internet con IP pubblico a client in sottorete
« Risposta #3 il: Dicembre 06, 2020, 12:17 »
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?

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.

Offline Pasquale

  • python unicellularis
  • *
  • Post: 7
  • Punti reputazione: 0
    • Mostra profilo
Re:Accesso remoto da Internet con IP pubblico a client in sottorete
« Risposta #4 il: Dicembre 12, 2020, 13:00 »
 "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
« Ultima modifica: Dicembre 12, 2020, 13:03 da Pasquale »

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 380
  • Punti reputazione: 0
    • Mostra profilo
Re:Accesso remoto da Internet con IP pubblico a client in sottorete
« Risposta #5 il: Dicembre 12, 2020, 15:17 »
... 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

Come Ti ho detto in precedenza, non ci ho mai provato, prendimi con molle da 1 Km (e prega con me che qualche utente pratico in materia voglia intervenire sugli svarioni anche concettuali).

Dovessi farlo io, in primo luogo mi doterei di un VPS sul quale poter installare i miei programmi ... so che esistono fornitori di servizi di tal genere ma non ne ho mai cercati e non conosco eventuali prezzi.

Una volta che disponga di detto VPS mi scriverei un programmino con un socket da mettere in ascolto su di una porta, ed accetti richieste di connessione da parte di un gruppo utenti predefinito, comunichi loro indirizzo IP interessante e termini la connessione, ovviamente le comunicazioni sarebbero criptate e su IPV6, i socket python possono da lungo tempo soddisfare tali esigenze (il link è relativo a comunicazione IPV4-IPV6), ovviamente detto programmino dovrebbe poi essere messo in funzione sul VPS al suo avvio (su macchina virtuale linux sarebbe da lanciare con systemd, procedura un attimino complessa, da studiarsela nel caso)

Dici che la Tua applicazione funziona già in lan locale, dovrebbe funzionare senza grosse differenze anche con indirizzo IPV6 che, necessariamente, dovrebbe adottare, sempre di protocollo TCP-IP si tratta ... poi, ovvio, dipende anche un po' dalla Tua applicazione, da come è fatta e da cosa utilizza (librerie, intendo).
Una volta conosciuti gli indirizzi IP pubblici dei due hosts che vuoi connettere, con il client invece di connetterti con indirizzo "192.168.etc" ti connetti all'indirzzo IPV6 del server ricevuto, ovviamente re-indirizzato dal router.

Senza partire "direttamente" per il "server VPS", intanto potresti controllare la possibilità di accesso tramite internet semplicemente leggendo l'indirizzo IP pubblico del server tramite uno dei tanti servizi che To lo dicono, tipo Mio-IP.it o altri (cerca con google) e provare a connetterti da internet, dalla Tuo lan o, meglio ancora, da altra, per vedere se la Tua applicazione funziona già così com'è, ovviamente con adeguatamente impostato il re-indirizzamento sul Tuo router.
« Ultima modifica: Dicembre 12, 2020, 15:19 da nuzzopippo »