Reti di Accesso e di Trasporto
Introduzione al NAT
Network Address Translation
Ing. Stefano Salsano
e-mail: [email protected]
AA2010/11 - Blocco nat
Le slides di questo blocco sono quasi integralmente tratte da un seminario dell’Ing.
Vito Ammirata, cui vanno i miei ringraziamenti
O meglio… CERCA di
non modificare 
SIP: Source IP address, DIP: Destination IP, Sport: Source Port
O meglio… non dovrebbe risentire 
Classificazione dei NAT
relativamente alla “apertura”
• I Nat si differenziano a secondo delle possibilità di
accesso che offrono alle connessioni “entranti”
• È in realtà difficile fornire una classificazione semplice e
completa di tutti i possibili NAT
• Nella RFC 3489 “STUN - Simple Traversal of User
Datagram Protocol (UDP) Through Network Address
Translators (NATs)” i NAT vengono classificati in:
–
–
–
–
Full cone
Restricted Cone
Port restricted Cone
Symmetric
Classificazione dei NAT
relativamente alla “apertura”
• Full Cone: A full cone NAT is one where all requests from the same internal
IP address and port are mapped to the same external IP address and port.
Furthermore, any external host can send a packet to the internal host, by
sending a packet to the mapped external address.
• Restricted Cone: A restricted cone NAT is one where all requests from the
same internal IP address and port are mapped to the same external IP
address and port. Unlike a full cone NAT, an external host (with IP address
X) can send a packet to the internal host only if the internal host had
previously sent a packet to IP address X.
• Port Restricted Cone: A port restricted cone NAT is like a restricted cone
NAT, but the restriction includes port numbers. Specifically, an external host
can send a packet, with source IP address X and source port P, to the
internal host only if the internal host had previously sent a packet to IP
address X and port P.
• Symmetric: A symmetric NAT is one where all requests from the same
internal IP address and port, to a specific destination IP address and port,
are mapped to the same external IP address and port. If the same host
sends a packet with the same source address and port, but to a different
destination, a different mapping is used. Furthermore, only the external host
that receives a packet can send a UDP packet back to the internal host.
Classificazione dei NAT
relativamente alla “apertura”
• La classificazione contenuta nella RFC 3489 non riesce
a tener conto di tutte le possibilità. La RFC 4787
(Network Address Translation (NAT) Behavioral
Requirements for Unicast UDP) ne propone una più
complicata
• Tra l’altro la RFC 3489 è stata sostituita dalla RFC 5389
“Session Traversal Utilities for NAT (STUN”
Comunicazioni attraverso i NAT
• L’apertura o meno di un NAT influenza le possibilità di
comunicazione degli host che stanno dietro ad un NAT.
• Nelle comunicazioni client-server, quando il server si
trova su IP pubblico e il client dietro un NAT, non ci sono
problemi particolari (specialmente con TCP).
• Il problema riguarda le comunicazioni “end-to-end” (ad
esempio per flussi UDP multimediali) che coinvolgono
host dietro ai NAT. Se entrambi gli host sono dietro ai
NAT, in certi casi non è possibile stabilire delle
comunicazioni dirette.
Esercizio
• Da svolgere possibilmente in gruppi di 4/5 persone
• Realizzare una comunicazione client server simmetrica su UDP
attraverso NAT
• Ossia il client (su rete privata) deve inviare un pacchetto UDP
contenente la stringa “Echo request”, con porta UDP sorgente X (X
a piacere) e mettersi in ascolto sulla stessa porta UDP X
• Il server è in ascolto sulla porta UDP 30000 e risponde con un
pacchetto UDP contenente la stringa “Echo reply” con porta UDP di
destinazione uguale alla porta UDP sorgente del pacchetto “Echo
request ricevuto”
• Verificare con TCP dump / Wireshark la conversione NAPT tra il
dominio interno e quello esterno
Esercizio
UDP DPort:
30000
S
Echo request
Internal Address Realm
External Address Realm
Echo request
NAT
UDP SPort:
X
C
Echo reply
Private IP
addresses:
192.168.1.x
Echo reply
You can use public IP
addresses or other
private IP addresses:
10.0.1.x
Esercizio
• Potete scegliere la piattaforma su cui realizzare
l’esercizio, ad esempio (ma senza voler limitare la vostra
fantasia):
– Netkit, con realizzazione dei client e dei server in C o in Pyton
– 3 PC di cui uno linux fa da NAT e due implementano client e
server in JAVA (quindi possono essere windows o linux)
– 3 PC come sopra e il PC che fa da NAT è un PC windows su cui
è abilitata la condivisione della connessione (ad esempio potete
condividere una connessione wifi sul lato “esterno” con uno o più
PC “interni” collegati alla scheda ethernet
Esercizio
• Estensioni opzionali:
– Verificare che di tipo di NAT si tratta, provando dal server a
rispondere con pacchetti verso la stessa coppia IP dest / UDP
dest, ma con porta sorgente UDP diversa.
– Verificare dopo quanto tempo scade il timeout nel NAT,
rispondendo al client con un tempo di ritardo crescente
Scarica

rat-1011-nat