seminario sul NAT traversal - the Netgroup at Politecnico di Torino

Commenti

Transcript

seminario sul NAT traversal - the Netgroup at Politecnico di Torino
Giugno 2008
Problematiche di NAT traversal
Livio Torrero
Netgroup
<[email protected]>
Problematiche di NAT traversal- 1
Copyright: si veda nota a pag. 2
Giugno 2008
Copyright note
These slides are protected by copyright and international treaties. The
title and the copyrights concerning the slides (inclusive, but non only,
every image, photograph, animation, video, audio, music and text) are the
author’s (see Page 1) property.
The slides can be copied and used by research institutes, schools and
universities affiliated to the Ministry of Public Instruction and the Ministry
of University and Scientific Research and Technology, for institutional
purpose, not for profit. In this case there is not requested any
authorization.
Any other complete or partial use or reproduction (inclusive, but not only,
reproduction on discs, networks and printers) is forbidden without written
authorization of the author in advance.
The information contained in these slides are believed correct at the
moment of publication. They are supplied only for didactic purpose and
not to be used for installation-projects, products, networks etc. However,
there might be changes without notice. The authors are not responsible
for the content of the slides.
In any case there can not be declared conformity with the information
contained in these slides.
In any case this note of copyright may never be removed and must be
written also in case of partial use.
Problematiche di NAT traversal- 2
Copyright: si veda nota a pag. 2
Giugno 2008
Sommario
Che cosa sono i NAT
BEHAVE:
Definizione
delle caratteristiche
comportamentali dei NAT
Regole per avere NAT application
“friendly”
Come rilevo di essere dietro un NAT?
STUN
Come inoltro i pacchetti attraverso un
NAT? NAT traversal
Relay
Hole
Problematiche di NAT traversal- 3
punching
Caso di studio: SIP
Copyright: si veda nota a pag. 2
Giugno 2008
Concetti base sui NAT
I Network Address Traslator effettuano la traduzione
di indirizzi e/o porte fra spazi di indirizzamento
differenti
gli indirizzi dell’uno possono essere inutilizzabili nell’altro
Es: indirizzi locali in spazio indirizzamento 1
I NAT:
Modificano gli indirizzi IP e/o le porte dei pacchetti
Mantengono informazioni di stato relativamente al mapping
fra gli spazi (binding cache)
Spazio di indirizzamento 1
(controllato dal NAT)
IP.src= X
port.src=xp
Problematiche di NAT traversal- 4
X:xp associato a
X’:xp’
Spazio di indirizzamento 2
(non controllato dal NAT)
IP.src=X’
port.src=xp’
Copyright: si veda nota a pag. 2
Giugno 2008
Esempio
Rete privata
(controllato dal NAT)
IP.src= 10.0.0.1
port.src=5060
10.0.0.1:5060
associato a
130.192.31.1:5080
Rete pubblica
(non controllato dal NAT)
IP.src=130.192.31.1
port.src=5080
130.192.31.2
I NAT permettono di risparmiare indirizzi
Gli
indirizzi IPv4 sono una risorsa preziosa
Grazie ai NAT solo chi accede alla rete pubblica ha
un IP pubblico
I NAT hanno avuto molto successo
Il
73,81% degli host sono posti dietro a NAT
Quanti hanno un access point? Contiene un NAT…
Problematiche di NAT traversal- 5
Copyright: si veda nota a pag. 2
Giugno 2008
Problemi causati dai NAT
Alcune applicazioni si basano sull’invio di
messaggi contenti indirizzi e/o porte
Un
host dietro a NAT inserisce l’indirizzo che ha nel
suo spazio di indirizzamento: non è detto che sia
globalmente utilizzabile (es indirizzo locale)
I NAT sono disegnati per soddisfare il
paradigma client/server
Il
client sta nella rete gestita dal NAT
Le applicazioni peer-to-peer non funzionano
Ogni
nodo è sia client che server
Come raggiungo un server dietro il NAT?
Chi mi garantisce che l’indirizzo e la porta pubbliche
assegnate dal NAT non cambino nel tempo?
Problematiche di NAT traversal- 6
Copyright: si veda nota a pag. 2
Giugno 2008
Sommario
Che cosa sono i NAT
BEHAVE:
Definizione
delle caratteristiche
comportamentali dei NAT
Regole per avere NAT “application
friendly”
Come rilevo di essere dietro un NAT?
STUN
Come inoltro i pacchetti attraverso un
NAT? NAT traversal
Relay
Hole
Problematiche di NAT traversal- 7
punching
Caso di studio: SIP
Copyright: si veda nota a pag. 2
Giugno 2008
Classificazione dei NAT
BEHAVE è un working group di IETF
BEHAVE nell’RFC 4787 definisce le
caratteristiche di funzionamento dei NAT
Si
definiscono le caratteristiche più comuni dei NAT
Sulla base di queste caratteristiche, vengono
fornite regole per definire il comportamento
di NAT “application friendly”
Con
opportune tecniche di NAT traversal è possibile
host dietro NAT “application friendly” possono
scambiare pacchetti senza intermediari
Anche il peer-to-pee
Esame delle sole regole principali
Problematiche di NAT traversal- 8
Copyright: si veda nota a pag. 2
Giugno 2008
Traduzione di porte e indirizzi: scenario
Un host dietro a NAT inizia ad inviare dati ad un host
esterno
Come si comporta il NAT rispetto al traffico uscente?
Come e in base a cosa associa un indirizzo/porta interno a un
indirizzo/porta esterno?
Dominio privato
?:?
Problematiche di NAT traversal- 9
10.0.0.1:5060
Copyright: si veda nota a pag. 2
Giugno 2008
Traduzione di porte e indirizzi:
Endpoint independent mapping
Il mapping non cambia in base all’indirizzo di
destinazione
130.192.31.55:80
Dominio privato
130.192.31.15:5080
Problematiche di NAT traversal- 10
130.192.31.50:5060
130.192.31.15:5080
10.0.0.1:5060
Copyright: si veda nota a pag. 2
Giugno 2008
Traduzione di porte e indirizzi:
address dependent mapping
Il NAT assegna all’host privato stesso IP pubblico e porta pubblica
l’indirizzo IP dell’host esterno contattato non cambia
130.192.31.55:5080
130.192.31.58:5080
130.192.31.55:5090
Problematiche di NAT traversal- 11
130.192.31.22:5090
10.0.0.1:5060
130.192.31.25:5080
Dominio privato
Dominio privato
130.192.31.25:5080
Copyright: si veda nota a pag. 2
130.192.31.55:5080
130.192.31.25:5080
10.0.0.1:5060
Giugno 2008
Traduzione di porte e indirizzi :
address and port dependent mapping(1/2)
Il NAT assegna all’host privato stesso IP pubblico e porta pubblica
l’indirizzo IP e la porta dell’host esterno contattato non cambiano
130.192.31.55:5080
130.192.31.58:5090
130.192.31.55:5080
Problematiche di NAT traversal- 12
130.192.31.22:5090
10.0.0.1:5060
130.192.31.25:5080
Dominio privato
Dominio privato
130.192.31.25:5080
Copyright: si veda nota a pag. 2
130.192.31.55:5090
130.192.31.22:5090
10.0.0.1:5060
Giugno 2008
Traduzione di porte e indirizzi: regola
Riassumendo:
independent mapping: si usa sempre lo stesso
mapping per tutte le destinazioni.
Address dependent mapping: si usa stesso mapping per
tutti i pacchetti inviati al medesimo IP esterno
Address and port dependent mapping: si riusa stesso
mapping per tutti i pacchetti inviati ai medesimi IP+porta
esterni
Endpoint
REGOLA 1: un NAT application “friendly” DEVE
avere un comportamento basato sull’endpoint
Independent Mapping.
Problematiche di NAT traversal- 13
Copyright: si veda nota a pag. 2
Giugno 2008
Gestione dei binding: durata
Le traduzioni indirizzo/porta eseguite dal NAT sono dette binding
Memorizzate nella binding cache del NAT
REGOLA 2:
• NAT UDP binding DEVE durare almeno di 2 min
• Sessioni sulle porte da [1-1023] possono durare
meno
•Il timer di durata deve essere configurabile
•5 minuti = valore raccomandato
Tipicamente le sessioni sulle well-known port sono di tipo
richiesta/risposta su UDP
Tenerne i binding a lungo è solo overhead
Problematiche di NAT traversal- 14
Copyright: si veda nota a pag. 2
Giugno 2008
Gestione dei binding: keepalive
Per mantenere un binding sul NAT, è sufficiente fare traffico
(keepalive)
Si deve garantire il transito di pacchetti prima dello scadere del timer
NAT outbound refresh: keep-alive mandati da host
privato verso l’esterno.
NAT inbound refresh: keep-alive mandati dall’esterno
verso l’host privato.
Alcuni NAT consentono i keep-alive in entrambe le
direzioni
REGOLA 3: un NAT “application friendly” deve
avere il NAT outbound refresh attivo. Può
eventualmente avere il NAT Inbound Refresh
attivo.
Problematiche di NAT traversal- 15
Copyright: si veda nota a pag. 2
Giugno 2008
Politiche di filtering
I NAT comunemente implementano anche delle
politiche di filtraggio del traffico diretto agli host da
loro controllati
I NAT come rudimentali meccanismi di sicurezza
Con le policy di mapping il NAT “mimetizza” gli host
Se cambio il mapping per ogni destinazione nessuno localizzerà
l’host protetto
Attraverso le policy di filtering il NAT limita il
traffico verso la sua rete
Utile
per impedire attacchi da fuori
Problematiche di NAT traversal- 16
Copyright: si veda nota a pag. 2
Giugno 2008
Politiche di filtering: scenario
Prima di tutto host A crea una sessione mandando un
pacchetto a Y:yp
Si crea un binding sul NAT
Come si comporta ora il NAT rispetto al traffico entrante?
Spazio di indirizzamento 1
(controllato dal NAT)
Spazio di indirizzamento 2
(non controllato dal NAT)
!
Host A
!
IP=Y
port=yp
IP=X
port=xp
Problematiche di NAT traversal- 17
Host B
Copyright: si veda nota a pag. 2
Giugno 2008
Endpoint Independent Filtering
Host B
Host B
Host C
Host A
Dominio privato
Dominio privato
IMPLICA
Appena c’è un binding, tutti possono
mandare pacchetti a host A
Problematiche di NAT traversal- 18
Copyright: si veda nota a pag. 2
Host A
Giugno 2008
Address dependent filtering
Host B
Host B
Host C
Host A
Dominio privato
Dominio privato
IMPLICA
Host A manda un pacchetto a host B
Solo Host B può mandare pacchetti a host A
Host B può usare qualsiasi porta
Problematiche di NAT traversal- 19
Copyright: si veda nota a pag. 2
Host A
Giugno 2008
Address and port dependent
filtering
Host B
Host B
B_a:bp
B_a:bp
B_a:bz
Dominio privato
Dominio privato
IMPLICA
Host A
Host A
Host A manda un pacchetto a host B
all’indirizzo B_a, sulla porta bp
Solo Host B può mandare pacchetti a host A
Host
B deve usare la porta bp
Problematiche di NAT traversal- 20
Copyright: si veda nota a pag. 2
Giugno 2008
Politiche di filtering: riassunto
Riassumendo:
Spazio di indirizzamento 1
(controllato dal NAT)
Spazio di indirizzamento 2
(non controllato dal NAT)
?
Host A
IP=Y
port=yp
IP=X
port=xp
Host B
Policy
il NAT scarta:
Endpoint Independent Filtering
(Dst ≠X:xp)
Addrress dependent Filtering
(Dst ≠X:xp) + (pacchetto non
inviato da Y)
Address and port dependent
Filtering
(Dst ≠X:xp) + (pacchetto non
inviato da Y:yp)
Problematiche di NAT traversal- 21
Copyright: si veda nota a pag. 2
Giugno 2008
Politiche di filtering: regola
REGOLA 4: un NAT application “friendly”:
• Se la trasparenza per le applicazioni è fondamentale =>
endpoint independent filering
• Altrimenti si RACCOMANDA address dependent filtering.
• Il comportamento può essere configurato da amminsitratore
Endpoint independent filtering:
Massima
trasparenza
Poca sicurezza
Address dependent filtering:
Maggior
sicurezza
Compromesso accettabile
Problematiche di NAT traversal- 22
Copyright: si veda nota a pag. 2
Giugno 2008
Considerazioni sugli host dietro a NAT
Se non esiste un mapping sul NAT l’host
dietro a NAT non è raggiungibile
Non
ha un indirizzo/porta pubblico assegnato
Se esiste un mapping dipende dalle
politiche di filtering
Endpoint
independent filtering => chiunque può
inviare pacchetti
Endpoint dependent filtering => il mittente esterno va
“abilitato”
Rete privata 1
Da 10.0.1.1:5060
a 130.192.36.30:5080
Da 130.192.31.12:5061
a 130.192.36.30:5080
Peer A
Peer B
(10.0.1.1:5060)
Ora 130.192.36:30:5080 (B)
può mandare pacchetti a
130.192.31.12:5061 (A)
Problematiche di NAT traversal- 23
(130.192.36.30:5080)
Copyright: si veda nota a pag. 2
Giugno 2008
Comportamento deterministico dei
NAT
Alcuni NAT hanno policy che cambia in base a
situazioni concomitanti
Ogni NAT che cambia il suo comportamento
senza essere riconfigurato è non deterministico
I NAT non deterministici sono difficili da gestire
Difficile
troubleshooting per via del comportamento
complesso
REGOLA 5: un NAT application “friendly” deve
avere un comportamento deterministico:
• No variazioni policy di mapping
• No variazioni policy di filtraggio
Problematiche di NAT traversal- 24
Copyright: si veda nota a pag. 2
Giugno 2008
Sommario
Che cosa sono i NAT
BEHAVE:
Definizione
delle caratteristiche
comportamentali dei NAT
Regole per avere NAT application
“friendly”
Come rilevo di essere dietro un NAT?
STUN
Come inoltro i pacchetti attraverso un
NAT? NAT traversal
Relay
Hole
punching
Caso di studio: SIP
Problematiche di NAT traversal- 25
Copyright: si veda nota a pag. 2
Giugno 2008
Rilevamento dei NAT: STUN
Come fa un host a scoprire di essere dietro
un NAT?
Come fa un host a scoprire il proprio
indirizzo/porta pubblici?
IETF ha definito STUN
Session
Traversal Utilities for NATs (STUN)
Originariamente basato su UDP
Poi esteso per supportare TCP e TCP/TLS
Qui viene presentata solo la versione di
base di STUN
In realtà STUN fa anche operazioni più complesse
STUN è tuttora in evoluzione
Problematiche di NAT traversal- 26
Copyright: si veda nota a pag. 2
Giugno 2008
STUN: Binding Request
STUN è client/server
STUN server pubblico
Lo STUN server deve essere localizzabile (SRV)
L’host dietro NAT integra uno STUN client
L’host invia un messaggio di Binding Request allo
STUN server
Il NAT cambia indirizzo e porta sorgente dei pacchetti
Lo STUN server vede l’indirizzo IP pubblico e la porta
assegnate dal NAT
Rete privata
(controllato dal NAT)
IP.src= 10.0.0.1
port.src=5060
Binding Request
Rete pubblica
(non controllato dal NAT)
Ricevuto un
pacchetto inviato
da 130.192.31.1,
porta 5080
IP.src=130.192.31.1
port.src=5080
Binding Request
STUN server
Problematiche di NAT traversal- 27
Copyright: si veda nota a pag. 2
Giugno 2008
STUN: Binding Response
Il server risponde con una Binding Response
L’indirizzo
IP e la porta pubbliche osservate sono
nell’attributo XOR MAPPED ADDRESS della risposta
La Binding Response arriva sicuramente
Rete pubblica
(non controllato dal NAT)
Rete privata
(controllato dal NAT)
Binding Response
Binding Response
(Mapped: 130.192.31.1: 5080)
(Mapped: 130.192.31.1: 5080)
STUN server
Problematiche di NAT traversal- 28
Copyright: si veda nota a pag. 2
Giugno 2008
Problemi di STUN
Non serve in caso di:
address dependent mapping
Address and port dependent mapping
Rete privata
(controllato dal NAT)
IP.src= 10.0.0.1
port.src=5060
Binding Request
Rete pubblica
(non controllata dal NAT)
Ricevuto un
pacchetto inviato
da 130.192.31.1,
porta 5080
IP.src=130.192.31.1
port.src=5080
Binding Request
STUN server
IP.src=130.192.31.56
port.src=5080
DATA
Problematiche di NAT traversal- 29
Copyright: si veda nota a pag. 2
Giugno 2008
Sommario
Che cosa sono i NAT
BEHAVE:
Definizione
delle caratteristiche
comportamentali dei NAT
Regole per avere NAT application
“friendly”
Come rilevo di essere dietro un NAT?
STUN
Come inoltro i pacchetti attraverso un
NAT? NAT traversal
Relay
Hole
punching
Caso di studio: SIP
Problematiche di NAT traversal- 30
Copyright: si veda nota a pag. 2
Giugno 2008
Tecniche di NAT traversal
NAT traversal = garantire la connettività fra
host in presenza di NAT
Gli
host diventano consapevoli della presenza dei NAT
Gli host svolgono una serie di operazioni
miranti a:
Creare
delle entry nelle binding cache dei NAT per
garantire la comunicazione
Mantenere attivo il canale instaurato per il tempo della
sessione
Le tecniche che verranno esaminate:
Relaying
Hole
punching
Problematiche di NAT traversal- 31
Copyright: si veda nota a pag. 2
Giugno 2008
Relaying
Richiede un server (relay) pubblico
Attraversa il NAT grazie al pardigma client/server
I due host sono client, il relay è il server
Entrambi gli host creano una connessione verso il relay:
Rete privata 1
Rete privata 2
Alloca
Alloca
Host A
Host B
Relay
Fatto questo gli host possono comunicare attraverso il
relay
Rete privata 1
Rete privata 2
Canale da/verso
host B
Canale da/verso
host A
Host A
Relay
Problematiche di NAT traversal- 32
Copyright: si veda nota a pag. 2
Host B
Giugno 2008
Relaying: pro e contro
Il relaying funziona sempre
Non richiede scambi di troppi messaggi
Tuttavia, la comunicazione fra gli host è sempre
mediata
è un single point of failure
Se cade la comunicazione si interrompe
Non scala
Sia che il NAT sia application “friendly” o no
All’aumentare del numero di host collegati le prestaizoni
del relay decadono
Il relay è una risorsa limitata
È come se mi “prestasse” una delle sue interfacce
Da usare con parsimonia
Problematiche di NAT traversal- 33
Copyright: si veda nota a pag. 2
Giugno 2008
Hole Punching
Tecnica per stabilire una comunicazione diretta tra
peer attraverso NAT
Pensato originariamente per UDP (estendibile a TCP)
Attori:
I due peer
Rendez-vouz server
Nodo pubblico
Usato solo in una fase iniziale, per aiutare i peer a creare un
percorso attraverso I NAT
Scenario di esempio:
RVS
(Rendez-vous server)
Rete privata 1
Peer A
NAT1
(10.0.1.1:5060)
Problematiche di NAT traversal- 34
Rete privata 2
NAT2
130.192.31.10
Copyright: si veda nota a pag. 2
Peer B
(10.0.2.1:5060)
Giugno 2008
UDP Hole punching: passo 1
Peer A si registra presso il rendez vous server (RVS)
RVS vede il public endpoint di peer A
RVS associa il private endpoint al public endpoint
Se peer A non è dietro NAT i due enpoint sono identici
Peer B esegue la medesima procedura
B è
130.192.36.30:5080
A è
130.192.31.12:5061
Rete privata 1
Rete privata 2
NAT1
Da 130.192.31.12:5062
a RVS
NAT2
Da 130.192.36.30:5080
a RVS
Peer A
Peer B
(10.0.1.1:5060)
(10.0.2.1:5060)
RVS
(Rendez-vous server)
Problematiche di NAT traversal- 35
Copyright: si veda nota a pag. 2
Giugno 2008
UDP Hole punching: passo 2
RVS comunica a peer A l’indirizzo (e porta)
pubblica di peer B
RVS comunica a peer B l’indirizzo (e porta)
pubblica di peer A
Entrambi
i peer hanno già comunicato con RVS
I messaggi passano
Rete privata 2
Rete privata 1
Voglio parlare con A
Voglio parlare con B
UDP
Peer A
UDP
B è 130.192.36.30:5080
(10.0.1.1:5060)
Problematiche di NAT traversal- 36
UDP
UDP
A è 130.192.31.12:5061
RVS (Rendez-vous server)
130.192.31.10
Copyright: si veda nota a pag. 2
Peer B
(10.0.2.1:5060)
Giugno 2008
UDP Hole punching: passo 3 (1/2)
Peer A manda pacchetti UDP al public endpoint di peer B
Scarto il pacchetto
UDP di Peer A
Rete privata 1
Da 10.0.1.1:5060
a 130.192.36.30:5080
Peer A
(10.0.1.1:5060)
Rete privata 2
Da 130.192.31.12:5061
a 130.192.36.30:5080
Peer B
Ora 130.192.36:30:5080 (B)
può mandare pacchetti a
130.192.31.12:5061 (A)
(10.0.2.1:5060)
Simultaneamente B fa la stessa cosa
Rete privata 1
Da 130.192.36.30:5080
a 10.0.1.1:5060
Rete privata 2
Da 130.192.36.30:5080
a 130.192.31.12:5061
Da 10.0.2.1:5060
a 130.192.31.12:5061
Peer A
(10.0.1.1:5060)
Problematiche di NAT traversal- 37
Peer B
Ora 130.192.31.12:5061 (A)
può mandare pacchetti a
130.192.36.30:5080 (B)
Copyright: si veda nota a pag. 2
(10.0.2.1:5060)
Giugno 2008
UDP Hole punching: passo 3 (2/2)
Continuando a scambiarsi pacchetti UDP,
prima o poi si aprono i biniding sui NAT
Anche
se i pacchetti sono filtrati, l’importante è creare
traffico attraverso i NAT
Peer A
C’è un binding: il
pacchetto passa!!!
C’è un binding: il
pacchetto passa!!!
UDP
UDP
UDP
UDP
Scambio pacchetti UDP con
130.192.36.30:5080
(public endpoint di B)!!!!
Problematiche di NAT traversal- 38
Peer B
UDP
UDP
Scambio pacchetti UDP con
130.192.31.12:5061
(public endpoint di A)!!!!
Copyright: si veda nota a pag. 2
Giugno 2008
Hole Punching: pro e contro
Stabilisce un canale diretto tra due host
Molto più leggero del realying
Il relaying è da usare solo come soluzione estrema se non si
riesce a connettersi
Non funziona con tutti i NAT
Il Rendez Vous server serve solo a far conoscere i due host
Il relay, invece, veicola tutti i pacchetti
Sicuramente funziona con i NAT application “friendly”(BEHAVE)
Richiede uno scambio di messaggi per aprire la
comunicazione
Potrebbe volerci tempo prima di scoprire che non è possibile
fare hole punching
Problematiche di NAT traversal- 39
Copyright: si veda nota a pag. 2
Giugno 2008
Sommario
Che cosa sono i NAT
BEHAVE:
Definizione
delle caratteristiche
comportamentali dei NAT
Regole per avere NAT application
“friendly”
Come rilevo di essere dietro un NAT?
STUN
Come inoltro i pacchetti attraverso un
NAT? NAT traversal
Relay
Hole
punching
Caso di studio: SIP
Problematiche di NAT traversal- 40
Copyright: si veda nota a pag. 2
Giugno 2008
Caso di studio: SIP
SIP è un protocollo p2p like
Gli
UA usano i proxy per localizzarsi reciprocamente
La comunicazione dovrebbe essere diretta
Sia SIP che media (RTP)
Due problemi:
Come
gestisco il/I NAT per i messaggi SIP?
Come gestisco il/I NAT per i flussi RTP?
I due problemi sono affrontati
separatamente
Problematiche di NAT traversal- 41
Copyright: si veda nota a pag. 2
Giugno 2008
NAT traversal per messaggi SIP (1/2)
Considerazioni:
1.
2.
qualsiasi UA manda un messaggio REGISTER al proxy
del suo dominio
Se il proxy riceve il messaggio può mandare indietro una
risposta
3.
In caso di UA dietro un NAT creo un “hole” sul NAT
Basta rifare esattamente lo stesso percorso della richiesta
Quindi se il proxy riutilizza lo stesso percorso del
messaggio REGISTER può inoltrare qualsiasi messaggio
SIP all’UA
Idea:
Il proxy tiene traccia del percorso seguito dal messaggio
REGISTER
Informazione memorizzata insieme al “contact”
“flow” riutilizzabile
Problematiche di NAT traversal- 42
Copyright: si veda nota a pag. 2
Giugno 2008
NAT traversal per messaggi SIP (2/2)
Tutte le richieste fuori dialogo vengono inoltrate attraverso il
“flow” dal proxy
“flow”
NAT
INVITE
“flow”
SIP proxy 2
INVITE
SIP proxy 1
INVITE
INVITE
UA 2
UA 1
Dominio SIP 2
Dominio SIP 1
I messaggi scambiati a dialogo instaurato sono consegnati
attraverso il proxy di dominio
Record route
“flow”
NAT
BYE
“flow”
SIP proxy 2
BYE
BYE
UA 2
UA 1
Dominio SIP 2
Problematiche di NAT traversal- 43
Dominio SIP 1
Copyright: si veda nota a pag. 2
Giugno 2008
NAT traversal per flussi media (1/2)
Interactive Connectivity Establishment (ICE)
Pensato
per i soli media flow
ICE aggiunge un nuovo header SDP usato dagli UA
per annunciare tutti gli indirizzi loro associati
Indirizzi privati
Indirizzi imparati da un server STUN
Indirizzi ottenuti in prestito da un relay
I nuovi header SDP sono inclusi nel messaggio di INVITE e
nella relativa risposta 200 OK
Il/i proxy SIP agisce/agiscono da rendez-vous
Sulla base degli indirizzi scambiati gli UA eseguono
l’hole punching
Basato sullo scambio di messaggi STUN diretti tra gli UA
Per farlo entrambi gli UA includono:
Uno STUN client
Uno STUN server
Problematiche di NAT traversal- 44
Copyright: si veda nota a pag. 2
Giugno 2008
NAT A
Annuncio indirizzi
NAT B
NAT traversal per flussi media (2/2)
ProxyB
ProxyA
INVITE
(payload SDP modificato)
200 OK
(payload SDP modifcato)
Individuazione delle coppie
ottimali di indirizzi (hole
punching)
Comunicazione diretta
media (SIP tramite “flows”)
Scambio di messaggi STUN di verifica
(provo 2 a 2 tutte le coppie possibili)
SIP
SIP
SIP
Canale media (uno per flusso)
Problematiche di NAT traversal- 45
Copyright: si veda nota a pag. 2
Giugno 2008
Esempio: provider SIP e NAT (1/3)
SIP proxy
NAT
INVITE
10.0.0.102
INVITE
213.192.59.75
130.192.225.135
Pacchetti 8, 15 e 16: tutti messaggi del dialogo attraversano relay SIP
Record route
chi e come lo inserisce?
Pacchetti da 9 a 14: tutti i pacchetti RTP attraversano un media relay
Problematiche di NAT traversal- 46
Copyright: si veda nota a pag. 2
Giugno 2008
Esempio: provider SIP e NAT (2/3)
Il proxy SIP modifica il messaggio INVITE includendo il media relay
Così il chiamato crede che il media relay sia il chiamante
INVITE prima di attraversare il proxy SIP
INVITE dopo aver attraversato il proxy SIP
Problematiche di NAT traversal- 47
Copyright: si veda nota a pag. 2
Giugno 2008
Esempio: provider SIP e NAT (3/3)
Il proxy SIP modifica il messaggio OK includendo il media relay
Così il chiamante crede che il media relay sia il chiamato
OK prima di attraversare il proxy SIP
OK dopo aver attraversato il proxy SIP
Problematiche di NAT traversal- 48
Copyright: si veda nota a pag. 2
Giugno 2008
Esempio: NAT traversal con ICE (1/3)
L’UA inserisce nell’SDP delle INVITE:
L’indirizzo/porta
scoperto con STUN
Tutte le coppie indirizzo/porta note
Problematiche di NAT traversal- 49
Copyright: si veda nota a pag. 2
Giugno 2008
Esempio: NAT traversal con ICE (2/3)
L’UA inserisce nell’SDP della “200 OK”:
L’indirizzo/porta
scoperto con STUN
Tutte le coppie indirizzo/porta note
Problematiche di NAT traversal- 50
Copyright: si veda nota a pag. 2
Giugno 2008
Esempio: NAT traversal con ICE (3/3)
Hole punching
Flussi media
Problematiche di NAT traversal- 51
Copyright: si veda nota a pag. 2
Giugno 2008
Conclusioni
E’ possibile garantire il funzionamento delle
normali applicazioni in presenza di NAT
Occorre tuttavia:
Che
l’amministratore configuri i NAT secondo le
regole di BEHAVE
Che gli sviluppatori integrino le funzionalità di NAT
traversal nei software
E’ possibile in questo modo:
Mantenere
la trasparenza di indirizzamento tipica dei
NAT
Mantenere le policy di sicurezza elementari dei NAT
Garantire le normali funzionalità SENZA riconfigurare
l’infrastruttura
Problematiche di NAT traversal- 52
Copyright: si veda nota a pag. 2

Documenti analoghi

Sicurezza e Gestione delle Reti (di telecomunicazioni)

Sicurezza e Gestione delle Reti (di telecomunicazioni) perché nei frammenti successivi manca l’header TCP/UDP. . . ma potrebbe essere un attacco a frammentazione ! E se poi il primo frammento arriva fuori sequenza ?

Dettagli

Problematiche di NAT traversal - the Netgroup at Politecnico di Torino

Problematiche di NAT traversal - the Netgroup at Politecnico di Torino • NAT UDP binding DEVE durare almeno di 2 min • Sessioni sulle porte da [1-1023] possono durare meno •Il timer di durata deve essere configurabile •5 minuti = valore raccomandato

Dettagli