|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2002
Messaggi: 60
|
[java] NAT e indirizzi privati
ciao a tutti
ho un problema da proporvi come posso fare per conoscere gli indirizzi interni di una lan che esce all'esterno attraverso nat? sto realizzando un sistema di tipo brokered peer-to-peer in cui ci sono dei client che fanno da relay. il mio problema è che se ci sono più client che si trovano dietro lo stesso firewall-nat allora per questi client ci sarà un unico relay che si trova sempre nella subnet ora come posso individuare client di questo tipo? avevo pensato a protocolli p2p tipo gnutella...qcuno sa darmi qualche indicazione? ah!il tutto codato in java...ma se mi date spunti di partenza è già tanto andrea |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Mi sa che puoi fare poco... Se N host con indirizzo IP privato escono con un unico IP pubblico non puoi connetterti ad un determinato host se non tramite modifiche alla configurazione del firewall/router...
In pratica gli host della rete interna non potranno essere raggiunti su eventuali porte in listen...al massimo puoi creati sul server una porta in ascolto apposita per quell'host... Un po' l'inverso di quello che avviene per il passive mode nei server FTP... |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Dec 2002
Messaggi: 60
|
ma il nat non assegna indirizzi diversi ad ogni singolo indirizzo interno?
mi semrba che sia il napt che faccia tutto con un unico indirizzo...o sbaglio? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Dipende...NAT può voler dire sia una che l'altra cosa...poi i produttori lo chiamano PAT o NAPT...
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Dec 2002
Messaggi: 60
|
capisco...quindi tu dici che non si possa fare molto...
nemmeno capire in un certo modo quale sia il client "più vicino" per fare da relay? |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Solitamente se sono dietro ad un firewall sono tutti "vicini" allo stesso modo... Tanto vale sceglierne uno qualunque...
Comunque se c'è un NAT 1-1, cioè una corrispondenza biunivoca fra indirzzo pubblico ed indirizzo privato la cosa cambia...infatti in tal caso il PC è a tutti gli effetti come se fosse connesso direttamente in internet (a parte alcune probabili regole di filtraggio del firewall)... Ma solitamente sono solamente le macchine che fanno da server a godere di questa possibilità... |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Dec 2002
Messaggi: 60
|
quindi se io sul server implemento un meccanismo che, una volta accettata la richiesta di un client C con ip X, controlla se esiste già un relay R con indirizzo X e a quel punto assegna ad A il relay R altrimenti fa diventare A un relay per tutte le successive macchine che hanno lo stesso indirizzo X, secondo te può funzionare?
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Può funzionare, ma ricordati che non puoi dire ad A chi è il relay R all'interno della rete...al limite, se informi il client A che c'è già un relay con l'indirizzo uguale al suo dovrà essere A a valutare l'indirizzo ip privato del relay (scansione della classe o pacchetto in broadcast)...
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Dec 2002
Messaggi: 60
|
grande!
è proprio quello che avevo pensato quindi supponiamo che A sia il primo client dietro nat che si colleghi al mio server, a quel punto io memorizzo l'indirizzo di A e lo faccio diventare un relay per la sua subnet aprendo un socket datagram su una porta stabilita X ora se si collega un altro client B con lo stesso indirizzo di A, mi basterà fargli segnalare dal server che esiste già un relay per lui e far mandare ad A un messaggio broadcast sulla porta X. Ti sembra corretto? |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sì, ma tu non conosci l'indirzzo privato di A... Al limite potresti farti comunicare l'indirizzo IP privato da A stesso...e memorizzarlo sul server...
Altrimenti B deve trovarsi da solo l'indirizzo privato di A... La cosa ideale sarebbe con un messaggio in broadcast...ma non so se si possa gestire con Java... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:56.



















