GordonFreeman
29-07-2008, 02:01
Si può fare in modo che due pc, entrambi dietro una NAT, possano comunicare fra loro direttamente? Non importa se tramite TCP o UDP.
E questo senza che tutto il traffico passi per un terzo server. Un server al massimo può essere usato all'inizio per permettere ai client di connettersi fra loro direttamente.
Ho provato a fare un test veloce.
Ho creato un programmino server, che gira su un PC con IP pubblico, e che riceve un pacchetto UDP.
Dopodichè, risponde all'infinito al client che lo ha contattato, e intanto stampa su schermo l'indirizzo e porta esterni del client.
Il client, che risiede sul mio pc dietro una NAT, manda un pacchetto al server e poi riceve pacchetti all'infinito e stampa su schermo il contenuto dei pacchetti, semplicemente.
Poi, li ho avviati e ho preso nota dell' [IP : porta] esterni del client , che il server stampava su schermo.
Infine, ho creato un terzo programmino che gira sempre sullo stesso pc del client, e manda pacchetti al client (conosco i suoi IP : porta esterni).
Esito : il client non riceve pacchetti dal terzo programma, ma solo dal server, infatti dopo ho chiuso il server... e il client ha smesso di ricevere pacchetti mentre l'altro programmino glieli mandava.. (l'ip e porta erano corretti, ho provato più volte).
Dove sta lo sbaglio?? Forse c'è un firewall sul mio ISP (la Tiscali) che si ricorda che il client ha contattato una certa macchina esterna, e permette le risposte solo da essa e non anche da altre ??
Se qualcuno è riuscito a far comunicare due pc dietro nat, usando un server o meno, può spiegarmi come si fa? thx
E questo senza che tutto il traffico passi per un terzo server. Un server al massimo può essere usato all'inizio per permettere ai client di connettersi fra loro direttamente.
Ho provato a fare un test veloce.
Ho creato un programmino server, che gira su un PC con IP pubblico, e che riceve un pacchetto UDP.
Dopodichè, risponde all'infinito al client che lo ha contattato, e intanto stampa su schermo l'indirizzo e porta esterni del client.
Il client, che risiede sul mio pc dietro una NAT, manda un pacchetto al server e poi riceve pacchetti all'infinito e stampa su schermo il contenuto dei pacchetti, semplicemente.
Poi, li ho avviati e ho preso nota dell' [IP : porta] esterni del client , che il server stampava su schermo.
Infine, ho creato un terzo programmino che gira sempre sullo stesso pc del client, e manda pacchetti al client (conosco i suoi IP : porta esterni).
Esito : il client non riceve pacchetti dal terzo programma, ma solo dal server, infatti dopo ho chiuso il server... e il client ha smesso di ricevere pacchetti mentre l'altro programmino glieli mandava.. (l'ip e porta erano corretti, ho provato più volte).
Dove sta lo sbaglio?? Forse c'è un firewall sul mio ISP (la Tiscali) che si ricorda che il client ha contattato una certa macchina esterna, e permette le risposte solo da essa e non anche da altre ??
Se qualcuno è riuscito a far comunicare due pc dietro nat, usando un server o meno, può spiegarmi come si fa? thx