Tecnologie

Dettaglio dell'articolo:

sabato 27 settembre 2008

UDP hole punching

Con "UDP hole punching" si intende una tecnica che consente di stabilire connessioni UDP bidirezionali tra computer appartenenti a reti private connesse tramite Internet utilizzando NAT.

Ogni host dietro un dispositivo NAT contatta un terzo server noto accessibile per mezzo di un indirizzo pubblico e poi, una volta che il dispositivo NAT ha stabilito una sessione UDP con tale host, può passare alla comunicazione diretta sperando che il dispositivo NAT mantenga le informazioni di stato, nonostante il fatto che i pacchetti provengono da host differenti.

UDP hole punching non funziona con le Symmetric NAT (note anche come NAT bi-direzionale ), che tendono ad essere utilizzate all'interno di grandi reti aziendali. Con Symmetric NAT, essendo l'indirizzo IP del server noto diverso da quello del punto finale, la mappatura NAT che il server noto vede è diversa dalla mappatura che l'endpoint avrebbe utilizzato per inviare pacchetti attraverso il client.

Seguendo un approccio un po' più elaborato entrambi gli host iniziano ad inviare pacchetti gli uni agli altri, effettuando diversi tentativi. Su un " Restricted Cone NAT" , il primo pacchetto proveniente dali altri host sarà bloccato. Dopo che la periferica NAT avrà memorizzato un record conseguente all'invio di un pacchetto destinato alle altre macchine, essa consentirà che ogni pacchetto proveniente da questi indirizzi IP e con lo stesso numero di porta passi attraverso.

La tecnica è ampiamente utilizzata nel software P2P e telefonia VoIP. Si tratta di uno dei metodi utilizzati da Skype per aggirare i firewall e dispositivi NAT. Può anche essere utilizzato per stabilire connessioni  VPN (utilizzando, ad esempio, OpenVPN , strongSwan ).

La stessa tecnica è talvolta utilizzata con connessioni TCP, anche se con molto meno successo.

Algoritmo

Siano A e B i due host, ciascuno nella propria rete privata; N1 e N2 sono i due dispositivi NAT; S è un server pubblico con un indirizzo IP pubblico e raggiungibile.

  1. A e B iniziano una conversazione UDP con S; i dispositivi NAT N1 e N2 creano traduzioni UDP e assegnano numeri di porta temporanei per la comunicazione esterna.
  2. S comunica i rispettivi numeri di porta agli host A e B
  3. A e B contattano  i rispettivi dispositivi NAT direttamente sulle porte tradotte; il NAT utilizza le porte precedentemente create per inviare i pacchetti di A e B

Commenti:

Scrivi un commento:

Archivio