Corso di Applicazioni Telematiche

33
Tecniche e protocolli per l’attraversamento di NAT (Network Address Translator) Corso di Applicazioni Telematiche A.A. 2010-11 Prof. Simon Pietro Romano Università degli Studi di Napoli Federico II Facoltà di Ingegneria

Transcript of Corso di Applicazioni Telematiche

Page 1: Corso di Applicazioni Telematiche

Tecniche e protocolli per l’attraversamento di

NAT (Network Address Translator)

Corso di Applicazioni TelematicheA.A. 2010-11

Prof. Simon Pietro Romano

Università degli Studi di Napoli Federico II

Facoltà di Ingegneria

Page 2: Corso di Applicazioni Telematiche

Outline

• NAT: Network Address Translation

• Problemi legati all’utilizzo dei NAT in reti VoIP

• Protocolli standard per NAT-traversal

• STUN

• TURN

• ICE

2

Page 3: Corso di Applicazioni Telematiche

NAT: Network Address Translation

• Network Address Translation (RFC 3022) consente ad

un dispositivo di agire come intermediario tra Internet

(rete pubblica) e una rete privata

• In questo modo, un unico indirizzo IP può

rappresentare un intero gruppo di computer

• Aiuta a preservare gli indirizzi IPv4

3

Page 4: Corso di Applicazioni Telematiche

NAT

• L’uso più comune del NAT è quello di mappare un

insieme di indirizzi privati su di un unico indirizzo

pubblico, utilizzando differenti porti per mantenere

traccia delle diverse connessioni

• Per-flow stateful

4

Page 5: Corso di Applicazioni Telematiche

NAT

• Quando il router riceve un pacchetto inviato da un

computer della rete privata ad un computer esterno,

salva in una tabella l’indirizzo e il porto del mittente,

oltre ai nuovi valori che esso assegna

• Tale tabella viene consultata anche quando il router

riceve un pacchetto dal computer destinazione

• Le connessioni devono essere iniziate dall’interno!

5

Page 6: Corso di Applicazioni Telematiche

NAT: un esempio

10.0.0.1

10.0.0.2

10.0.0.3

S: 10.0.0.1, 3345D: 128.119.40.186, 80

110.0.0.4

138.76.29.7

1: host 10.0.0.1 sends datagram to 128.119.40.186, 80

NAT translation tableWAN side addr LAN side addr

138.76.29.7, 5001 10.0.0.1, 3345…… ……

S: 128.119.40.186, 80 D: 10.0.0.1, 3345 4

S: 138.76.29.7, 5001D: 128.119.40.186, 802

2: NAT routerchanges datagramsource addr from10.0.0.1, 3345 to138.76.29.7, 5001,

updates table

S: 128.119.40.186, 80 D: 138.76.29.7, 5001 3

3: Reply arrivesdest. address:

138.76.29.7, 5001

4: NAT routerchanges datagram

dest addr from138.76.29.7, 5001 to 10.0.0.1, 3345

6

Page 7: Corso di Applicazioni Telematiche

NAT

• Un NAT non è un proxy

• Approccio “trasparente”

• Le applicazioni sono in genere all’oscuro della presenza di NAT

• Il NAT è in genere all’oscuro del tipo di applicazione che genera i pacchetti

• Problema: che succede quando informazioni su indirizzi IP e/o numero di porto sono trasportate nel payload dei pacchetti?

“my address is 10.1.1.1” Internet sees 161.44.1.1

Internet

7

Page 8: Corso di Applicazioni Telematiche

Tipi di NAT (RFC 4787)

Mapping

• Endpoint-Independent

• Address-Dependent

• Address and Port-

Dependent

Filtering

• Endpoint-Independent

• Address-Dependent

• Address and Port-

Dependent

Rest

rict

ive

P

erm

issi

ve

8

Page 9: Corso di Applicazioni Telematiche

Tipi di NAT (RFC 3489, obsoleta)

• Full Cone

• Restricted Cone

• Port Restricted Cone

• Symmetric

Rest

rict

ive Perm

issi

ve

9

Page 10: Corso di Applicazioni Telematiche

Indirizzo server-reflexive

• L’indirizzo IP ed il numero di porta “pubblici” costituiscono il cosiddetto server-reflexivetransport address

• Il binding è creato quando un pacchetto TCP SYN oppure il primo pacchetto UDP è inviato dalla rete interna

