Sto pensando di sviluppare un programma simile a un proxy per inoltrare le porte su un PC remoto a un PC locale (ad esempio SSH). Supponiamo che sia i PC locali che quelli remoti siano in esecuzione dietro firewall tipici (ad esempio, firewall del router a banda larga del consumatore, firewall di Windows o firewall aziendali).
Il programma sarà un programma Java che l'utente eseguirà sul PC remoto e locale. Il client remoto esegue periodicamente il polling di un server centrale per determinare se ci sono connessioni client in sospeso. Una sessione può essere avviata come segue:
- Il client locale contatta il server centrale e richiede i dettagli della connessione corrente per uno specifico client remoto.
- Il server centrale risponde con l'ultimo indirizzo IP e porta ricevuti dal server remoto
- La prossima volta che il server remoto interroga il server centrale, il vengono restituiti l'indirizzo IP e la porta del client. Il server remoto avvia una connessione al client locale utilizzando l'indirizzo IP e porta restituita dal server centrale e ascolta una risposta su a porta casuale. Il server remoto passerà il valore della porta che è ascoltando sul server centrale.
- Vai a 1, se il client non riesce a connettersi al server.
Tutte le comunicazioni con il server centrale avverranno tramite HTTP / HTTPS sulle porte 80 e amp; 443.
Funzionerebbe o un tipico firewall bloccherebbe le interazioni.