network address translation
DESCRIPTION
Network Address Translation. Gestione piano di numerazione IP. ICANN ( Internet Corporation for Assigned Names and Numbers ) RIR RIPE (Réseaux IP Européens) LIR Indirizzi privati (RFC 1918) e.g. 10/8…. Esempio di utilizzo di indirizzi privati. 10.0.0.0/14 10.0.0.0 mask 255.252.0.0. - PowerPoint PPT PresentationTRANSCRIPT
1
Network Address Translation
2
Gestione piano di numerazione IP
• ICANN (Internet Corporation for Assigned Names and Numbers)
• RIR– RIPE (Réseaux IP Européens)
• LIR
• Indirizzi privati (RFC 1918)– e.g. 10/8…..
3
Esempio di utilizzo di indirizzi privati
10.3.0.0/16
10.2.0.0/16
10.1.1.0/2410.1.254.0/24
10.0.0.0/14
10.0.0.0 mask 255.252.0.0
Rete IP pubblica
R
NAT
R
NATR
NAT
R
NAT
4
NAT come forma di sicurezza rudimentale
10.3.0.0/16R
NATRete IP pubblica
82.53.100.1
5
Schema di riferimento
Network
Layer
Transport Layer
Application
Layer
Network
Layer
Transport Layer
Application
Layer
Indirizzo IP
Porta TCP/UDP
6
Schema di riferimento NAT
10.3.0.0/16R
NATRete IP pubblica
IL IG
OGOL
7
NAT BA2
Public network
10.0.0.0/24
.1
.100
171.69.58.60
C171.69.5.100
Inside Outside
80.17.192.4
A1 .120
Inside Local (IP:port) Inside Global (IP:port) (#) Remote host (IP:port)
A1:4754 80.17.192.4:1234 171.69.58.60:80
A2:4776 80.17.192.4:3456 171.69.5.100:80
A1:4888 80.17.192.4:3322 171.69.58.60:80
………. …………. ………….
Translation Table
Nota(*) Il binding può essere funzione anche del remote host in funzione del tipo di NAT
(#) Il check su IP/porta remoti esiste o meno in funzione del tipo di NAT
8
NAT BPublic network
.1 171.69.58.60
IG(80.17.192.4)
A1 .120
IL(A1):4754 B:80
SRC_ADDR DST_ADDR
1
IL(A1):4754 IG(A1):1234
NAT
2
IG(A1):1234 B:803
B:80 IG(A1):12344
NAT
5B:80 IL(A1):4754
6
ip nat translation ? icmp-timeout Specifica timeout per flussi NAT ICMPsyn-timeout Specifica timeout per flussi TCP NAT per inattività dopo un SYN
Le entry della translation table hanno un expire time …esempio con IOS
IL(10/8)
9
InsideGlobal
InsideLocal
Statico ( one – to – one)
Ogni host della rete privata “esce” con un indirizzo pubblico fissato
InsideGlobal
InsideLocal
dinamico Gli host della rete privata sono mappati su un pool di indirizzi IG (N:M, N>>M)
InsideLocal
PAT (may-to-one) Port Address Translation
Gli host della rete privata sono mappati su un solo indirizzo IG (+ source port translation); il traffico outside -> inside è indirizzato all’host corretto in funzione della porta di destinazione
InsideGlobal
10
Configurazione IOS del router
/* definizione dei pool
ip nat-pool pool1 80.17.192.1 80.17.192.254 netmask 255.255.255.0 ip nat-pool pool2 80.17.193.1 80.17.193.254 netmask 255.255.255.0
/* regole di natting: traffico che ha next hop che fa matching con la regola map1 viene
nattato con pool1….
Interface s0 ip nat outside // s0 è outsideInterface s1 ip nat outside // s1 è outsideInterface e0 ip nat inside // e1 è inside
ip nat inside source route-map map1 pool pool1ip nat inside source route-map map2 pool pool2
Route-map map1 permit 10 Route-map map2 permit 10 match interface serial 0 match interface serial 1
NAT.1
80.17.192.0/24 (pool1)
A1 .12080.17.193.0/24
(pool 2)
10.0.0.0/24
E0 S1
S0
11
Si vuole indirizzare (in modo statico) tutto il traffico di un certo tipo proveniente dall’esterno verso un host specifico
esempio: traffico SMTP
ip nat inside source static tcp 10.0.0.120 80.17.192.4 25
Tutte le connessioni provenienti dall’esterno e indirizzate alla porta 25 saranno inoltrate a 10.0.0.120:25
NAT.1Server
DNS, posta,…
.120
10.0.0.0/24
E0
80.17.192.4
12
NAT
ISP 1
OG 140.16/16
IL 10.0.0.0/8
Inside
NAT
Outside
ISP 2
OG 193.17/16
IG 193.17.15/24
IG 140.16.20/24
OL 192.168.1/24
OL 192.168.2/24
Pacchetto proveniente dall’esterno
Look up dst address = IG
Translation inside
Sostituisce DST address con IL
Look up src address = OG
Translation outside
scarta
fail fail
Alloca indirizzi OL
Crea entry OL - OG
Sostituisce SRC address con OL
Pacchetto proveniente dall’interno
Look up dst address = OL
Translation outside
Sostituisce DST address con OG
Look up src address = IL
Translation inside
scarta
fail fail
Alloca indirizzi IG
Crea entry
IL - IG
Sostituisce SRC address con IG
13
NAT & ALG
Application Layer Gateway
14
Alcuni applicativi inseriscono l’indirizzo IP nel payload
NAT BPublic network
.1 171.69.58.60
A1 .120
IL(A):4754 IG(A):1234
NAT
2
UDP 1IL(A):4754 B:5060IP
Pa
ylo
ad 10.0.0.120:4754
3IG(A):1234 B:5060
10.0.0.120:4754
10.0.0.120:4754B:804
???
15
NAT 1
ip nat pool iga 140.16.10.1 140.16.10.254 netmask 255.255.255.0
ip nat inside source list 1 nat pool iga
access-list 1 permit 10.0.0.0 0.255.255.255
ip nat inside source static 10.20.20.10 140.16.10.254
NAT2
ip nat pool iga 193.17.15.1 193.17.15.254 netmask 255.255.255.0
ip nat inside source list 1 nat pool iga
access-list 1 permit 10.0.0.0 0.255.255.255
ip nat inside source static 10.20.20.10 193.17.15.250
Boot file
primary foo.com db.foo
primary 10.in-addr.arpa db.10
forwarders 128.9.0.107
options forward-only\
(OG) DNS 128.9.0.107
IL 10.0.0.0/8
DNS primario di foo.com (ns.foo.com)
10.20.20.10
NAT2ISP 2
OG 193.17/16
IG 193.17.15/24
IG 140.16.10/24
NAT1
ISP 1
OG 140.16/16
ns.foo.com è DNS autoritativo per foo.com
gli host della rete 10.0.0.0/8 usano ns.foo.com per tutte le query DNS
ns.foo.com effettua il forward delle query DNS verso 128.9.0.107
Db.foo file
; Name Serversfoo.com. IN NS ns.foo.com.; Addressesns.foo.com. IN A 10.20.20.10 ; Inside Local addressx.foo.com. IN A 10.1.1.1 ; Inside Local address
db.10 File
; Reverse address resolution for local network addresses; Name Servers10.in-addr.arpa. IN NS ns.foo.com.; Addresses10.20.20.10.in-addr.arpa IN PTR ns.foo.com. 1.1.1.10.in-addr.arpa IN PTR x.foo.com.
16
(OG) DNS 128.9.0.107
IL 10.0.0.0/8
DNS primario di foo.com (ns.foo.com)
10.20.20.10
NAT2isp2.com
OG 193.17/16
IG 193.17.15/24
IG 140.16.10/24
NAT1
isp1.com
OG 140.16/16
Delega della reverse resolution 140.16.10/24
Sul DNS autoritativo di 16.140.in-addr.arpa (ISP 1)
10.16.140.in-addr.arpa. 86400 IN NS foo-ns.isp1.com
foo-ns.isp1.com. IN A 140.16.10.254
Delega della reverse resolution 193.17.15/24
Sul server autoritativo di 17.193.in-addr.arpa (ISP 2)
15.17.193.in-addr.arpa. 86400 IN NS foo-ns.isp2.com
foo-ns.isp2.com. IN A 193.17.15.250
Delega della risoluzione diretta del domino foo.com
Sul server autoritativo di .com
foo 86400 IN NS ns.foo.com.;
ns.foo.com. 86400 IN A 140.16.10.254 ; Inside Global address
IN A 193.17.15.250 ; Inside Global address
; il DNS di foo.com è visto con 2 indirizzi diversi che corrispondono allo stesso host
17
Per Query DNS originate dall’esterno il NAT/ALG deve entrare nel merito del protocollo DNS; se fosse abilitato anche il NAT outiside entrerebbe nel merito anche delle queryoriginate dall’interno
DNS (OG) 128.9.0.107
IL 10.0.0.0/8
(ns.foo.com)
IL(10.20.20.10)
NAT2isp2.com
OG 193.17/16
IG 193.17.15/24
IG 140.16.10/24
NAT1isp1.com
OG 140.16/16
host x.foo.com
(10.1.1.1)
host y.bar.com (OG) (16.10.10.2)
bar.comns.bar.com OG (16.10.10.2)
123
5
6
4
• La risposta contiene A RR (per x.foo.com)
• La Translation Table non ha un entry con un IL uguale a quello riportato nella risposta come A RR.
• Quindi:
alloca un indirizzo dallo spazio IG (140.16.10.2)
crea una entry con:
• IL address = 10.1.1.1 (l’indirizzo riportato come A RR)
• IG address = 140.16.10.2
• Sostituisce 10.1.1.1 (IL) nella A RR della risposta con 140.16.10.2 (IG)
18
Per Query DNS PTR RR originate dall’esterno (risoluzione inversa)
DNS (OG) 128.9.0.107
IL 10.0.0.0/8
(ns.foo.com)
IL(10.20.20.10)
NAT2isp2.com
OG 193.17/16
IG 193.17.15/24
IG 140.16.10/24
NAT1isp1.com
OG 140.16/16
host x.foo.com
(10.1.1.1)
host y.bar.com (OG) (16.10.10.2)
bar.comns.bar.com OG (16.10.10.2)
13
5
62
2) NAT1 legge che il campo QNAME della Query contiene 2.10.16.140.in-addr.arpa.
NAT1 rimpiazza QNAME con 1.1.1.10 e invia la query al DNS interno
4
4) NAT1 legge la risposta che ha campo QNAME = 1.1.1.10, PTR RR = 10.1.1.1 (IL) e nome dell’host x.foo.com
rimpiazza il campo QNAME con 2.10.16.140 e PTR RR con 140.16.10.2 (IG).
19
Network Address Translation
tipologia
20
NAT BA2
Public network
10.0.0.0/24
.1
.100
171.69.58.60
C171.69.5.100
80.17.192.4
A1 .120
Inside Local (IP:port) Inside Global (IP:port) Remote host (IP:port)
A1:4754 80.17.192.4:1234 B:80
A2:4776 80.17.192.4:3456 C:80
A1:4888 80.17.192.4:3322 B:8080
………. …………. ………….
Translation Table
Full ConeFull Cone
Binding non dipendono dall’IP di destinazione
I binding esistono sempre (è possibile avere traffico originato da esterno)
21
NAT BA2
Public network
10.0.0.0/24
.1
.100
171.69.58.60
C171.69.5.100
80.17.192.4
A1 .120
Inside Local (IP:port) Inside Global (IP:port) Remote host (IP)
A1:4754 80.17.192.4:1234 B:80
A2:4776 80.17.192.4:3456 C:80
A1:4888 80.17.192.4:3322 B:8080
………. …………. ………….
Translation Table
Restricted ConeRestricted Cone
Binding non dipendono dall’IP di destinazione (solo da IP e porta sorgente)
I binding sono creati dinamicamente sul traffico uscente ( non è possibile avere traffico originato da esterno)
Data la translation table in figura, solo B può inviare traffico ad A1 e solo C ad A2 (ma da qualsiasi porta sorgente)
22
NAT BA2
Public network
10.0.0.0/24
.1
.100
171.69.58.60
C171.69.5.100
80.17.192.4
A1 .120
Inside Local (IP:port) Inside Global (IP:port) Remote host (IP:port)
A1:4754 80.17.192.4:1234 B:80
A2:4776 80.17.192.4:3456 C:80
A1:4888 80.17.192.4:3322 B:8080
………. …………. ………….
Translation Table
Port Restricted ConePort Restricted Cone
Binding non dipendono dall’IP di destinazione (solo da IP e porta sorgente)
I binding sono creati dinamicamente sul traffico uscente ( non è possibile avere traffico originato da esterno)
Data la translation table in figura, solo B può inviare traffico ad A1 e solo C ad A2 (ma solo dalle porte 80,8080 per B e 80 per C)
23
NAT BA2
Public network
10.0.0.0/24
.1
.100
171.69.58.60
C171.69.5.100
80.17.192.4
A1 .120
Inside Local (IP:port) Inside Global (IP:port) Remote host (IP:port)
A1:4754 80.17.192.4:1234 B:80
A2:4776 80.17.192.4:3456 C:80
A1:4888 80.17.192.4:3322 B:8080
………. …………. ………….
Translation Table
SymmetricSymmetric
Binding dipendono da IP, porta sorgente e IP di destinazione
I binding sono creati dinamicamente sul traffico uscente ( non è possibile avere traffico originato da esterno)
Data la translation table in figura, B:80, B:8080, C:80 possono può inviare traffico ad A1 e solo C:80 ad A2
24
Network Address Translation
NAT traversal
25
(STUN) Simple Traversal UDP through NAT (RFC 3489)(STUN) Simple Traversal UDP through NAT (RFC 3489)
NAT B
10.0.0.0/24
.1A1 171.69.58.60
A1:8000:“chi sono io ?” NAT
Probe
“Sono pronto a ricevere su 171.69.58.80 porta 8200”
80.17.192.4
“sei: 80.17.192.4:5053”
Stream RTP/UDP (80.17.192.4:5053 171.69.58.60:8200)
“Sono pronto a ricevere su 80.17.192.4 porta 5053”
• per raggiungere A1 si deve usare la stessa porta per traffico entrante e uscente (anche la porta sorgente di B deve essere uguale a quella di ascolto nel caso di port restricted cone)
• Nel caso di restricted cone o port restricted cone il client deve iniziare a trasmettere per poter ricevere
• Non funziona per Symmetric NAT
Stream RTP/UDP 171.69.58.60:X 80.17.192.4:5053
26
(STUN) Simple Traversal UDP through NAT (RFC 3489)(STUN) Simple Traversal UDP through NAT (RFC 3489)
NAT
Probeclient Request (response address/port, Change IP, Change
Port)
Influenza DST IP:port della risposta
Influenza SRC IP:port della risposta
Response (mapped address, Changed, Source Address)
(IP1, port1)
(IP2, port2)
Change IP Change Port Changed Address Source Address
N N IP2, P2 IP1, P1
Y N IP2, P2 IP2, P1
N Y IP2,P2 IP1,P2
Y Y IP2,P2 IP2,P2
STUN DISCOVERY
# Test Change IP Change Port
1 N N
2 Y Y
3 N Y
27
Test 1
Response?UDP
bloccato SRC IP =Mapped addr.
Yes=>
No NAT
Test 2
Open internet
Response?Yes
Fw UDPsimmetrico
Test 2
Response?Full Cone
YesTest 1
Verso IP2/P2
Map. Addrs ugualeTest 1
Symmetric Yes
Test 3 Response?Yes
Restricted Cone
PortRestricted
Cone
yes
No
28
Binding LifetimeBinding Lifetime
NAT
Probeclient
NAT
IP1: port X Request
Response (Mapped address IP:port = IPa:Pb)
Il NAT crea un binding per il socket X
T
IP1: port Y Request (response IP:port = IPa:Pb)
Il NAT crea un binding per il socket Y
Se il client riceve la risposta sul socket x => il binding per x è ancora vivo
Se il client riceve la risposta sul socket y => il binding per x è spirato e NAT ha riusato lo stesso ipa:pb per il nuovo binding
Se il client non riceve risposta => il binding è spirato
Ricerca binaria su T per trovare:
TL: per ogni t > TL non si riceve risposta, t <= TL si riceve risposta
29
Appendice
DNS
30
Reminder: DNS Resolving
Resolver
Question:
www.ripe.net A
www.ripe.net A ?
Cachingforwarder(recursive)
root-serverwww.ripe.net A ?
“go ask net server @ X.gtld-servers.net”
gtld-serverwww.ripe.net A ?
“go ask ripe server @ ns.ripe.net”
ripe-server
www.ripe.net A ?
“193.0.0.203”
193.0.0.203
1 2
3
4
5
6
7
Add to cache9
8
10 TTL
31