• Il binding è mantenuto fino a quando la connessione TCP o il flusso UDP sono “vivi”• Il timeout di un flusso dipende dalle implementazioni

Private Public 192.168.1.123:1234 <---> 143.225.229.212:5678

10

Page 11: Corso di Applicazioni Telematiche

Full Cone NAT

• Qualunque pacchetto proveniente dall’esterno e

indirizzato all’indirizzo server-reflexive di A

viene inoltrato

A

B

C

P1

P2

P1

P2

P1

P2

P3

FC NAT

11

Page 12: Corso di Applicazioni Telematiche

Restricted Cone NAT

• Solo i pacchetti provenienti dall’indirizzo IP dell’hostcontattato in precedenza (B) e indirizzati all’indirizzo server-reflexive di A vengono inoltrati

• Se B invia pacchetti con porto sorgente diverso da quello su cui li riceve da A, questi vengono inoltrati ugualmente

• Se A invia pacchetti, dal medesimo porto sorgente, verso più destinazioni, questi vengono tutti “mappati” sullo stesso indirizzo server-reflexive

A

B

C

P1

P2

P1

P2

P1

P2

P3

RC NAT

12

Page 13: Corso di Applicazioni Telematiche

Port Restricted Cone NAT

• Solo i pacchetti provenienti dall’indirizzo IP dell’hostcontattato in precedenza (B) e indirizzati all’indirizzo server-reflexive di A vengono inoltrati

• Se B invia pacchetti con porto sorgente diverso da quello su cui li riceve da A, questi vengono scartati dal NAT

• Se A invia pacchetti, dal medesimo porto sorgente, verso più destinazioni, questi vengono tutti “mappati” sullo stesso indirizzo server-reflexive

A

B

C

P1

P2

P1

P2

P1

P2

P3

PRC NAT

13

Page 14: Corso di Applicazioni Telematiche

Symmetric NAT

• Solo i pacchetti provenienti dall’indirizzo IP dell’hostcontattato in precedenza (B) e indirizzati all’indirizzo server-reflexive di A vengono inoltrati

• Se B invia pacchetti con porto sorgente diverso da quello su cui li riceve da A, questi vengono scartati dal NAT

• Se A invia pacchetti, dal medesimo porto sorgente, verso più destinazioni, questi vengono tutti “mappati” su indirizzi server-reflexive diversi

A

B

C

P1

P2

P1

P2

P1

P2

P3

P8

S NAT

14

Page 15: Corso di Applicazioni Telematiche

NAT & SIP

• I messaggi SIP trasportano informazioni su indirizzo IP e numeri di porto impiegati dallo User Agent che li genera

• Tali informazioni sono contenute in alcuni header SIP e nell’eventuale payload SDP

• Tali informazioni sono necessarie sia per completare correttamente la fase di segnalazione, sia per instaurare correttamente i canali RTP

• Un NAT analizza (e modifica) esclusivamente l’header di livello IP

15

Page 16: Corso di Applicazioni Telematiche

Esempio di messaggio SIP/SDP

1. INVITE sip:[email protected]:10455 SIP/2.0

2. Via: sip/2.0/UDP 192.168.0.154:5060;branch=z9hG4bKz9hG4bKf8e2c7ca

3. Via: SIP/2.0/UDP 192.168.0.24:5060

4. From: <sip:[email protected]>;tag=414d5646-ad-407469a8

5. To: <sip:[email protected]>

6. Contact:<sip:[email protected]>

7. Call-ID: [email protected]

8. Subject: sip phone call

9. CSeq: 2 INVITE

10. User-Agent: Mitel-5055-SIP-Phone 2.0.1.23 08000F0E8F3F

11. Allow: INVITE,ACK,CANCEL,BYE,OPTIONS,REFER,NOTIFY

12. Max-Forwards: 70

13. Content-Type: application/sdp

14. Content-Length: 242

15. Record-Route: <sip:192.168.0.154:5060;maddr=192.168.0.154>

16.

17. v=0

18. o=215 1095587577 1095587576 IN IP4 192.168.0.24

19. s=SIP Call

20. c=IN IP4 192.168.0.24

21. t=0 0

22. m=audio 8004 RTP/AVP 0 8 18 96

23. a=rtpmap:0 PCMU/8000

24. a=rtpmap:8 PCMA/8000

25. a=rtpmap:18 G729/8000

26. a=rtpmap:96 telephone-event/8000

16

Page 17: Corso di Applicazioni Telematiche

NAT & SIP: problemi

