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 / / / / / mask Rete IP pubblica R NAT R NAT R NAT R NAT
4 NAT come forma di sicurezza rudimentale /16 R NAT Rete IP pubblica
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 /16 R NAT Rete IP pubblica ILIG OGOL
7 NATB A2 Public network / C Inside Outside A1.120 Inside Local (IP:port)Inside Global (IP:port)(#) Remote host (IP:port) A1: : :80 A2: : :80 A1: : :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 NATB Public network IG( ) A1.120 IL(A1):4754B:80 SRC_ADDRDST_ADDR 1 IL(A1):4754 IG(A1):1234 NAT 2 IG(A1):1234B:80 3 IG(A1): NAT 5 B:80IL(A1): ip nat translation ? icmp-timeout Specifica timeout per flussi NAT ICMP syn-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 Inside Global Inside Local Statico ( one – to – one) Ogni host della rete privata esce con un indirizzo pubblico fissato Inside Global Inside Local dinamico Gli host della rete privata sono mappati su un pool di indirizzi IG (N:M, N>>M) Inside Local 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 allhost corretto in funzione della porta di destinazione Inside Global
10 Configurazione IOS del router /* definizione dei pool ip nat-pool pool netmask ip nat-pool pool netmask /* 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 è outside Interface s1 ip nat outside// s1 è outside Interface e0 ip nat inside // e1 è inside ip nat inside source route-map map1 pool pool1 ip 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 /24 (pool1) A /24 (pool 2) /24 E0S1 S0
11 Si vuole indirizzare (in modo statico) tutto il traffico di un certo tipo proveniente dallesterno verso un host specifico esempio: traffico SMTP ip nat inside source static tcp Tutte le connessioni provenienti dallesterno e indirizzate alla porta 25 saranno inoltrate a :25 NAT.1 Server DNS, posta,… /24 E
12 NAT ISP 1 OG /16 IL /8 Inside NAT Outside ISP 2 OG /16 IG /24 IG /24 OL /24 OL /24 Pacchetto proveniente dallesterno Look up dst address = IG Translation inside Sostituisce DST address con IL Look up src address = OG Translation outside scarta fail Alloca indirizzi OL Crea entry OL - OG Sostituisce SRC address con OL Pacchetto proveniente dallinterno Look up dst address = OL Translation outside Sostituisce DST address con OG Look up src address = IL Translation inside scarta fail Alloca indirizzi IG Crea entry IL - IG Sostituisce SRC address con IG
13 NAT & ALG Application Layer Gateway
14 Alcuni applicativi inseriscono lindirizzo IP nel payload NATB Public network A1.120 IL(A):4754IG(A):1234 NAT 2 UDP 1 IL(A):4754B:5060 IP Payload : IG(A):1234B: :4754 B:80 4 ???
15 NAT 1 ip nat pool iga netmask ip nat inside source list 1 nat pool iga access-list 1 permit ip nat inside source static NAT2 ip nat pool iga netmask ip nat inside source list 1 nat pool iga access-list 1 permit ip nat inside source static Boot file primary foo.com db.foo primary 10.in-addr.arpa db.10 forwarders options forward-only \ (OG) DNS IL /8 DNS primario di foo.com (ns.foo.com) NAT2 ISP 2 OG /16 IG /24 IG /24 NAT1 ISP 1 OG /16 ns.foo.com è DNS autoritativo per foo.com gli host della rete /8 usano ns.foo.com per tutte le query DNS ns.foo.com effettua il forward delle query DNS verso Db.foo file ; Name Servers foo.com. IN NS ns.foo.com. ; Addresses ns.foo.com. IN A ; Inside Local address x.foo.com. IN A ; Inside Local address db.10 File ; Reverse address resolution for local network addresses ; Name Servers 10.in-addr.arpa. IN NS ns.foo.com. ; Addresses in-addr.arpa IN PTR ns.foo.com in-addr.arpa IN PTR x.foo.com.
16 (OG) DNS IL /8 DNS primario di foo.com (ns.foo.com) NAT2 isp2.com OG /16 IG /24 IG /24 NAT1 isp1.com OG /16 Delega della reverse resolution /24 Sul DNS autoritativo di in-addr.arpa (ISP 1) in-addr.arpa IN NS foo-ns.isp1.com foo-ns.isp1.com. IN A Delega della reverse resolution /24 Sul server autoritativo di in-addr.arpa (ISP 2) in-addr.arpa IN NS foo-ns.isp2.com foo-ns.isp2.com. IN A Delega della risoluzione diretta del domino foo.com Sul server autoritativo di.com foo IN NS ns.foo.com. ; ns.foo.com IN A ; Inside Global address IN A ; Inside Global address ; il DNS di foo.com è visto con 2 indirizzi diversi che corrispondono allo stesso host
17 Per Query DNS originate dallesterno il NAT/ALG deve entrare nel merito del protocollo DNS; se fosse abilitato anche il NAT outiside entrerebbe nel merito anche delle query originate dallinterno DNS (OG) IL /8 (ns.foo.com) IL( ) NAT2 isp2.com OG /16 IG /24 IG /24 NAT1 isp1.com OG /16 host x.foo.com ( ) host y.bar.com (OG) ( ) bar.com ns.bar.com OG ( ) 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 ( ) crea una entry con: IL address = (lindirizzo riportato come A RR) IG address = Sostituisce (IL) nella A RR della risposta con (IG)
18 Per Query DNS PTR RR originate dallesterno (risoluzione inversa) DNS (OG) IL /8 (ns.foo.com) IL( ) NAT2 isp2.com OG /16 IG /24 IG /24 NAT1 isp1.com OG /16 host x.foo.com ( ) host y.bar.com (OG) ( ) bar.com ns.bar.com OG ( ) ) NAT1 legge che il campo QNAME della Query contiene in-addr.arpa. NAT1 rimpiazza QNAME con e invia la query al DNS interno 4 4) NAT1 legge la risposta che ha campo QNAME = , PTR RR = (IL) e nome dellhost x.foo.com rimpiazza il campo QNAME con e PTR RR con (IG).
19 Network Address Translation tipologia
20 NATB A2 Public network / C A1.120 Inside Local (IP:port)Inside Global (IP:port)Remote host (IP:port) A1: :1234B:80 A2: :3456C:80 A1: :3322B:8080 ……….…………. …………. Translation Table Full Cone Binding non dipendono dallIP di destinazione I binding esistono sempre (è possibile avere traffico originato da esterno)
21 NATB A2 Public network / C A1.120 Inside Local (IP:port)Inside Global (IP:port)Remote host (IP) A1: :1234B:80 A2: :3456C:80 A1: :3322B:8080 ……….…………. …………. Translation Table Restricted Cone Binding non dipendono dallIP 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 NATB A2 Public network / C A1.120 Inside Local (IP:port)Inside Global (IP:port)Remote host (IP:port) A1: :1234B:80 A2: :3456C:80 A1: :3322B:8080 ……….…………. …………. Translation Table Port Restricted Cone Binding non dipendono dallIP 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 NATB A2 Public network / C A1.120 Inside Local (IP:port)Inside Global (IP:port)Remote host (IP:port) A1: :1234B:80 A2: :3456C:80 A1: :3322B:8080 ……….…………. …………. Translation Table Symmetric 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) NATB /24.1 A A1:8000:chi sono io ? NAT Probe Sono pronto a ricevere su porta sei: :5053 Stream RTP/UDP ( : :8200) Sono pronto a ricevere su 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 :X :5053
26 (STUN) Simple Traversal UDP through NAT (RFC 3489) NAT Probe client 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 IPChange PortChanged AddressSource Address NNIP2, P2IP1, P1 YNIP2, P2IP2, P1 NYIP2,P2IP1,P2 YYIP2,P2IP2,P2 STUN DISCOVERY # TestChange IPChange Port 1NN 2YY 3NY
27 Test 1 Response? UDP bloccato SRC IP = Mapped addr. Yes=> No NAT Test 2 Open internet Response? Yes Fw UDP simmetrico Test 2 Response? Full Cone Yes Test 1 Verso IP2/P2 Map. Addrs uguale Test 1 Symmetric Yes Test 3 Response? Yes Restricted Cone Port Restricted Cone yes No
28 Binding Lifetime NAT Probe client NATNAT 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: T L: per ogni t > T L non si riceve risposta, t <= T L si riceve risposta
29 Appendice DNS
30 Reminder: DNS Resolving Resolver Question: A A ? Caching forwarder (recursive) root-server A ? go ask net X.gtld-servers.net gtld-server A ? go ask ripe ns.ripe.net ripe-server A ? Add to cache TTL
31