340 likes | 647 Views
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.
E N D
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 10.2.0.0/16 R NAT 10.3.0.0/16 R NAT Rete IP pubblica R NAT R NAT 10.1.1.0/24 10.1.254.0/24
NAT come forma di sicurezza rudimentale 82.53.100.1 R NAT 10.3.0.0/16 Rete IP pubblica
Schema di riferimento Application Layer Application Layer Porta TCP/UDP Transport Layer Transport Layer Indirizzo IP Network Layer Network Layer
Schema di riferimento NAT OL OG R NAT 10.3.0.0/16 Rete IP pubblica IL IG
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 ………. …………. …………. 10.0.0.0/24 80.17.192.4 A1 .120 Public network 171.69.58.60 .1 NAT B A2 171.69.5.100 .100 C Inside Outside 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
IG(80.17.192.4) B:80 B:80 IG(A1):1234 IL(A1):4754 IG(A1):1234 B:80 IL(A1):4754 B:80 2 SRC_ADDR DST_ADDR 1 3 NAT 5 6 NAT 4 Le entry della translation table hanno un expire time …esempio con IOS IL(A1):4754 IG(A1):1234 ip nat translation ? icmp-timeout Specifica timeout per flussi NAT ICMP syn-timeout Specifica timeout per flussi TCP NAT per inattività dopo un SYN Public network 171.69.58.60 .1 NAT B A1 .120 IL(10/8)
Statico ( one – to – one) Ogni host della rete privata “esce” con un indirizzo pubblico fissato Inside Local Inside Global dinamico Gli host della rete privata sono mappati su un pool di indirizzi IG (N:M, N>>M) Inside Local Inside Global 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 PAT (may-to-one) Inside Global Inside Local
10.0.0.0/24 S0 80.17.192.0/24 (pool1) .1 NAT A1 .120 E0 S1 80.17.193.0/24 (pool 2) 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 è 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
10.0.0.0/24 80.17.192.4 .1 NAT Server DNS, posta,… .120 E0 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
OL 192.168.1/24 ISP 1 OG 140.16/16 NAT IL 10.0.0.0/8 ISP 2 OG 193.17/16 NAT Outside Inside Look up src address = IL Translation inside Look up src address = OG Translation outside Pacchetto proveniente dall’esterno Pacchetto proveniente dall’interno Look up dst address = IG Translation inside Look up dst address = OL Translation outside Sostituisce SRC address con IG Sostituisce SRC address con OL Sostituisce DST address con IL Sostituisce DST address con OG fail fail fail fail Alloca indirizzi OL Crea entry OL - OG Alloca indirizzi IG Crea entry IL - IG scarta scarta IG 140.16.20/24 OL 192.168.2/24 IG 193.17.15/24
NAT & ALG Application Layer Gateway
IG(A):1234 IL(A):4754 B:5060 B:5060 2 NAT 10.0.0.120:4754 Payload 10.0.0.120:4754 3 UDP 1 IP 4 ??? B:80 10.0.0.120:4754 IL(A):4754 IG(A):1234 Alcuni applicativi inseriscono l’indirizzo IP nel payload Public network 171.69.58.60 .1 NAT B A1 .120
IG 140.16.10/24 ISP 1 OG 140.16/16 NAT1 (OG) DNS 128.9.0.107 IL 10.0.0.0/8 DNS primario di foo.com (ns.foo.com) 10.20.20.10 IG 193.17.15/24 ISP 2 OG 193.17/16 NAT2 • 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. • 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 igaaccess-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\ • 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 igaaccess-list 1 permit 10.0.0.0 0.255.255.255 • ip nat inside source static 10.20.20.10 140.16.10.254 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
IG 140.16.10/24 isp1.com OG 140.16/16 NAT1 (OG) DNS 128.9.0.107 IL 10.0.0.0/8 DNS primario di foo.com (ns.foo.com) 10.20.20.10 IG 193.17.15/24 isp2.com OG 193.17/16 NAT2 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 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 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
bar.com IL 10.0.0.0/8 IG 140.16.10/24 5 ns.bar.com OG (16.10.10.2) 4 (ns.foo.com) IL(10.20.20.10) NAT1 isp1.com OG 140.16/16 2 1 6 3 host y.bar.com (OG) (16.10.10.2) host x.foo.com (10.1.1.1) IG 193.17.15/24 isp2.com OG 193.17/16 DNS (OG) 128.9.0.107 NAT2 • 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) 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 query originate dall’interno
bar.com IL 10.0.0.0/8 IG 140.16.10/24 5 ns.bar.com OG (16.10.10.2) 4 (ns.foo.com) IL(10.20.20.10) NAT1 isp1.com OG 140.16/16 2 1 6 3 host y.bar.com (OG) (16.10.10.2) host x.foo.com (10.1.1.1) IG 193.17.15/24 isp2.com OG 193.17/16 DNS (OG) 128.9.0.107 NAT2 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) 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). Per Query DNS PTR RR originate dall’esterno (risoluzione inversa)
Network Address Translation tipologia
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 ………. …………. …………. Full Cone 10.0.0.0/24 80.17.192.4 A1 .120 Public network 171.69.58.60 .1 NAT B A2 171.69.5.100 .100 C Translation Table Binding non dipendono dall’IP di destinazione I binding esistono sempre (è possibile avere traffico originato da esterno)
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 ………. …………. …………. Restricted Cone 10.0.0.0/24 80.17.192.4 A1 .120 Public network 171.69.58.60 .1 NAT B A2 171.69.5.100 .100 C Translation Table 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)
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 ………. …………. …………. Port Restricted Cone 10.0.0.0/24 80.17.192.4 A1 .120 Public network 171.69.58.60 .1 NAT B A2 171.69.5.100 .100 C Translation Table 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)
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 ………. …………. …………. Symmetric 10.0.0.0/24 80.17.192.4 A1 .120 Public network 171.69.58.60 .1 NAT B A2 171.69.5.100 .100 C Translation Table 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
Network Address Translation NAT traversal
(STUN) Simple Traversal UDP through NAT (RFC 3489) 10.0.0.0/24 80.17.192.4 A1 171.69.58.60 .1 NAT B A1:8000:“chi sono io ?” NAT Probe “sei: 80.17.192.4:5053” “Sono pronto a ricevere su 80.17.192.4 porta 5053” “Sono pronto a ricevere su 171.69.58.80 porta 8200” Stream RTP/UDP (80.17.192.4:5053 171.69.58.60:8200) Stream RTP/UDP 171.69.58.60:X 80.17.192.4: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
(STUN) Simple Traversal UDP through NAT (RFC 3489) Influenza SRC IP:port della risposta Influenza DST IP:port della risposta (IP1, port1) (IP2, port2) NAT Probe client Request (response address/port, Change IP, Change Port) Response (mapped address, Changed, Source Address) 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
Test 1 Yes=> No NAT Response? SRC IP = Mapped addr. yes UDP bloccato Test 2 Response? Yes Test 2 Open internet Map. Addrs uguale Test 1 Test 1 Verso IP2/P2 Response? Fw UDP simmetrico Yes No Full Cone Symmetric Yes Response? Yes Test 3 Restricted Cone Port Restricted Cone
Binding Lifetime NAT NAT Probe client IP1: port X Request Il NAT crea un binding per il socket X Response (Mapped address IP:port = IPa:Pb) 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
Appendice DNS
2 1 3 Caching forwarder (recursive) 4 8 5 9 Add to cache 6 10 TTL 7 Reminder: DNS Resolving Question: www.ripe.net A root-server www.ripe.net A ? “go ask net server @ X.gtld-servers.net” www.ripe.net A ? Resolver 193.0.0.203 www.ripe.net A ? gtld-server “go ask ripe server @ ns.ripe.net” www.ripe.net A ? “193.0.0.203” ripe-server