• Un peer che invia un messaggio SIP nei cui headerContact, From o To è riportato un indirizzo privato, potrebbe non essere in grado di ricevere messaggi di risposta o, in generale, di essere contattato

• Problema parzialmente risolto con l’RFC 3581: An Extension to the Session Initiation Protocol for Symmetric Response Routing

• Se il body SDP contiene indirizzi privati, potrebbe risultare impossibile instaurare canali RTP bidirezionali per la trasmissione dei flussi multimediali

• È necessario un metodo per scoprire il proprio indirizzo server-reflexive e comunicarlo ai nodi remoti con cui si vuole comunicare

17

Page 18: Corso di Applicazioni Telematiche

Application Layer Gateway (ALG)

• Introduce intelligenza all’interno di un NAT,

rendendolo consapevole dell’applicazione che

genera i pacchetti

• Modifica indirizzi IP e numeri di porto all’interno

del payload dei pacchetti

• Ogni applicazione richiede un apposito ALG

• FTP, SIP, RTSP, RealAudio, …

10.1.1.1:1234

Internet

161.44.1.1:5678NAT + ALG

18

Page 19: Corso di Applicazioni Telematiche

Problemi con gli ALG

• È necessario un ALG diverso per ogniapplicazione

• L’ALG va aggiornato ad ogni modifica o estensione dello standard

• Richiede che il protocollo non sia crittografato

• Un ALG opera come un “man in the middle”, pertanto è difficile distinguere il suo operato daun attacco MITM

• Errori nell’implementazione dell’ALG possonocausare problemi piuttosto che risolverli!

19

Page 20: Corso di Applicazioni Telematiche

STUN – RFC 5389

• Session Traversal Utilities for NAT (STUN) è un protocollo con cui un host può scoprire il proprio indirizzo server-reflexive

• Protocollo di tipo richiesta/risposta

• Può utilizzare sia UDP (più frequente) che TCP, porto 3478

• Utilizzato da:• STUN stesso, per apprendere indirizzi IP

• TURN, per configurare il server TURN

• ICE, per test di connettività

• Un server STUN è collocato nella Internet pubblica o nella rete di un ISP, qualora questi offra il servizio

• Una transazione STUN si articola nei seguenti passi:1. L’host “nattato” inizia una connessione con il server STUN, creando un

binding nella tabella del NAT

2. Il server STUN riceve il messaggio e legge l’indirizzo IP ed il portosorgenti, che costituiscono l’indirizzo server-reflexive

3. Il server STUN invia una risposta contenente, nel payload, tale indirizzo

20

Page 21: Corso di Applicazioni Telematiche

STUN flow diagram

21

Page 22: Corso di Applicazioni Telematiche

STUN

• Uno User Agent che conosce il proprio indirizzo server-reflexive, può inserirlo negli header SIP al posto del proprio indirizzo privato

• Lo stesso processo deve essere eseguito per i numeri di porto dei flussi RTP, contenuti nell’SDP

• In generale, all’atto di una chiamata un client SIP STUN-enabled eseguirà una transazione STUN per la segnalazione e altrettante transazioni quanti sono i media negoziati nell’SDP

• Sebbene sia ampiamente diffuso ed effettivamente utile in molti scenari, il protocollo STUN risulta inefficace:• In presenza di NAT simmetrici

• Quando entrambe le parti della comunicazione sono “dietro” allo stesso NAT

22

Page 23: Corso di Applicazioni Telematiche

TURN – RFC 5766

• Per essere raggiungibile, un device dietro un NAT simmetrico può utilizzare un relay

• Traversal Using Relays around NAT (TURN) è un protocollo per comunicare con il relay (server TURN)

• Sfrutta il protocollo STUN

• Il server TURN è collocato al di là del NAT, o nella Internet pubblica o nella rete di un ISP, qualora questi offra il servizio

• Una transazione TURN si articola nei seguenti passi:1. Un host nattato chiede al relay di allocare un indirizzo di

trasporto pubblico e di inoltrare i pacchetti da/verso tale indirizzo

2. Il server TURN comunica l’indirizzo allocato al client• L’indirizzo allocato dal server TURN è detto relayed address

23

Page 24: Corso di Applicazioni Telematiche

TURN flow diagram

24

Page 25: Corso di Applicazioni Telematiche

TURN

• È necessario richiedere un relayed address per la segnalazione e uno per ogni flusso RTP

