Next Generation Internet IPv6 Matteo Cicuttin
Chi sono/miei interessi Network security & telecommunications (The Black Box, Rockerduck, Microwave Hazard) Operating system design (yauosk, CfE) Compiler design (ope, mycc) Computational electromagnetics (emt) Ham radio operator: IV3IWE IPv6-enabled dal 1999
Agenda Di cosa parleremo? IPv6: cos è e perché ne parliamo Il protocollo IPv6 Hands on!
Cos è IPv6? IPv6 è il protocollo che soppianterà (si spera!) IPv4, l attuale lingua tramite cui si parlano i computer connessi ad Internet. Il cambiamento è reso necessario (prevalentemente) dal fatto che il numero di dispositivi connessi ad Internet è sempre maggiore.
Perché ne parliamo? IPv6 è attualità: it s just a matter of time O ci adeguiamo o collassiamo sotto la complessità dovuta a fuffa tipo NAT/Carrier Grade NAT/etc.. L ignoranza che c è a riguardo è allarmante: qualcuno addirittura crede (tecnici) che un indirizzo IPv6 sia del tipo 111.222.333.444.555.666 Lo scopo di questo talk è fare una discussione divulgativa : non intendo raccontarvi tutto lo scibile su IPv6 ma solo farvi vedere le cose salienti e darvi i pointers per approfondire!
Alcune tappe di IPv6 Fine anni 80: consapevolezza dei limiti di IPv4 1992: Call for papers da parte dell IETF per definire IPng 1995: RFC1883, IP Protocol version 6 1996: Linux 2.1.8, IPv6 in alpha 1997: AIX 4.3 primo OS commerciale a supportare IPv6 2000: IPv6 production quality in *BSD e Solaris 8, MSRIPv6 in NT4 e 2000 2001: XP fornito con stack IPv6 2003: OSX ha IPv6 abilitato di default 2007: Vista ha IPv6 abilitato di default 2008: Record AAAA nel DNS
IPv6 oggi 2013: Solo il core di Internet e i carrier sono full production in v6 8 Giugno 2011: World IPv6 day 6 Giugno 2012: World IPv6 launch. I maggiori servizi su internet sono raggiungibili via IPv6 Molti provider/operatori stanno a guardare Pochissimi dei produttori di router SOHO si stanno svegliando E intanto l address space di IPv4 è esaurito!!
Indirizzamento IPv6 - Indirizzi Molto brutalmente, con IPv6, passiamo da 32 bit di indirizzo a 128 bit di indirizzo. In altre parole passiamo da 1 IP ogni 7 milioni di metri quadri a 666 mila miliardi di miliardi di IP per metro quadro (!). Formato degli indirizzi Esteso: 2001:0DB8:0000:0000:0001:0002:3333:4444 Compresso: 2001:DB8:0:0:1:2:3333:4444 Zero-compression: 2001:DB8::1:2:3333:4444 In IPv6 l indirizzo non si divide più in bit di rete/bit di host ma in prefisso/suffisso. Notazione CIDR (non esiste più la subnet mask): IPv6 CIDR Notation 2001:DB8::1af8/64
Indirizzamento IPv6 - Struttura di un indirizzo /48 identificano un sito (ADSL di casa vostra,...) /64 identificano una subnet di un dato sito /128 identificano un host in una data sottorete di un dato sito Questa allocazione rigida ha importanti conseguenze pratiche. Una è che il routing viene fatto in modo puramente gerarchico, un altra la vedremo tra qualche slide... Un sito, tipicamente, riceve una /48 statica. Basta IP dinamici.
Indirizzamento IPv6 - Topologia di un sito Internet 2001:db8:abcd::/48 2001:db8:abcd:3::/64 Frigorifero Router Cucina 2001:db8:abcd:1::/64 Microonde Soggiorno 2001:db8:abcd:2::/64 Salotto Computer PS3 DVR TV
Indirizzamento IPv6 - Classi di indirizzi In IPv6 esistono differenti classi di indirizzi (RFC3513): Link-local: fe80::/10 Site-local: fec0::/10, deprecati nel 2004 da RFC3879 Unique local addresses (RFC4193): fc00::/7 Multicast: ff00::/8 Loopback: ::1/128 Global Unicast: attualmente indirizzi in cui i primi 3 bit sono 001 Con questa allocazione abbiamo esaurito solo il 15% dell address space e abbiamo allo stesso tempo coperto tutte le esigenze presenti (e, verosimilmente, future) di indirizzi (RFC3177).
Indirizzamento IPv6 - Ci risiamo con le classi?? Le classi di indirizzi sono state il male di IPv4, ora le rimettiamo?? La risposta è, naturalmente, no, almeno non nello stile di IPv4. Ogni interfaccia tipicamente ha almeno l indirizzo Link-local, poi se connessa alla Internet globale avrà anche il Global Unicast Address ed in un contesto aziendale, eventualmente, un ULA. Niente più NAT, tranquilli 1 :) Ma IPv6 non porta solo indirizzi più lunghi, per fortuna... 1 Per chi è ancora convinto che NAT e sicurezza siano sinonimi: http//www.s0ftpj.org/bfi/dev/bfi13-dev-17
Stateless address autoconfiguration In IPv4 avevamo il meccanismo del DHCP per l assegnamento degli indirizzi, ora esiste la Stateless address autoconfiguration (RFC2462). L host genera un indirizzo tentative Viene verificata la sua unicità Contatto con il router Configurazione del global address L indirizzo IP viene generalmente generato a partire dall indirizzo di livello 2...uhm...e la privacy?? Privacy extensions in BSD. Esiste anche DHCPv6 che però non tratteremo (RFC3315, RFC3633 e altri).
La famosa conseguenza pratica (una tra tante)... Cosa succede se dobbiamo rinumerare una rete, ad esempio quando cambiamo provider? Il nostro router riceverà un diverso prefisso dal nuovo provider: molto spannometricamente, grazie alla Stateless Address Autoconfiguration, questo prefisso verrà ridistribuito dal nostro router alle varie subnet a cui è connesso e automagicamente la rete è rinumerata! Se il provider A ci fornisse ad es. una /48 ed il provider B una /56 passare da A a B creerebbe un po di difficoltà (tipiche in IPv4)...
Multicast In IPv6 non esiste più il broadcast a livello IP, tutto viene fatto via multicast, ad esempio: Indirizzo ff02::1 ff02::2 ff02::0 ff02::fb Funzione all-nodes all-routers RIP routers mdnsv6 Non sono i soli: http://www.iana.org/assignments/ipv6-multicast-addresses/ ipv6-multicast-addresses.xml
Altre novità Jumbograms (= pacchetti da 4 GB: utili ad es. su Infiniband) Semplificazioni che riguardano l elaborazione dei pacchetti da parte dei router Opzioni estendibili (dovrebbero scongiurare la necessità di riprogettare parti del protocollo in futuro)...
Hands on! Hands on session! Vi mostrerò come configurare un router per la vostra subnet IPv6 su FreeBSD e Linux. Non intendo presentarvi cose troppo complicate: l idea è che andiate a casa e possiate iniziare a giocare con IPv6 Puntiamo sull interattività! Se avete curiosità o volete approfondire dettagli, chiedete!
FreeBSD Creo l interfaccia gif ifconfig gif0 create Configuro gli endpoint IPv4 del tunnel ifconfig gif0 tunnel 2.192.52.161 216.66.80.98 Configuro gli endpoint IPv6 del tunnel ifconfig gif0 inet6 2001:470:25:430::2 \ 2001:470:25:430::1 prefixlen 128 Aggiungo la default route per IPv6 route -n add -inet6 default 2001:470:25:430::1 Attivo l interfaccia ifconfig gif0 up
FreeBSD Attivo il forwarding sysctl net.inet6.ip6.forwarding=1 Configuro l interfaccia ethernet ifconfig em0 inet6 2001:470:b575:abcd::1 prefixlen 64 Lancio il demone di router advertisement rtadvd -fd em0
Linux Quattro semplici passi: Configuro l interfaccia tunnel ip tunnel add he-ipv6 mode sit remote 216.66.80.98 \ local 2.192.52.161 ttl 255 La attivo ip link set he-ipv6 up Configuro il mio indirizzo IPv6 ip addr add 2001:470:25:430::2/64 dev he-ipv6 Configuro la default route ip route add ::/0 dev he-ipv6
Linux Per rendere persistente la configurazione (in Debian) è sufficiente aggiungere le seguenti righe ad /etc/network/interfaces auto he-ipv6 iface he-ipv6 inet6 v4tunnel address 2001:470:25:430::2 netmask 64 endpoint 216.66.80.98 local 2.192.52.161 ttl 255 gateway 2001:470:25:430::1
Linux Il demone di Router Advertisement (/etc/radvd.conf): interface eth0 { AdvSendAdvert on; prefix 2001:db8:1:0::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr off; }; };
Linux Ultimi passi: Configuro l indirizzo IP (/etc/network/interfaces): iface eth0 inet6 static address 2001:470:b575:abcd::1 netmask 64 Attivo il forwarding (/etc/sysctl.conf): net.ipv6.conf.all.forwarding=1
Cosa NON vi ho raccontato DNS e IPv6 DHCP e IPv6 IPSEC, la suite per la sicurezza delle comunicazioni Routing in IPv6 Meccanismi di transizione tipo Teredo e 6to4 Molto, molto altro