• TURN garantisce la comunicazione in presenza di qualsiasi tipo di NAT• Il binding nella tabella del NAT deve essere “rinfrescato”

periodicamente

• Il server TURN è nel media path• Richiede molta banda

• Aumenta la latenza (end-to-end delay/jitter)

• Solitamente è usato come ultima soluzione, quando tutte le altre falliscono o non sono disponibili

25

Page 26: Corso di Applicazioni Telematiche

ICE – RFC 5245

• In generale, possono essere disponibili più indirizzi• Host address

• Server-reflexive address

• Relayed address

• Tutti nella loro versione UDP e TCP!

• Ciascun indirizzo potrebbe essere inadeguato sotto particolari condizioni dell’ambiente di rete

• È necessario un meccanismo per selezionare dinamicamente, tra quelli disponibili, un indirizzo che possa garantire la comunicazione: ICE!

• Interactive Connectivity Establishment (ICE) fornisce capacità di NAT-traversal per qualsiasi protocollo orientato alla sessione

• È efficace in presenza di qualsiasi tipo di NAT

• Una transazione ICE si articola in 6 passi: gathering, prioritising, encoding, offering&answering, checking, completing

26

Page 27: Corso di Applicazioni Telematiche

Step 1: Gathering

• Prima di effettuare una chiamata, il chiamante

colleziona tutti gli indirizzi IP e numeri di porto

che potrebbero garantirgli la comunicazione,

facendo anche uso di STUN e TURN.

• Ciascun indirizzo è definito candidate

• Host candidate

• Server-reflexive candidate

• Relayed candidate

27

Page 28: Corso di Applicazioni Telematiche

Step 2 e 3: Prioritizing e Encoding

• Prioritising: a ciascun indirizzo collezionato si

assegna un valore di priorità compreso tra 0 e

231-1

• Encoding: lo UA costruisce un messaggio di

INVITE; per ogni m-line presente nel body SDP, inserisce un attributo candidate per ogni

indirizzo collezionato

28

Page 29: Corso di Applicazioni Telematiche

Step 4: Offering & Answering

• L’INVITE costruito è inviato al destinatario della

chiamata

• Se il destinatario supporta ICE, esegue a sua

volta i passi 1 e 2 e genera una risposta

provvisoria

• La risposta provvisoria avrà un body SDP

contenente i candidate del destinatario

29

Page 30: Corso di Applicazioni Telematiche

Step 5: Checking

• Lo UA combina ogni suo candidate con tutti quelli dell’altro, producendo una lista di candidate pairs

• A ciascun candidate pair viene assegnata una priorità pari alla somma delle priorità dei singoli candidate

• Per verificare se una coppia di candidate possa essere sfruttata per la comunicazione, ogni UA esegue una transazione STUN verso l’altro, utilizzando gli indirizzi del candidate pair

• Gli stessi indirizzi IP e numeri di porto saranno eventualmente usati per la trasmissione dei flussi RTP

30

Page 31: Corso di Applicazioni Telematiche

Step 6: Completing

• Al termine della fase precedente, lo UA avrà “eletto” una coppia di indirizzi

• Una delle parti, tipicamente il chiamante, genera un’ultima transazione STUN verso l’altro UA, confermando il candidate pair selezionato

• A questo punto, lo UA del destinatario può iniziare a far squillare il telefono

• Quando la chiamata è stabilita e il three-way-handshakedi SIP è completato, il chiamante genera un re-INVITE al fine di aggiornare gli indirizzi IP ed i numeri di porto di default contenuti nell’SDP• Quest’ultimo scambio di messaggi ha lo scopo di informare

eventuali elementi “ICE-unaware” che si trovino nel path di segnalazione del percorso effettivo che seguiranno i flussi RTP

31

Page 32: Corso di Applicazioni Telematiche

ICE

• ICE incrementa i ritardi dovuti alla fase di call setup

• Lo UA del destinatario inizia a squillare solo durante lo step6!

• L’aumento del ritardo, comunque, tende ad essere proporzionale alla complessità dello scenario

• Per una semplice chiamata tra due endpoint aventi indirizzo pubblico, ICE aggiunge un singolo RTT alla fase di call-setup

• L’utilizzo di ICE riesce a garantire che, quando il destinatario risponderà alla chiamata, i flussi multimediali fluiranno correttamente in entrambe le direzioni

• Elimina di cosiddetti “ghost ring”

32

Page 33: Corso di Applicazioni Telematiche

Domande?

33