Sei sulla pagina 1di 110

` Universita degli Studi di Firenze Facolt` di Ingegneria a

Corso di Laurea in

Ingegneria Informatica

Studio e implementazione della migrazione a IPv6 della rete dellUniversit` di Firenze a


Tesi di Laurea di

Alessio Caiazza
28 settembre 2009

Relatori:

Ing. Tommaso Pecorella Prof. Romano Fantacci

Anno Accademico 2008/2009

Indice
Introduzione 1 IPv6 1.1 1.2 Panoramica . . . . . . . . . . . . . . . . . . . . . . . . . . . . Struttura di un indirizzo IPv6 . . . . . . . . . . . . . . . . . . 1.2.1 La notazione Classless Inter-Domain Routing (CIDR) . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2 1.3 Tipo e visibilit` . . . . . . . . . . . . . . . . . . . . . . a 4 4 5 6 7 8 9 ix 1 1 3

Interoperabilit` . . . . . . . . . . . . . . . . . . . . . . . . . . a 1.3.1 1.3.2 1.3.3 1.3.4 Tecniche a traduzione . . . . . . . . . . . . . . . . . . . Tunneling . . . . . . . . . . . . . . . . . . . . . . . . . Dual-Stack . . . . . . . . . . . . . . . . . . . . . . . . . Confronto . . . . . . . . . . . . . . . . . . . . . . . . .

1.4

Il pacchetto IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4.1 1.4.2 Extension headers . . . . . . . . . . . . . . . . . . . . . 11 Vantaggi rispetto a IPv4 . . . . . . . . . . . . . . . . . 12

1.5

Ottenere un indirizzo IPv6 . . . . . . . . . . . . . . . . . . . . 13 1.5.1 Tunnel broker . . . . . . . . . . . . . . . . . . . . . . . 13 15

2 Servizi base

Indice

ii

2.1

Autocongurazione . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1 2.1.2 2.1.3 EUI-64 . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Congurazione stateless . . . . . . . . . . . . . . . . . 16 DHCPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.2

DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2.1 Il problema del reverse DNS . . . . . . . . . . . . . . . 29

2.3

Confronto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 32

3 Infrastruttura 3.1

Open Shortest Path First (OSPFv3) . . . . . . . . . . . . . . 34 3.1.1 Le aree OSPF . . . . . . . . . . . . . . . . . . . . . . . 36

3.2

Cisco Catalyst 3750 . . . . . . . . . . . . . . . . . . . . . . . . 38 3.2.1 Il router ID OSPF . . . . . . . . . . . . . . . . . . . . 44

3.3

Router Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.3.1 3.3.2 3.3.3 Router Advertisement Daemon (radvd) . . . . . . . . . 45 wide-dhcpv6-relay . . . . . . . . . . . . . . . . . . . . . 46 Firewall - ip6tables . . . . . . . . . . . . . . . . . . . . 48

3.4

Cisco Adaptive Security Appliance (ASA) . . . . . . . . . . . 52 3.4.1 Failover . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.5

Il problema dei due protocolli . . . . . . . . . . . . . . . . . . 54 56

4 Servizi avanzati 4.1 4.2

Secure Shell (SSH) . . . . . . . . . . . . . . . . . . . . . . . . 56 Web server - Apache . . . . . . . . . . . . . . . . . . . . . . . 56 4.2.1 MD-Pro, Drupal, Plone e considerazioni generali . . . . 60 61

5 La rete dellUniversit` degli Studi di Firenze - Uni a 5.1 5.2

Il backbone . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Indirizzamento . . . . . . . . . . . . . . . . . . . . . . . . . . 61

Indice

iii

5.3 5.4 5.5 5.6 5.7

I router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 ASA in failover . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Congurazione dei client . . . . . . . . . . . . . . . . . . . . . 64 Server DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Svolgimento del lavoro di tesi . . . . . . . . . . . . . . . . . . 65 5.7.1 5.7.2 5.7.3 5.7.4 5.7.5 5.7.6 5.7.7 5.7.8 5.7.9 Documentazione e pianicazione . . . . . . . . . . . . . 65 Poshbit . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Infrastruttura di test . . . . . . . . . . . . . . . . . . . 66 Attivazione della connessione con il GARR . . . . . . . 66 La prima rete client dual-stack . . . . . . . . . . . . . . 66 Ulteriori studi sugli ASA in failover . . . . . . . . . . . 68 Monitoring della rete . . . . . . . . . . . . . . . . . . . 68 Server DNS interno al LENST/LaRT . . . . . . . . . . 68 Script di generazione dei record DNS . . . . . . . . . . 68

5.7.10 Script di controllo per il server dhcpv6 . . . . . . . . . 69 6 Conclusioni 6.1 70

Suggerimenti per sviluppi futuri . . . . . . . . . . . . . . . . . 72 74 76 78 97

7 Nota personale A Tavole a colori B File di congurazione e script C Acronimi

Elenco delle gure


1.1 1.2 1.3 1.4 2.1 3.1 3.2 3.3 5.1 5.2 5.3 Struttura di un indirizzo global unicast . . . . . . . . . . . . . Schema NAT IPv6-IPv4 . . . . . . . . . . . . . . . . . . . . . Esempio di tunnel IPv6-in-IPv4 fra due tronconi di rete . . . . 3 6 7

Struttura header IPv6 . . . . . . . . . . . . . . . . . . . . . . 10 I relay-agent DHCP . . . . . . . . . . . . . . . . . . . . . . . . 20 Rete di riferimento per gli esempi . . . . . . . . . . . . . . . . 34 Aree OSPF e tipologie di router . . . . . . . . . . . . . . . . . 37 Catene di ip6tables e ordine di attraversamento . . . . . . . . 49 Prex Uni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Porzione della rete Uni attualmente dual-stack . . . . . . . . 63 Lo stato della rete IPv6 dopo lattivazione del link con il GARR 67

A.1 La rete dellUniversit` degli Studi di Firenze . . . . . . . . . . 77 a

Elenco delle tabelle


3.1 4.1 5.1 Indirizzi dei nodi della rete di riferimento per gli esempi . . . . 33 Record DNS per i virtual host di apache . . . . . . . . . . . . 57 Valori della cifra X nel prex Uni . . . . . . . . . . . . . . . 62

Elenco dei listati


2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 3.1 3.2 3.3 3.4 3.5 3.6 Congurazione DHCPv6 server . . . . . . . . . . . . . . . . . 21 Congurazione DHCPv6 server (cont.) . . . . . . . . . . . . . 22 Congurazione DHCPv6 client . . . . . . . . . . . . . . . . . . 24 Congurazione wide-dhcpv6-client stateless . . . . . . . . . . . 24 Congurazione wide-dhcpv6-client statefull . . . . . . . . . . . 24 Congurazione dibbler client . . . . . . . . . . . . . . . . . . . 25 Esempio di zona BIND . . . . . . . . . . . . . . . . . . . . . . 27 Esempio di zona inversa BIND . . . . . . . . . . . . . . . . . . 28 Tabella di routing IPv6 . . . . . . . . . . . . . . . . . . . . . . 35 Attivare la modalit` dual-stack su un Cisco Catalyst 3750 . . 38 a Attivare il routing IPv6 su un Cisco Catalyst 3750 . . . . . . . 38 Assegnare un indirizzo IPv6 su un Cisco Catalyst 3750 . . . . 39 File di congurazione /etc/radvd.conf . . . . . . . . . . . . . . 47 Congurazione ip6tables-restore per un comportamento NATlike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.7 4.1 4.2 4.3 Esempio congurazione ASA . . . . . . . . . . . . . . . . . . . 53 Direttiva Listen di Apache con indirizzo IPv6 . . . . . . . . . 57 Congurazione dei virtual host di Apache (contenuti diversi) . 58 Congurazione dei virtual host di Apache (stessi contenuti) . . 59

B.1 File di zona ipv6.uni.it . . . . . . . . . . . . . . . . . . . . . 78

ELENCO DEI LISTATI

vii

B.2 File di zona 2001:760:2c05::/48 . . . . . . . . . . . . . . . . . . 82 B.3 Script di generazione dei record AAAA e PTR per BIND . . . 89 B.4 Script di avvio per ip6tables . . . . . . . . . . . . . . . . . . . 95 B.5 Script di controllo per dhcp6s . . . . . . . . . . . . . . . . . . 96

Il sapere umano appartiene al mondo Milo Homann, S.Y.N.A.P.S.E.

Introduzione
IPv6 nasce come soluzione al problema del numero limitato di indirizzi IPv4 e alle conseguenze della politica di assegnazione iniziale delle reti. IPv4 ` stato parte integrante della rivoluzione di Internet ed ` soprave e vissuto per oltre 30 anni, ma n dagli inizi del 1990 la Internet Engineering Task Force (IETF) aveva avviato lo sviluppo del suo successore. Progettato per migliorare il suo predecessore dove era poco performante e per esaltarne i lati migliori, IPv6 aumenta lo spazio di indirizzamento, semplica lheader e ne impone una lunghezza ssa, impedisce la frammentazione dei pacchetti ed introduce il supporto per le estensioni dellheader. Tutto questo tenendo di grande conto linteroperabilit` con IPv4 e la possibilit` di a a una migrazione graduale. In questa tesi illustreremo alcune basi tecniche per comprendere IPv6 ed analizzeremo le possibili opzioni per la migrazione di una infrastruttura di grosse dimensioni. Spiegheremo le scelte ed i motivi che ci hanno spinti a utilizzare una tecnologia anzich unaltra, lasciando comunque spazio e allesposizione dei pregi e difetti di tutte. Arrivati in fondo a questa lettura avrete unimplementazione di riferimento per una rete di tipo geograco con entrambi i protocolli attivi su tutti i nodi, le congurazioni dei servizi base necessari per un corretto funzionamento della rete ed alcune informazioni su come congurare i servizi internet

Introduzione

pi` popolari. u Una delle regole doro delle telecomunicazioni dice che una rete funzionante non si tocca, nel caso di IPv6 prima o poi andr` fatto, quindi meglio a farlo con calma e pianicazione pittosto che allultimo minuto quando saremo tagliati fuori dalla nuova Internet.

Capitolo 1 IPv6
In questo capitolo illustreremo brevemente IPv6 fornendo le nozioni necessarie per il proseguimento della lettura, faremo inoltre una panoramica sugli strumenti e i protocolli per ottenere connettivit` IPv6. a

1.1

Panoramica

Quando IPv4 ` stato progettato utilizzare 32 bit come spazio per lindirize zamento sembrava una scelta pi` che suciente, con il passare degli anni ed u il dilagare di Internet, ci si ` resi conto che 32 bit non sarebbero bastati a e coprire tutte le richieste. Gi` nel 1993 la IETF corre ai ripari introducendo il Classless Intera Domain Routing (CIDR)[?] per ritardare lesaurimento degli indirizzi IPv4 e con lo scopo di permettere alla nuova versione del protocollo, la sesta, di essere completata e testata. Entro una decina di anni comincia il proliferare di studi e opinioni sulla data in cui gli indirizzi IPv4 sarebbero niti, nel 2005 Tony Hain di Cisco Systems

Capitolo 1. IPv6

pubblica un articolo[?] su Internet Protocol Journal stimando la ne degli indirizzi in un periodo compreso fra il 2009 e il 2016. Siamo nel 2009, IPv6 ` una realt` diusa in quasi tutto il continente e a Asiatico gi` a livello di Internet Service Provider (ISP) e sia lUnione Euroa pea che il governo Americano si muovono in questa direzione. I Top Level Domains (TLDs) che hanno nameserver nativi IPv6 sono ormai prossimi all80%[?] permettendo interrogazioni senza la necessit` di uno stack IPv4. a Sul fronte dellesaurimento degli indirizzi a maggio Geo Huston pubblica un articolo dal titolo Predicting the End of the World[?] dove analizza il ritmo con cui questi vengono allocati. La richiesta di indirizzamento ` e aumentata e sostiene che lInternet Assigned Numbers Authority (IANA) nir` gli indirizzi allocabili nella prima met` del 2011, conseguentemente i a a Regional Internet Registries (RIRs) esauriranno la loro disponibilit` nei primi a mesi del 2012. Il risultato dello script di analisi del modello di allocazione degli indirizzi ` consultabile sul sito personale dellautore[?] e fornisce una e stima aggiornata su base giornaliera. Cosa accadr` il giorno in cui gli indirizzi IPv4 niranno? Sicuramente il a periodo che intercorrer` fra la End of the World e la completa adozione a a livello globale di IPv6 sar` complicato. Improvvisamente una risorsa gratuita a come un rete di indirizzi IPv4 avr` un alto valore economico. Ci saranno pera sone disposte a vendere porzioni del proprio indirizzamento? Quanto saranno disposti a pagare i nuovi compratori? Cosa faranno tutte quelle aziende che fondano il proprio core business su attivit` online? Come faranno ad entrare a nel mercato nuovi ISP se non potranno avere una loro porzione di indirizzi IPv4 per i propri clienti? La nascita di un mercato per gli indirizzi IPv4, regolare o meno, sar` inevitabile[?, ?]. a Se negli ultimi 10 anni si ` volutamente evitato di arontare il problema e

Capitolo 1. IPv6

Global routing prex n bit

Subnet ID 64-n bit

Interface ID 64 bit

Figura 1.1: Struttura di un indirizzo global unicast

additandolo come una visione fanatica da apostoli dellapocalisse, adesso ` e sotto gli occhi di tutti e va arontato. Chi decider` di far nta di niente si a trover` presto a dover fare i conti con le lamentele dei propri utenti che non a riusciranno a raggiungere i nuovissimi servizi solo IPv6. Chi invece, come lUniversit` di Firenze, aronter` il problema con anticipo potr` farlo con a a a pi` calma e pianicazione. Non ` necessario investire grandi quantit` di deu e a naro, baster` assicurarsi che il nuovo hardware supporti IPv6 quando verr` a a il momento di cambiarlo.

1.2

Struttura di un indirizzo IPv6

Un indirizzo IPv6 ` un dato a 128 bit. Si utilizza una rappresentazione a e gruppi di 4 cifre esadecimali separati dal simbolo : 2001:0db8:2c05:0000:0000:0000:0000:0027 o in modo pi` contratto u 2001:db8:2c05::27 ` infatti possibile omettere gli zeri di sinistra in ogni blocco e si pu` introdurre e o una sola volta la notazione :: che viene espansa in gruppi di 0000 no a completare lindirizzo. Facendo riferimento allo schema in gura 1.1 si denisce site una rete amministrata da un unico gestore, il global routing prex ` lo spazio di ine dirizzamento assegnatogli, la subnet ID ` la parte rimanente ad ottenere il e

Capitolo 1. IPv6

prex (presso) di lunghezza 64 bit, i rimanenti bit identicano linterfaccia di rete a cui ` assegnato lindirizzo e si chiamano interface ID. e

1.2.1

La notazione Classless Inter-Domain Routing (CIDR)

In IPv6 si utilizza una notazione CIDR per identicare la lunghezza del prex di un indirizzo. Esattamente come in IPv4 si fa seguire un indirizzo dal simbolo / e dalla lunghezza del presso espressa in decimale. Questa rappresenta il numero di bit dellindirizzo, a partire da quello pi` signicativo, u che compongono il prex. Per esempio lindirizzo 2001:db8:0:56::beef/64 indica che il prex di questa rete ` 2001:db8:0:56::/64 ovvero e 2001:0db8:0000:0056:0000:0000:0000:0000. Occorre fare attenzione perch 2001:db8:0:56::/64 ` anche un indirizzo IPv6 valido, infatti non esie e stono in IPv6 il network address ed il broadcast address, il primo ` sostituito e dal prex ed il secondo dagli indirizzi multicast link-local (vedi 1.2.2). Quindi ogni volta che non ` evidente dal contesto occorre specicare se si sta e parlando di un indirizzo o di un prex.

1.2.2

Tipo e visibilit` a

` E importante sapere che gli indirizzi sono divisi secondo tipo e visibilit`, i tipi a sono unicast, multicast ed anycast mentre le visibilit` sono global, site-local a (deprecato) e link-local. Gli indirizzi global sono raggiungibili da tutta la rete IPv6, i site-local sono indirizzi privati interni ad un site che non devono essere instradati al di fuori della propria infrastruttura, i link-local invece non devono mai essere inoltrati fuori dal link di origine. Lindirizzo ::1/128 rappresenta il localhost

Capitolo 1. IPv6

per linterfaccia di loopback mentre il prex fe80::/10 ` stato riservato per e lautocongurazione stateless a livello di link (vedi 2.1). Unicast Un indirizzo unicast identica univocamente uninterfaccia. In questa tesi ci concentreremo principalmente sugli indirizzi global unicast per i quali lo IANA ha registrato il presso 2000::/3[?]. Tutti gli esempi proposti utilizzano indirizzi contenuti nel prex 2001:db8::/32 che ` stato riservato per la e scrittura di documentazione inerente a IPv6[?] e quindi non sar` mai allocato. a Multicast Un indirizzo multicast individua un gruppo di interfacce, i pacchetti destinati allindirizzo vengono instradati a tutti i nodi partecipanti al multicast. Anycast Un indirizzo anycast individua un gruppo di interfacce, i pacchetti destinati ad un indirizzo anycast vengono instradati verso una sola interfaccia, solitamente la pi` vicina. u

1.3

Interoperabilit` a

Bench in futuro gli host IPv4 saranno solo un ricordo per nostalgici, nel e periodo di transizione sar` necessario garantire linteroperabilit` tra le due a a versioni del protocollo. A questo scopo sono state progettate tre tecniche.

Capitolo 1. IPv6

IPv6

IPv4

Bob Alice NAT-PT gateway 150.214.2.7 2001:db8:dead::1 2001:db8:dead:: indirizzi assegnati 78.134.19.0/24
Figura 1.2: Schema NAT IPv6-IPv4

1.3.1

Tecniche a traduzione

Queste tecniche permettono ad un host esclusivamente IPv6 di comunicare anche con gli host IPv4. Si tratta in pratica di fornire un meccanismo per la traduzione reciproca degli indirizzi e dei pacchetti. A questo scopo si utilizza un Network Address TranslationPort Translation (NAT)[?] come per reti private IPv4, con laggiunta della traduzione di protocollo. In un contesto del genere, con riferimento alla gura 1.2, il gateway NAT far` advertising di un prex ttizio di dimensione 96 bit e convertir` tutte le a a risposte del server Domain Name System (DNS) che contengono solo record IPv4 in record IPv6 costruiti accodando al presso in questione lindirizzo IPv4 convertito in forma esadecimale. Quando Alice vorr` comunicare con a Bob, mander` un pacchetto allindirizzo IPv6 alterato dal gateway. a Il gateway NAT, una volta ricevuto il pacchetto, lo tradurr` in uno IPv4 a assegnando ad Alice una porta ed un IP dalla rete 78.134.19.0/24, similmente a ci` che avviene per le reti private IPv4. o Quando Bob risponder` al pacchetto il gateway si preoccuper` di fare lopea a razione inversa garantendo cos` la comunicazione fra la rete solo IPv6 e la rete solo IPv4.

Capitolo 1. IPv6

2001:db8::1:

Alice 2001:db8::1::74

protocol 41 Apparati IPv4

Bob 2001:db8:aa89:f5::16

2001:db8:aa89:f5::feed

Figura 1.3: Esempio di tunnel IPv6-in-IPv4 fra due tronconi di rete

1.3.2

Tunneling

Le tecniche di tunneling consentono di bypassare tronconi della rete che non supportano IPv6 incapsulando il pacchetto in uno o pi` pacchetti IPv4. Esiu stono diverse tecniche e non tutte hanno attualmente delle implementazioni funzionanti, vediamo le pi` signicative. u Protocol 41 (proto-41) Un esempio ` il Protocol 41 (proto-41)[?], noto anche come 6to4, che ime plementa la tecnica IPv6-in-IPv4. Se utilizzato in modo automatico (senza congurazione) cercher` di raggiungere un qualsiasi relay router IPv6 in a grado di instradare il nostro pacchetto in modo nativo. A questo scopo ` e stata riservata la rete 2002::/16 che associa ad ogni indirizzo IPv4 un prex di 48 bit composto da 2002 pi` i 32 bit dellindirizzo IPv4 convertito u

Capitolo 1. IPv6

in esadecimale. Ad esempio lhost 192.0.2.42 diventa il router per il prex 2002:c000:022a::/48. Per permettere il raggiungimento dei relay router lo IANA ha dedicato lindirizzo IPv4 anycast 192.88.99.1. Il proto-41 pu` essere anche usato in modo non automatico per collegare o due punti della rete di un Autonomous System (AS) che non dispongono di router abilitati al traco IPv6, come in gura 1.3. In questo caso ` necessario e congurare dei punti di accesso agli estremi che intendiamo collegare in modo da incapsulare e de-capsulare i pacchetti IPv6. Anything In Anything (AYIYA) Di notevole interesse ` il protocollo Anything In Anything (AYIYA)[?] che e denisce un metodo per congurare un tunnel per un client IPv4 che si trovi dietro un NAT, in questo caso si utilizzano i protocolli UDP o TCP per instradare il traco IPv6. Otteniamo quindi un tunnel di tipo IPv6in-UDP-in-IPv4 o IPv6-in-TCP-in-IPv4 che aggiunge connettivit` IPv6 al a nostro nodo. Altre tecniche La proposta di Microsoft al problema del tunneling IPv6 si chiama Teredo[?], si tratta di un tunnel IPv6-in-UDP-in-IPv4. Esiste anche Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), ma le tecniche di tunneling pi` u utilizzate sono le precedenti.

1.3.3

Dual-Stack

Questa tecnica, che sar` poi oggetto dellimplementazione di questa tesi, a consiste nel fornire ad ogni nodo della rete entrambi gli stack protocolla-

Capitolo 1. IPv6

ri, versione 4 e 6. I singoli host, sulla base della risposta fornita dal DNS, dovranno decidere con quale versione del protocollo avviare la connessione.

1.3.4

Confronto

La tecnica dual-stack ha lo svantaggio di utilizzare il doppio delle risorse per mantenere le tabelle di routing e le informazioni relative al networking, per` o si applica bene ad uninfrastruttura IPv4 preesistente. Inoltre questo onere ` trascurabile viste le prestazioni dei moderni computer; diverso potrebbe e essere il discorso per apparati di rete con hardware datato, ma probabilmente il loro rmware non supporter` neanche IPv6. a Le tecniche a traduzione sono da evitare a meno che non siano assolutamente necessarie, uno degli scopi principali di IPv6 ` riportare la comunicae zione ad essere end-to-end rimuovendo tutti i NAT. Implementando questo tipo di tecniche andiamo ad introdurre una nuova generazione di NAT che non far` altro che spostare il problema. Questi nuovi punti di traduzione avrana no i soliti problemi legati ai predecessori IPv4: carico eccessivo sul gateway, problemi con i protocolli di livello applicativo che utilizzano al loro interno informazioni come lindirizzo IP, necessit` di congurazione del gateway sea condo le esigenze speciche di alcuni programmi applicativi, impossibilit` di a utilizzo dei protocolli di trasporto che non siano TCP o UDP. Il tunneling rimane lunica alternativa quando non si ha a disposizione una connessione IPv6 nativa, ma conviene usarla in congiunzione con la tecnica dual-stack in modo da ottenere un prex tramite tunnel e poi instradarlo nativamente sulla propria infrastruttura interna in dual-stack.

Capitolo 1. IPv6

10

3 4

11 12

15 16

23 24

31

Version Trac Class Payload Length

Flow Label Next Header Hop Limit

Source Address

Destination Address

Figura 1.4: Struttura header IPv6

1.4

Il pacchetto IPv6

Non ` scopo di questa tesi illustrare in dettaglio la struttura dei pacchete ti IPv6, si ritiene per` opportuno dare alcune nozioni di confronto con la o versione 4 del protocollo. Guardando lo schema in gura 1.4 si nota subito una semplicazione rispetto a IPv4, sono stati rimossi i campi Header Length, Identification Flags, Fragment Offset e Header Checksum, lheader ha una lunghezza ssa di 40 byte e non ` prevista la frammentazione. e I campi rimanenti hanno invece il seguente signicato: Version (4 bit) identica la versione del protocollo, 6. Trac Class (1 byte) sostituisce il Type of Service di IPv4, serve a marchiare i pacchetti che richiedono un trattamento speciale (real-time, classi di priorit`). a

Capitolo 1. IPv6

11

Flow Label (20 bit) serve per la marchiatura dei ussi verso una specica destinazione, ` considerata una feature sperimentale. e Payload Length (2 byte) specica la lunghezza del payload, a dierenza del campo in IPv4 questa non include nel conteggio la lunghezza dellheader. Next Header (1byte) rappresenta il Protocol Type di IPv4, i valori per UDP e TCP sono rimasti inalterati. Hop Limit (1 byte) rappresenta il TTL di IPv4. Source Address (16 byte) indirizzo del nodo che ha generato il pacchetto. Destination Address (16 byte) indirizzo del nodo destinatario del pacchetto.

1.4.1

Extension headers

In IPv6 ` possibile estendere lheader attraverso gli Extension headers, la loro e presenza ` indicata dal campo Next Header e se non sono di pertinenza del e nodo di transito vengono ignorati inoltrando il pacchetto secondo le informazioni presenti nellheader. Questi Extension headers sono considerati a tutti gli eetti parte del payload e ne inuenzano la dimensione. Alcuni esempi sono Hop-by-Hop Option header, Routing header, Fragment header, Destination Options header[?], Authentication header[?] ed Encryption Security Payload header[?].

Capitolo 1. IPv6

12

1.4.2

Vantaggi rispetto a IPv4

IPv6 aumenta lo spazio di indirizzamento, semplica lheader e ne impone una lunghezza ssa, rimuove la frammentazione dei pacchetti ed introduce il supporto per le estensioni dellheader. Maggior spazio di indirizzamento Un indirizzo IPv4 ` un campo a 32 bit, se fossero tutti utilizzabili avremmo e un numero di indirizzi massimo pari a 232 , circa 4.29 miliardi. Se consideriamo che la popolazione mondiale ` di circa 6.4 miliardi e ci fermiamo a riettere e sul crescente numero di dispositivi personali che utilizzano un indirizzo IP ` e immediato accorgersi che il numero di indirizzi disponibili non ` suciente. e IPv6 ha a disposizione 340282366920938463463374607431768211456 3.4 1038 indirizzi che sono pi` di 6.6 1023 per metro quadrato della supercie teru restre. Questo elimina completamente la necessit` di NAT riportando la a comunicazione ad essere nuovamente end-to-end e diminuendo il carico sui gateway. Header semplicato La lunghezza ssa di 40 byte permette di processare i pacchetti in modo pi` semplice e veloce. Inoltre rimuovendo il controllo di errore si evita che u ogni nodo attraversato dal pacchetto debba calcolare nuovamente il CRC in seguito al decremento del TTL.

Capitolo 1. IPv6

13

Nessuna frammentazione IPv6 rimuove la frammentazione dei pacchetti lasciando ai due estremi della comunicazione, che tipicamente sono macchine pi` performanti dei router che u li interconnettono, il compito di preparare pacchetti con dimensione al pi` u uguale al minore degli MTU di tutti i segmenti della rete. Questo alleggerisce di molto il carico di lavoro sui router. Header estendibile Gli Extension headers permettono di implementare funzionalit` aggiuntive a come QoS o Mobile IPv6 ma sono presenti solo se realmente utilizzati.

1.5

Ottenere un indirizzo IPv6

Bench attualmente in Europa non siano molti gli ISP che orono connete tivit` nativa IPv6 ` possibile incapsulare un pacchetto IPv6 in uno IPv4 a e considerando la rete Internet come un link verso un relay router che possa instradare il pacchetto in formato nativo (vedi 1.3.2).

1.5.1

Tunnel broker

I tunnel broker[?] sono dei fornitori di connettivit` IPv6 attraverso la rete a IPv4. Il loro scopo ` di fare da punto di smistamento rispetto ai server di e tunneling. Spesso un tunnel broker ore la possibilit` di scegliere fra diversi a protocolli a seconda della propria congurazione di rete. Soluzioni gratuite sono oerte da broker come SixXS1 e gogo62 che permettono di usare diversi tipi di tunnel a seconda del nostro tipo di connessione
1 2

http://www.sixxs.net http://go6.net

Capitolo 1. IPv6

14

ad Internet. Attraverso lopera dei broker ` facile ottenere un prex di almeno e 64 bit che ` suciente3 a indirizzare qualsiasi LAN con indirizzi pubblici. e

parliamo di 264 indirizzi pubblici disponibili

Capitolo 2 Servizi base


Prima di discutere gli elementi dellinfrastruttura analizziamo i servizi necessari per un corretto funzionamento di una rete IPv6. Occorre infatti spiegare come funzionano i meccanismi di autocongurazione degli indirizzi IP in modo da poterne scegliere uno e congurare linfrastruttura in accordo con questa scelta.

2.1

Autocongurazione

Una delle novit` introdotte da IPv6 ` lautocongurazione dei nodi di rete, a e che anche in assenza di un router ` in grado di generare autonomamente un e indirizzo link-local unicast per garantire la comunicazione fra i nodi interconnessi. La generazione di questo tipo di indirizzo ` il primo passo da eseguire e per poter ottenere un indirizzo global unicast. Con gli indirizzi link-local unicast e con il protocollo ICMPv6 si va di fatto a spostare pi` in alto di un u livello il compito di ARP, rendendolo indipendente dalla tecnologia utilizzata per il livello due della rete.

Capitolo 2. Servizi base

16

2.1.1

EUI-64

Nel capitolo 1.2.2 abbiamo detto che il prex fe80::/10 ` riservato agli ine dirizzi link-local, da questo prex ` stata allocata la rete fe80::/64 dedicata e agli indirizzi unicast autocongurati. Per assegnare la interface ID si utilizza lExtend Unique Identier (EUI-64), un campo di 64 bit generato a partire dallindirizzo MAC dellinterfaccia di rete. Nel caso delle interfacce ethernet, con indirizzo MAC di 48 bit, si utilizza il seguente algoritmo. Si inserisce la cifra esadecimale 0xFF-FE fra il terzo ed il quarto byte del MAC, dopodich e il primo byte viene sostituito con 0x02. Quindi lindirizzo MAC 00:16:cb:8c:de:8b diventer` linterface ID a 0216:cbff:fe8c:de8b e dunque lindirizzo link-local unicast fe80::216:cbff:fe8c:de8b/64.

2.1.2

Congurazione stateless

La congurazione stateless ore la possibilit` di ottenere un indirizzo global a unicast e un router verso cui instradare i pacchetti in modo automatico[?]. Il procedimento fa uso di pacchetti ICMPv6[?, ?] dedicati a questo scopo. Prima di procedere ` necessario introdurre alcuni termini. e tentative address (indirizzo incerto) un indirizzo di cui si sta vericando lunicit` sul link, ancora non ` stato assegnato allinterfaccia. a e preferred address (indirizzo preferito) un indirizzo assegnato allinterfaccia che pu` essere usato dai protocolli di livello superiore senza alcuna o restrizione. Pu` gurare come indirizzo di sorgente o di destinazione. o deprecated address (indirizzo deprecato) un indirizzo assegnato allinterfaccia il cui uso ` scoraggiato, ma non proibito. I pacchetti inviati e e

Capitolo 2. Servizi base

17

ricevuti con questo indirizzo sono trattati normalmente, ma le nuove comunicazioni non dovrebbero utilizzarlo. Un indirizzo deprecato pu` o essere ancora utilizzato per quei protocolli in cui cambiare in favore di un nuovo indirizzo preferito causerebbe problemi alla connessione (ad esempio una sessione TCP attiva.) valid address (indirizzo valido) un indirizzo deprecato o preferito. invalid address (indirizzo non valido) un indirizzo che non ` assegnato a e nessuna interfaccia. Un indirizzo valido diventa non valido quando il suo valid lifetime scade. Gli indirizzi non validi non devono essere utilizzati come indirizzo di sorgente o di destinazione. preferred lifetime il periodo di tempo in cui lindirizzo deve essere considerato preferito. Alla scadenza lindirizzo diventa deprecato. valid lifetime il periodo di tempo in cui lindirizzo deve essere considerato valido. Questo valore deve essere maggiore o uguale del preferred lifetime. Alla sua scadenza lindirizzo diventa non valido. Procedimento Un nodo durante la sua fase di inizializzazione dellinterfaccia di rete provvede allassegnazione dellindirizzo link-local generandolo con lalgoritmo denito nel paragrafo 2.1.1 e registrandolo come tentative address. Allo scopo di vericarne lunicit` manda un pacchetto di Neighbor Solicitation con il campo a Target Address impostato su questo indirizzo. Tutti i nodi del link vericano lindirizzo e se ` assegnato a una delle loro interfacce o ne stanno vericando e lunicit` anche loro, rispondono con un Neighbor Advertisement avvisana do che lindirizzo ` gi` in uso. Qualora questo procedimento non andasse a e a

Capitolo 2. Servizi base

18

buon ne il nodo necessiterebbe di una congurazione manuale, altrimenti lindirizzo ` impostato come valid address. e Una volta ottenuto un indirizzo link-local valido, un host cerca di determinare la presenza di router sul proprio link. I router inviano periodicamente dei pacchetti multicast di Router Advertisement specicando quali sono i prex di loro competenza e le modalit` per ottenere i dati di congurazioa ne. Ci sono tre ag rilevanti a questo scopo, managed address conguration (ag M) indica che ` necessario eseguire una congurazione statefull a mezzo e di un server DHCP (vedi 2.1.3), other statefull conguration (ag O) indica la possibilit` di ottenere parametri diversi dallindirizzo IP, come per a esempio il server DNS o il dominio di ricerca predenito, attraverso il server DHCP ed inne autonomous address-conguration (ag A) che ` specicato e per ogni prex annunciato e autorizza lhost alla generazione autonoma di un indirizzo. Qualora sia presente il ag A ed il nodo sia riuscito a completare in modo automatico lassegnazione di un indirizzo link-local, allora potr` assegnarsi a come preferred address un indirizzo composto dal prex annunciato e dalla interface ID calcolata secondo lo standard EUI-64. In tutti gli altri casi ` e necessario che lindirizzo sia segnato come tentative address e vericato con i pacchetti ICMP.

2.1.3

DHCPv6

Il DHCP[?] pu` essere usato sia come alternativa alla congurazione stateo less, per avere una gestione centralizzata degli indirizzi, sia come strumento di supporto alla congurazione stateless, per fornire altri parametri non distribuibili con i pacchetti di Router Advertisement. Questo protocollo ` del e tutto indipendente dalla versione relativa a IPv4.

Capitolo 2. Servizi base

19

I partecipanti ad una comunicazione DHCP possono essere di tre tipi, server, client e relay-agent. Il server ha nella propria congurazione una riserva di indirizzi assegnabili e risponde ai client fornendo le informazioni richieste, inoltre tiene traccia della validit` degli indirizzi assegnati in modo da poterli a utilizzare nuovamente quando saranno scaduti. Un server deve partecipare al gruppo multicast FF02::1:2 per poter ricevere le richieste dei client. Il client contatta i server attraverso lindirizzo multicast e si preoccupa di richiedere al server il rinnovo dellindirizzo assegnato prima che diventi deprecato. Lindirizzo multicast dei server ha visibilit` link-local; per permettere a client su a altri link di ottenere un indirizzo esistono i relay-agent che partecipano allo stesso gruppo multicast dei server e che hanno il compito di impacchettare le richieste dei client sul proprio link e di inoltrarle verso il server. In aggiunta al preferred lifetime ad al valid lifetime il protocollo DHCP introduce altri due timeout T1 e T2 : il primo rappresenta il momento in cui il client deve iniziare a chiedere il rinnovo del lifetime del proprio indirizzo, se non riceve risposta entro il tempo T2 allora deve inviare una richiesta di rebind a tutti i server DHCP con lo scopo di trovarne un altro che si faccia carico di mantenere traccia della validit` dellindirizzo. a Come per la versione IPv4 il protocollo di trasporto ` UDP, la porta dei e client ` la 564 mentre i server ed i relay-agent sono in ascolto sulla 547. e relay-agent Dei tre componenti del DHCP il relay-agent ` il pi` semplice da congurare, e u basta specicare su quale interfaccia deve stare in ascolto. In questa modalit` a ` per` necessario avere un relay-agent per ogni link fra la rete dei client e e o la rete dei server (gura 2.1(a)). Per ovviare questo inconveniente ` possibile e specicare lindirizzo unicast del server e posizionare i relay-agent solo sui

Capitolo 2. Servizi base

20

relay-agent server server

relay-agent

client

relay-agent

client

relay-agent

(a) link-local multicast

(b) global unicast

Figura 2.1: I relay-agent DHCP

link dei client (gura 2.1(b)). Avendo un server con indirizzo 2001:db8::feed per congurare un relayagent su un Cisco Catalyst 3750 dobbiamo aggiungere allinterno della sezione di congurazione dellinterfaccia del link dei client listruzione
i p v 6 dhcp r e l a y d e s t i n a t i o n 2 0 0 1 : db8 : : f e e d

Se invece vogliamo utilizzare una macchina con sistema operativo Debian Linux possiamo usare il software wide-dhcpv6-relay. Ponendo di avere linterfaccia eth2 sulla LAN e la eth3 verso il server, dobbiamo usare il comando
d h c p 6 r e l a y s 2 0 0 1 : db8 : : f e e d r e t h 3 e t h 2

server Vediamo ora la congurazione del server dhcpv6 riportata nei listati 2.1 e 2.2. Notiamo la struttura a parentesi grae che serve a identicare il contesto in cui impartiamo le istruzioni; tutta la congurazione ` relativa allinterfaccia e eth1. Dalla riga 7 alla 10 deniamo, in ordine, i timeout T1, T2, preferred lifetime e valid lifetime, tutti espressi in secondi. Con le righe 11 e 12 abilitiamo la comunicazione unicast in aggiunta a quella multicast che ` attiva di e

Capitolo 2. Servizi base

21

Listato 2.1: Congurazione DHCPv6 server 1 # 2 # See dhcp6s . c o n f ( 5 ) man page f o r d e t a i l s . 3 # 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # r e t e d05 l i n k d05 { relay 2 0 0 1 : db8 : 0 : d05 : : / 6 4 ; pool { range 2 0 0 1 : db8 : 0 : d05 : : 1 0 0 0 to 2 0 0 1 : db8 : 0 : d05 : : 1 1 0 0 / 6 4 ; 22 23 }; }; option d n s s e r v e r s 2 0 0 1 : db8 : : f e e d v6cowboys . com ; interface eth1 { server preference 2 5 5 ; renewtime 1 8 0 0 0 ; rebindtime 2 8 8 0 0 ; # 5 ore # 8 ore

prefer life time 3 6 0 0 0 ; #10 o r e valid life time 4 3 2 0 0 ; allow u n i c a s t ; send u n i c a s t ; allow r a p i d commit ; #12 o r e

Capitolo 2. Servizi base

22

Listato 2.2: Congurazione DHCPv6 server (cont.) 24 #SALES s i u t i l i z z a un group p e r mandare un dns specifico 25 26 group { option d n s s e r v e r s 2 0 0 1 : db8 : 0 : 1 0 0 2 : : 1 s a l e s . v6cowboys . com ; 27 28 29 30 31 l i n k SALES { relay 2 0 0 1 : db8 : 0 : 1 0 0 2 : : / 6 4 ; pool { range 2 0 0 1 : db8 : 0 : 1 0 0 2 : : 1 0 0 0 to 2 0 0 1 : db8 : 0 : 1 0 0 2 : : 1 0 3 2 / 6 4 ; 32 33 34 35 }; }; }; };

Capitolo 2. Servizi base

23

default. Mentre con la riga 13 abilitiamo la modalit` rapid-commit che riduce a il numero di messaggi scambiati fra server e client. Inne deniamo il server DNS ed il dominio per le ricerche con la riga 15, terminando cos` i parametri generali. Come abbiamo detto utilizziamo il server DHCP assieme a dei relayagent, quindi ` necessario denire un contesto per ogni link. Con la riga 18 e deniamo il link d05 relativo al relay-agent del prex 2001:db8:0:d05::/64 specicato alla riga 19. Con la direttiva range, alla riga 21, dichiariamo quali sono gli indirizzi assegnabili tramite DHCP. Se dobbiamo sovrascrivere i parametri generali per alcuni link, possiamo utilizzare il contesto group che permette questa operazione. Alla riga 26 cambiamo il server DNS ed il dominio di ricerca per il link SALES, denito alla riga 28 con le stesse modalit` a viste per il link d05. client Dal punto di vista dei client la situazione ` piuttosto variegata; analizziamo e i principali sistemi operativi. Linux I principali client per Linux sono dhcpv6, wide-dhcpv6 e dibbler. La congurazione di dhcpv6 ` visibile nel listato 2.3, questa congurazione e richiede attraverso interfaccia eth0 un indirizzo IP, un server DNS e il proprio dominio di ricerca. Se non volessimo ottenere lindirizzo IP, e quindi sfruttare una congurazione stateless, dovremmo togliere il commento dalla seconda riga. Per quanto riguarda wide-dhcpv6 invece utilizzeremo i le di congurazione nei listati 2.4 o 2.5, il primo per ottenere una congurazione stateless, il secondo per una statefull.

Capitolo 2. Servizi base

24

Listato 2.3: Congurazione DHCPv6 client i n t e r f a c e eth0 { #i n f o r m a t i o n o n l y ; send r a p i d commit ; r e q u e s t domainnames e r v e r s , domains e a r c h l i s t ; };

Listato 2.4: Congurazione wide-dhcpv6-client stateless #s t a t e l e s s i n t e r f a c e eth0 { send i a na 0 ; r e q u e s t domainnames e r v e r s ; r e q u e s t domainname ; };

ida s s o c na 0 { };

Listato 2.5: Congurazione wide-dhcpv6-client statefull #s t a t e f u l l i n t e r f a c e eth0 { send i a na 1 ; r e q u e s t domainnames e r v e r s ; r e q u e s t domainname ; };

ida s s o c na 1 { };

Capitolo 2. Servizi base

25

Listato 2.6: Congurazione dibbler client l o g mode s h o r t

# 7 = omit debug me ss age s l o g l e v e l 7

i f a c e C o n n e s s i o n e a l l a r e t e l o c a l e (LAN) { ia # o p t i o n dnss e r v e r o p t i o n domain }

OS X 10.5 Il supporto per DHCPv6 non ` fornito con OS X, ` necessario e e compilare e installare manualmente il pacchetto wide-dhcpv6. Anche con questo accorgimento non ` possibile congurare altro che il proprio indirizzo e IP. Per avere connettivit` completa su OS X ` necessario avere un server a e DNS impostato in modo statico o attraverso DHCPv4. Per quanto riguarda la congurazione si pu` usare il listato 2.5 avendo premura di sostituire il o nome dellinterfaccia eth0 con en0. Windows Vista Il client DHCP di Windows Vista si attiva autonomamente nel caso in cui i pacchetti di Router Advertisement contengano il ag managed address conguration o other statefull conguration. Non ` richiesta e alcuna operazione da parte dellutente. Windows XP Per utilizzare un client DHCPv6 in Windows XP ` necese sario installare il software dibbler e congurarlo. Nel listato 2.6 ` riportata la e ` congurazione per la scheda di rete di un PC con Windows in italiano. E da

Capitolo 2. Servizi base

26

notare che, a dierenza dei sistemi operativi UNIX, linterfaccia ` individuae ta con il nome localizzato secondo la lingua del sistema operativo (direttiva iface). Nonostante il server DNS venga registrato nelle impostazioni di sistema rimane il fatto che Windows XP SP2 non ` in grado di eettuare richieste e ` DNS direttamente in IPv6. E quindi necessario un server raggiungibile in IPv4 ed una congurazione obbligatoriamente dual-stack. DHCP Unique Identier Ogni interfaccia che voglia comunicare attraverso il protocollo DHCP ` tee nuta alla generazione di un DHCP Unique Identier (DUID). Si tratta di un identicativo univoco dellinterfaccia che non deve mai cambiare dal momento della sua generazione. LRFC3315[?] descrive tre metodi diversi per generare questo identicativo. DUID-LLT basato sullindirizzo di livello due e sullistante temporale della generazione dellidenticativo stesso. DUID-EN basato su un codice identicativo deciso dal produttore in fase di costruzione del dispositivo. DUID-LL basato sullindirizo di livello due. La tecnica DUID-LLT ` da considerarsi preferenziale rispetto alle altre, che e sono indicate per dispositivi senza la possibilit` di salvare il DUID in unaa rea di memoria permanente. Questo codice univoco viene inserito in tutti i pacchetti DHCP e permette al server di distinguere ogni client. Pu` essere o utilizzato anche come identicativo per inviare una particolare congurazione di rete.

Capitolo 2. Servizi base

27

Listato 2.7: Esempio di zona BIND $TTL 3600

@ 86400 IN SOA dns . i p v 6 . u n i f i . i t . s t a f f r e t i . u n i f i . i t . ( 2009081102 86400 7200 3600000 3600 ) ; Serial

; Refresh ; Retry ; Expire ; Minimum

@ 86400

IN

NS

dns . i p v 6 . u n i f i . i t .

@ 4800

IN IN

AAAA A

2 0 0 1 : 7 6 0 : 2 c05 : 1 : : 2 0 150.217.1.20

dns

4800 4800

IN IN

AAAA A

2 0 0 1 : 7 6 0 : 2 c05 : 1 : : 2 0 150.217.1.20

l e n s t 4800

IN

AAAA

2 0 0 1 : 7 6 0 : 2 c05 : 1 0 0 1 : : 2 4

2.2

DNS

Con lavvento di IPv6 si ` prevista lintroduzione di un nuovo record AAAA e per il DNS dedicato a questo nuovo tipo di indirizzi[?]. Per quanto questo possa sfuggire ad una prima analisi, ` proprio il server DNS il punto cardine e della migrazione. Finch non pubblicheremo nei server DNS i nostri indirizzi e IPv6 possiamo essere certi che nessuno raggiunger` i nostri servizi con il nuoa vo protocollo, dato che lo far` attraverso il nostro hostname che pubblicher` a a solo record di tipo A (IPv4).

Capitolo 2. Servizi base

28

Listato 2.8: Esempio di zona inversa BIND $TTL 3d ; D e f a u l t TTL @ IN SOA 5 . 0 . c . 2 . 0 . 6 . 7 . 0 . 1 . 0 . 0 . 2 . i p 6 . arpa . staffreti . unifi . it . ( 2009081102 24h 30m 2d 3d ) ; S e r i a l number (YYYYMMdd) ; R e f r e s h time ; Retry time ; E x p i r e time ; D e f a u l t TTL

; Name s e r v e r e n t r i e s IN NS dns . i p v 6 . u n i f i . i t .

; p r e f i x 2 0 0 1 : 7 6 0 : 2 c05 : 1 : : / 6 4 $ORIGIN 1 . 0 . 0 . 0 . 5 . 0 . c . 2 . 0 . 6 . 7 . 0 . 1 . 0 . 0 . 2 . i p 6 . arpa . 0 . 2 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR dns . i p v 6 . u n i f i . i t . ; p r e f i x 2 0 0 1 : 7 6 0 : 2 c05 : 1 0 0 1 : : / 6 4 $ORIGIN 1 . 0 . 0 . 1 . 5 . 0 . c . 2 . 0 . 6 . 7 . 0 . 1 . 0 . 0 . 2 . i p 6 . arpa . 4 . 2 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t . i p v 6 . u n i f i . i t .

Capitolo 2. Servizi base

29

Esistono anche le query inverse (reverse DNS o record PTR) che rispondono alla domanda quale ` il nome di dominio di questo indirizzo?. Ogni e sottodominio di IP6.ARPA rappresenta una cifra esadecimale dellindirizzo IPv6 a partire da quella pi` signicativa. Quindi per chiedere lhostname per u lindirizzo 2001:db8::cafe bisogna interrogare il server DNS per il nome di dominio
e . f . a . c . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 8 . b . d . 0 . 1 . 0 . 0 . 2 . i p 6 . arpa

I listati 2.7 e 2.8 orono un esempio di le di zona del server DNS BIND con due host congurati. Per maggiori approfondimenti si rimanda al manuale di BIND e alle congurazioni fornite in appendice B.1 e B.2 .

2.2.1

Il problema del reverse DNS

Ogni host raggiungibile su Internet deve avere un hostname ed un record PTR per il reverse DNS. Questo ` ci` che richiede lRFC1912[?] in merito ai record e o IPv4, ma per IPv6? La questione rimane aperta perch lRFC non ` stato e e aggiornato dopo la pubblicazione di IPv6 ed il reverse DNS viene utilizzato solo in alcuni casi. Alcune funzionalit` di logging lo usano per avere un output a pi` leggibile, senza alcun problema nel caso in cui il record non sia presente u ed alcuni server di posta elettronica, durante una sessione SMTP, vericano attraverso una query inversa che il server mittente sia eettivamente chi dichiara di essere e non uno spammer. Da un punto di vista pratico basterebbe registrare i record PTR solo per i server di posta, ma la discussione rimane comunque aperta nella comunit`. a Gli ISP per IPv4 solitamente generano in modo automatico i record DNS per tutti gli indirizzi che ricevono dal Regional Internet Registry (RIR), ma dato lelevato numero di indirizzi presenti gi` in un prex da 64 bit, che a

Capitolo 2. Servizi base

30

dovrebbero assegnare ad ogni cliente, questa strada risulta impercorribile. Unaltra possibilit` ` la generazione dei record PTR al momento stesso della ae query DNS; tuttora non sono noti plugin di BIND per questa funzionalit` e si a tratta comunque di una strategia rischiosa in quanto esporrebbe ad attacchi di tipo Distributed Denial Of Service (DDOS). Se si scegliesse di generare staticamente a priori tutti i record AAAA e PTR ` mandatorio luso di un server DHCP per assegnare indirizzi in un e intervallo ristretto. Per la generazione dei record si pu` utilizzare lo script o ruby sviluppato durante il lavoro di tesi e disponibile in appendice B.3.

2.3

Confronto

Bisogna scegliere quale meccanismo di autocongurazione utilizzare per la rete, il metodo stateless ` molto comodo per le reti di piccole dimensioni ma e non lascia alcun controllo sugli indirizzi allamministratore della rete e non permette la congurazione automatica degli indirizzi dei server DNS. Pu` o essere considerata la congurazione ideale per una LAN che gi` dispone di a un DNS congurato per IPv4. In alternativa il DHCP introduce una maggiore complessit` ma ore un a controllo pi` ne sulle congurazioni. Inoltre il DHCP permette di assegnare u solo una porzione di tutti gli indirizzi disponibili in un prex permettendo la generazione dei record di reverse DNS. Bisogna per` considerare il carico o di tutte le richieste dei client inviate verso un unico nodo centrale. Una scelta sensata pu` essere quella di distribuire pi` server DHCP nella propria o u infrastruttura oppure di utilizzare la congurazione stateless supportata dal DHCP per la congurazione del DNS. Bisogna inoltre fare i conti con la scarsa diusione dei client DHCP nei

Capitolo 2. Servizi base

31

principali sistemi operativi a dispetto della congurazione stateless, che ` e supportata da tutti. Ovviamente non esiste una soluzione migliore delle altre, bisogna valutarle sulla base delle proprie esigenze.

Capitolo 3 Infrastruttura
In questo capitolo analizzeremo il protocollo di routing OSPF e come congurare linfrastruttura di rete in modalit` dual-stack. Gli apparati presi in cona siderazione in questa trattazione sono Cisco Catalyst 3750, Cisco Adaptive Security Appliance (ASA) e macchine con sistema operativo GNU/Linux. Per introdurre la congurazione degli apparati utilizzeremo come infrastruttura di riferimento quella riprodotta in gura 3.1. I router R1, R2, R3 e R4 sono tutti dei Cisco Catalyst 3750 mentre il server Talos ` uninstallazioe ne della distribuzione GNU/Linux Debian versione Lenny. Utilizzeremo per questo esempio il prex 2001:db8:cafe::/48. Consideriamo di avere linfrastruttura funzionante in IPv4 e che i client dietro R3 abbiano indirizzamento pubblico, mentre Talos esegue un NAT per la sua sottorete. Non discuteremo le congurazioni relative ad IPv4, ma solo come aggiungere connettivit` a IPv6 in modalit` dual-stack utilizzando una congurazione statefull fornita a dal server DHCPv6. La lista degli indirizzi assegnati ai nodi ` riportata in e tabella 3.1.

Capitolo 3. Infrastruttura

33

Nodo ASA

Indirizzo 2001:db8:beef:abcd::17/127 2001:db8:cafe:ffff::0/127 2001:db8:cafe:1::1/64

Interfaccia outside (Ethernet0/0) inside (Ethernet0/1) GigabitEthernet1/0/1 GigabitEthernet1/0/2 GigabitEthernet1/0/3 GigabitEthernet1/0/1 GigabitEthernet1/0/2 GigabitEthernet1/0/3 GigabitEthernet1/0/1 GigabitEthernet1/0/2 GigabitEthernet1/0/1 GigabitEthernet1/0/2 eth0 eth0 eth1

R1

2001:db8:cafe:ffff::2/127 2001:db8:cafe:ffff::1/127 2001:db8:cafe:ffff::3/127

R2

2001:db8:cafe:ffff::4/127 2001:db8:cafe:ffff::6/127

R3

2001:db8:cafe:c1::1/64 2001:db8:cafe:ffff::5/127

R4 DHCPv6 Talos

2001:db8:cafe:ffff::7/127 2001:db8:cafe:c2::1/64 2001:db8:cafe:1::a 2001:db8:cafe:c2::27/64 2001:db8:cafe:c3::1/64

Tabella 3.1: Indirizzi dei nodi della rete di riferimento per gli esempi

Capitolo 3. Infrastruttura

34

Global Routing Prefix (GRP) = 2001:db8:cafe::/48

Internet

ASA

GRP:1::/64

R1 R2 DHCPv6

R4 GRP:c2::/64 Talos

R3

C1

C3 C4

C2

GRP:c1::/64

GRP:c3::/64

C5

Figura 3.1: Rete di riferimento per gli esempi

3.1

Open Shortest Path First (OSPFv3)

Bench Open Shortest Path First (OSPF) non sia lunico algoritmo di routing e Interior Gateway Protocol (IGP) ` stato subito preso in considerazione per e il lavoro di questa tesi per il suo supporto fornito dagli apparati Cisco e per la sua interoperabilit` fra implementazioni di vendor dierenti. a OSPF esiste anche in versione IPv4 (OSPFv2) ma si tratta di unaltro processo da eseguire separatamente a quello relativo a IPv6 (OSPFv3) che ` denito dallRFC2740[?]. Purtroppo questo RFC si concentra molto sulle e dierenze rispetto a OSPFv2 rendendolo di dicile lettura ma ` possibile e

Capitolo 3. Infrastruttura

35

Listato 3.1: Tabella di routing IPv6 Codes : C Connected , L Local , S S t a t i c B BGP, R RIP , D EIGRP, EX EIGRP e x t e r n a l O OSPF I n t r a , OI OSPF I n t e r , OE1 OSPF e x t 1 OE2 OSPF e x t 2 OE2 : : / 0 [ 1 1 0 / 1 ] , t a g 1 v i a FE80 : : 2 0 F : 2 4FF :FECF : CF42 , G i g a b i t E t h e r n e t 1 /0/2 OE2 2 0 0 1 : 7 6 0 : 2 C05 : 1 : : / 6 4 [ 1 1 0 / 2 0 ] v i a FE80 : : 2 2 3 : 5 DFF: FE15 : FC41 , G i g a b i t E t h e r n e t 1 /0/5 L 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 7 / 1 2 8 [ 0 / 0 ] via GigabitEthernet1 /0/2 , r e c e i v e C 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 8 / 1 2 7 [ 0 / 0 ] via GigabitEthernet1 /0/5 , d i r e c t l y connected L 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 9 / 1 2 8 [ 0 / 0 ] via GigabitEthernet1 /0/5 , r e c e i v e C 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 1 0 / 1 2 7 [ 0 / 0 ] via GigabitEthernet1 /0/12 , d i r e c t l y connected L 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 1 1 / 1 2 8 [ 0 / 0 ] via GigabitEthernet1 /0/12 , r e c e i v e O 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 1 2 / 1 2 7 [ 1 1 0 / 2 ] v i a FE80 : : 2 2 3 : 5 DFF: FE15 : FC41 , G i g a b i t E t h e r n e t 1 /0/5 O 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 1 4 / 1 2 7 [ 1 1 0 / 3 ] v i a FE80 : : 2 2 3 : 5 DFF: FE15 : FC41 , G i g a b i t E t h e r n e t 1 /0/5 OE2 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 1 6 / 1 2 7 [ 1 1 0 / 2 0 ] v i a FE80 : : 2 2 3 : 5 DFF: FE15 : FC41 , G i g a b i t E t h e r n e t 1 /0/5 L FF00 : : / 8 [ 0 / 0 ] v i a Null0 , r e c e i v e

Capitolo 3. Infrastruttura

36

trovare unottima analisi della versione IPv6 nel libro IPv6 Essentials[?] con la spiegazione dellalgoritmo di routing e del protocollo. Il routing funziona esattamente come in IPv4, ogni apparato di livello 3 o superiore dispone di una tabella (vedi listato 3.1 per quella di un Catalyst) che utilizza per decidere su quale interfaccia instradare un pacchetto, anche in questo caso viene utilizzato il criterio di massima lunghezza del prex per decidere su quale link inoltrarlo. In assenza di una route specica ` presente e una route di default indicata dal prex ::/0. OSPF richiede la presenza di un indirizzo link-local congurato sullinterfaccia per poter funzionare e questo indirizzo viene usato come sorgente dei pacchetti di routing. Una dierenza importante rispetto a OSPFv2 ` che e nella nuova versione il processo ` in esecuzione sul link e non sulla rete. e Ogni volta che in OSPFv2 si utilizza il termine rete o sottorete va sostituito con link. I due estremi del link comunicano usando gli indirizzi link-local ed il prex annunciato viene inserito nel payload del pacchetto di routing perch uninterfaccia potrebbe avere indirizzi multipli su reti dierenti non e necessariamente in comune con il router dellaltro capo del link.

3.1.1

Le aree OSPF

Il routing OSPF pu` essere diviso in aree, si tratta di una suddivisione dei o router di un AS in gruppi logici non sovrapposti le cui informazioni di routing possono essere calcolate internamente e distribuite alle altre aree gi` compua tate. Lutilizzo delle aree ` facoltativo, ma larea di backbone (area 0) deve e essere sempre presente. Questa area ` lunica che interconnette tutte le aree e di un AS. Deniamo ora alcune tipologie di router aiutandoci con la gura 3.2.

Capitolo 3. Infrastruttura

37

Autonomous System 2

ASBR

ASBR Area 0 (backbone)

Autonomous System 1

Area 1

BR

ABR ABR Area 2

IR

IR

IR

Figura 3.2: Aree OSPF e tipologie di router

Autonomous System Boundary Router (ASBR) (router di frontiera) ` un router connesso a pi` di un AS, scambia informazioni di routing e u anche con protocolli non-IGP. Area Border Router (ABR) (router di bordo area) ` un router che cone nette al backbone almeno unaltra area. Backbone Router (BR) (router di backbone) ` un router con almeno e uninterfaccia nellarea di backbone. Non ` necessario che interconnetta e aree diverse.

Capitolo 3. Infrastruttura

38

Internal Router (IR) (router interno) ` un router con tutte le interfacce e sulla stessa area.

3.2

Cisco Catalyst 3750

Per semplicit` consideriamo le interfacce dei Catalyst numerate a partire dal a lato superiore in senso orario. Quindi R2 sar` collegato a R1 con lintera faccia GigabitEthernet1/0/1, a R3 con GigabitEthernet1/0/2 ed a R4 con GigabitEthernet1/0/3. Dobbiamo dedicare un prex agli indirizzi dei collegamenti punto-punto dei router, scegliamo 2001:db8:cafe:ffff::/64 e lo frammentiamo in prex da 127 bit contenenti ognuno due indirizzi. Prima di procedere con la congurazione dei router ` necessario aggiornarli ad una versione di IOS che e supporti IPv6[?], fatto questo bisogna attivare la modalit` dual-stack con i a seguenti comandi.
Listato 3.2: Attivare la modalit` dual-stack su un Cisco Catalyst 3750 a enable configure terminal sdm p r e f e r dualipv4andi p v 6 d e f a u l t exit

Salviamo la congurazione con wr mem, dopodich ` necessario riavviare il e e router. A questo punto ` possibile abilitare il routing IPv6 e
Listato 3.3: Attivare il routing IPv6 su un Cisco Catalyst 3750 enable configure terminal i p v 6 u n i c a s t r o u t i n g exit

Capitolo 3. Infrastruttura

39

e possiamo quindi congurare le interfacce.


Listato 3.4: Assegnare un indirizzo IPv6 su un Cisco Catalyst 3750 enable configure terminal i n t e r f a c e G i g a b i t E t h e r n e t 1/0/12 no s w i t c h p o r t i p v 6 a d d r e s s 2 0 0 1 : db8 : c a f e : f f f f : : / 1 2 7 exit exit

Vediamo ora le congurazioni da adottare per i Catalyst della nostra rete di esempio partendo da R1.
1 2 3 4 5 6 7 enable configure terminal i n t e r f a c e G i g a b i t E t h e r n e t 1/0/1 d e s c r i p t i o n Rete d e i s e r v e r i p v 6 nd p r e f i x d e f a u l t noa d v e r t i s e i p v 6 a d d r e s s 2 0 0 1 : db8 : c a f e : 1 : : 1 / 6 4 exit

Linterfaccia GigabitEthernet 1/0/1 ` quella che si trova sul link con il server e DHCP dove scegliamo di utilizzare una congurazione statica impostata su ogni singola macchina, listruzione ipv6 nd prefix default no-advertise indica che non vogliamo che sia fatto advertisement del prex, se invertissimo questa riga con la successiva ci ritroveremmo tutti i nodi collegati sullinterfaccia con un indirizzo IPv6 autogenerato con il metodo stateless (vedi 2.1.2). Le istruzioni infatti sono eseguite nel momento stesso in cui viene premuto il tasto invio, quindi il router, ricevendo un indirizzo IPv6, adotta il comporta-

Capitolo 3. Infrastruttura

40

mento predenito, che prevede di fare advertisement del proprio prex, no a quando non riceve listruzione di non farlo.
8 9 10 11 12 13 i n t e r f a c e G i g a b i t E t h e r n e t 1/0/2 d e s c r i p t i o n Puntopunto R2 i p v 6 nd p r e f i x d e f a u l t noa d v e r t i s e i p v 6 a d d r e s s 2 0 0 1 : db8 : c a f e : f f f f : : 2 / 1 2 7 ipv6 ospf 1 area 0 exit

Linterfaccia GigabitEthernet 1/0/2 ` un link punto-punto con R2, il prex e ha una lunghezza di 127 bit, quindi contiene esattamente due indirizzi. Inoltre linterfaccia fa parte dellarea di backbone OSPF (area 0) ed il processo che gestisce il routing ` il numero 1. e
14 15 16 17 18 i n t e r f a c e G i g a b i t E t h e r n e t 1/0/3 d e s c r i p t i o n Puntopunto ASA i p v 6 nd p r e f i x d e f a u l t noa d v e r t i s e i p v 6 a d d r e s s 2 0 0 1 : db8 : c a f e : f f f f : : 1 / 1 2 7 exit

Linterfaccia GigabitEthernet 1/0/3 ` un link punto-punto con il rewall e Cisco ASA. Gli ASA non supportano OSPF quindi ` necessario introdurre e delle route statiche e dire ad OSPF come gestirle.
19 20 21 22 23 24 25 ipv6 router ospf 1 l o g a d j a c e n c y c h a n g e s d e f a u l t i n f o r m a t i o n o r i g i n a t e always r e d i s t r i b u t e connected i p v 6 r o u t e 2 0 0 1 : db8 : c a f e : : / 4 8 N u l l 0 i p v 6 r o u t e : : / 0 2 0 0 1 : db8 : c a f e : f f f f : :

Capitolo 3. Infrastruttura

41

26 27 28

redistribute static exit exit

La riga 19 dichiara il prex assegnato al site, la riga 20 introduce la route di default verso lASA, che ha indirizzo 2001:db8:cafe:ffff::0. Dalla riga 22 alla 27 deniamo la congurazione per il processo OSPF numero 1, dicendogli di propagare la route di default (default-information originate always), le reti direttamente connesse come per esempio il prex 2001:db8:cafe:1::/64 (redistribute connected) e le route impostate staticamente (redistribute static). Vediamo ora la congurazione del router R2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 enable configure terminal i n t e r f a c e G i g a b i t E t h e r n e t 1/0/1 d e s c r i p t i o n Puntopunto R1 i p v 6 nd p r e f i x d e f a u l t noa d v e r t i s e i p v 6 a d d r e s s 2 0 0 1 : db8 : c a f e : f f f f : : 3 / 1 2 7 ipv6 ospf 1 area 0 exit i n t e r f a c e G i g a b i t E t h e r n e t 1/0/2 d e s c r i p t i o n Puntopunto R3 i p v 6 nd p r e f i x d e f a u l t noa d v e r t i s e i p v 6 a d d r e s s 2 0 0 1 : db8 : c a f e : f f f f : : 4 / 1 2 7 ipv6 ospf 1 area 0 exit i n t e r f a c e G i g a b i t E t h e r n e t 1/0/3 d e s c r i p t i o n Puntopunto R4 i p v 6 nd p r e f i x d e f a u l t noa d v e r t i s e

Capitolo 3. Infrastruttura

42

18 19 20 21

i p v 6 a d d r e s s 2 0 0 1 : db8 : c a f e : f f f f : : 6 / 1 2 7 ipv6 ospf 1 area 0 exit exit

R2 non ha niente di nuovo nella sua congurazione. Vediamo ora R3, che ha una rete di client congurati con il server DHCPv6 dietro la sua interfaccia GigabitEthernet 1/0/1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 enable configure terminal i n t e r f a c e G i g a b i t E t h e r n e t 1/0/1 d e s c r i p t i o n Rete c l i e n t i p v 6 nd p r e f i x d e f a u l t noa d v e r t i s e i p v 6 a d d r e s s 2 0 0 1 : db8 : c a f e : c1 : : 1 / 6 4 i p v 6 nd managedc o n f i g f l a g i p v 6 dhcp r e l a y d e s t i n a t i o n 2 0 0 1 : db8 : c a f e : 1 : : a exit i n t e r f a c e G i g a b i t E t h e r n e t 1/0/2 d e s c r i p t i o n Puntopunto R2 i p v 6 nd p r e f i x d e f a u l t noa d v e r t i s e i p v 6 a d d r e s s 2 0 0 1 : db8 : c a f e : f f f f : : 5 / 1 2 7 ipv6 ospf 1 area 0 exit ipv6 router ospf 1 l o g a d j a c e n c y c h a n g e s r e d i s t r i b u t e connected exit exit

Capitolo 3. Infrastruttura

43

Le novit` sono sullinterfaccia sul link dei client che ha il prex a 2001:db8:cafe:c1::/64. Dobbiamo avvisare i client che ` presente un server e DHCP per ottenere una congurazione statefull (ipv6 nd managed-config-flag) e attivare un processo relay-agent per permettere alle richieste DHCPv6 di giungere no al server (ipv6 dhcp relay destination 2001:db8:cafe:1::a). Vediamo ora il router R4, in questo caso abbiamo una rete di cui fa parte la macchina Talos, ma questa esegue il NAT per una rete di client IPv4; con la migrazione a IPv6 dobbiamo fornire anche questa rete di indirizzi IPv6 pubblici.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 enable configure terminal i n t e r f a c e G i g a b i t E t h e r n e t 1/0/1 d e s c r i p t i o n puntopunto R2 i p v 6 nd p r e f i x d e f a u l t noa d v e r t i s e i p v 6 a d d r e s s 2 0 0 1 : db8 : c a f e : f f f f : : 7 / 1 2 7 ipv6 ospf 1 area 0 exit i n t e r f a c e G i g a b i t E t h e r n e t 1/0/2 d e s c r i p t i o n Rete c l i e n t i p v 6 nd p r e f i x d e f a u l t noa d v e r t i s e i p v 6 a d d r e s s 2 0 0 1 : db8 : c a f e : c2 : : 1 / 6 4 i p v 6 nd managedc o n f i g f l a g i p v 6 dhcp r e l a y d e s t i n a t i o n 2 0 0 1 : db8 : c a f e : 1 : : a exit

Linterfaccia GigabitEthernet 1/0/2 ` una rete client congurata per usae re il server DHCP. Dobbiamo inoltre avvisare tutti i router che il prex 2001:db8:cafe:c3::/64, assegnato alla rete privata di Talos, ` raggiungibile e attraverso di lui.

Capitolo 3. Infrastruttura

44

16 17 18 19 20 21 22 23

i p v 6 r o u t e 2 0 0 1 : db8 : c a f e : c3 : : / 6 4 2 0 0 1 : db8 : c a f e : c2 : : 2 7

ipv6 router ospf 1 l o g a d j a c e n c y c h a n g e s r e d i s t r i b u t e connected redistribute static exit exit

Cos` facendo R4 pubblicher` attraverso OSPF la route per il prex a 2001:db8:cafe:c3::/64.

3.2.1

Il router ID OSPF

Ogni router partecipante ad OSPF ha un identicativo univoco, i Catalyst utilizzano di default lindirizzo IPv4 assegnato allinterfaccia di loopback. Qualora questo non sia presente ` possibile specicarne uno con le seguenti e istruzioni.
enable ipv6 router ospf 1 r o u t e r i d 0 . 0 . 0 . 2 exit exit

3.3

Router Linux

La macchina Talos (2001:db8:cafe:c2::27) ` anche il router del prex e 2001:db8:cafe:c3::/64, per la nostra analisi questa macchina non ` di e

Capitolo 3. Infrastruttura

45

propriet` dellamministratore della rete e quindi non ` autorizzata a para e tecipare al routing OSPF. Come abbiamo detto si tratta di una macchina con installato la distribuzione Debian Lenny del sistema operativo GNU/Linux. I pacchetti software che andremo ad analizzare sono radvd per il Router Advertisement, wide-dhcpv6-relay per il relay-agent DHCP e ip6tables come rewall. Consideriamo di avere linterfaccia eth0 con associato lindirizzo 2001:db8:cafe:c2::27, mentre il link dei client si trova sullinterfaccia eth1. Prima di tutto ` necessario che il modulo ipv6 venga caricato al momento e del boot, quindi aggiungiamolo al le /etc/modules
echo i p v 6 >> / e t c / modules

poi dobbiamo congurare staticamente le interfacce con gli indirizzi IPv6, aggiungiamo in fondo al le /etc/network/interfaces le seguenti righe
i f a c e e t h 0 inet6 s t a t i c address 2 0 0 1 : db8 : c a f e : c2 : : 2 7 netmask 64 gateway 2 0 0 1 : db8 : c a f e : c2 : : 1

i f a c e e t h 1 inet6 s t a t i c address 2 0 0 1 : db8 : c a f e : c3 : : 1 netmask 64

ed assicuriamoci che nel le sia presente listruzione auto lo eth0 eth1.

3.3.1

Router Advertisement Daemon (radvd)

Router Advertisement Daemon (radvd) ` un demone unix che si occupa di e gestire i pacchetti di Router Advertisement IPv6, nel nostro caso sar` in esea

Capitolo 3. Infrastruttura

46

cuzione sullinterfaccia eth1 per noticare ai client le informazioni sul prex 2001:db8:cafe:c3::/64. Prima di congurare radvd dobbiamo abilitare il forwarding dei pacchetti IPv6 fra le interfacce di rete.
#cambia l a c o n f i g u r a z i o n e a t t u a l e ( f i n o a l r e b o o t ) s y s c t l w n e t . i p v 6 . c o n f . a l l . f o r w a r d i n g=1

Assicuriamoci che la congurazione venga mantenuta anche dopo il reboot aggiungendo la riga net.ipv6.conf.all.forwarding=1 nel le /etc/sysctl.conf, o modicandola se gi` presente. a Vediamo adesso come congurare radvd seguendo il listato 3.5. Sono presenti tutti i ag introdotti nel capitolo 2.1.2; il router ` stato impostato per e fare advertisement del prex 2001:db8:cafe:c3::/64 (riga 12) disabilitando la congurazione autonoma dei client (riga 16) ma comunicando la presenza di un server DHCP per ottenere lindirizzo IP (riga 8). Per ottenere una congurazione stateless dobbiamo mettere a on la riga 16, a off la 8 e possiamo togliere il commento dalle righe 18-19 per specicare il valid lifetime ed il preferred lifetime; per aggiungere la congurazione del DNS attraverso il DHCP dobbiamo mettere a on la riga 10.

3.3.2

wide-dhcpv6-relay

Come abbiamo gi` visto nel capitolo 2.1.3 per attivare il relay-agent basta a eseguire il comando
d h c p 6 r e l a y s 2 0 0 1 : db8 : c a f e : 1 : : a r e t h 0 e t h 1

Purtroppo lo script di avvio di Debian Lenny non fornisce la possibilit` di a specicare queste opzioni quindi dobbiamo eettuare alcune modiche.

Capitolo 3. Infrastruttura

47

Listato 3.5: File di congurazione /etc/radvd.conf 1 interface eth1

2 { 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 }; }; prefix 2 0 0 1 : db8 : c a f e : c3 : : / 6 4 { AdvOnLink on ; #autonomous a d d r e s s c o n f i g u r a t i o n f l a g AdvAutonomous o f f ; #l i f e t i m e d e g l i i n d i r i z z i i n Autonomous #A d v V a l i d L i f e t i m e 3 6 0 0 ; #i n s e c o n d i #A d v P r e f e r r e d L i f e t i m e 2 8 0 0 ; #i n s e c o n d i #managed a d d r e s s c o n f i g u r a t i o n f l a g AdvManagedFlag on ; #o t h e r s t a t e f u l l c o n f i g u r a t i o n f l a g AdvOtherConfigFlag o f f ; AdvSendAdvert on ; MinRtrAdvInterval 3 0 ; MaxRtrAdvInterval 1 0 0 ;

Capitolo 3. Infrastruttura

48

Assicuriamoci di denire nel le /etc/default/wide-dhcpv6-relay le variabili OPTIONS e INTERFACES.


OPTIONS=s 2 0 0 1 : db8 : c a f e : 1 : : a r e t h 0 INTERFACES= e t h 1

A questo punto modichiamo il le /etc/init.d/wide-dhcpv6-relay sostituendo listruzione


s t a r t stopdaemon s t a r t q u i e t p i d f i l e $DHCP6RPID \ exec $DHCP6RBIN $INTERFACES

che dovrebbero trovarsi approssimativamente alle righe 55-56 con


s t a r t stopdaemon s t a r t q u i e t p i d f i l e $DHCP6RPID \ exec $DHCP6RBIN $OPTIONS $INTERFACES

3.3.3

Firewall - ip6tables

Con IPv6 anche la reti attualmente a indirizzamento privato avranno un indirizzo global unicast. Pu` essere dunque una buona strategia quella di fornire o una protezione basilare alla propria rete attraverso il suo router. Vogliamo ottenere una situazione in cui gli host della rete non possano ricevere connessioni in ingresso, esattamente come accade per IPv4, allo stesso tempo vogliamo anche difendere il router esponendo solo i servizi necessari. Come la versione per IPv4, ip6tables basa il suo funzionamento su delle catene di regole il cui attraversamento ` illustrato in gura 3.3. Un pacchete to in ingresso da uninterfaccia attraverser` la catena di forward se non ` a e destinato al rewall, altrimenti passer` per la catena di input e raggiunger` a a lapplicativo destinatario. I pacchetti generati dallhost invece attraversano la catena di output prima di uscire. Tutte le catene hanno una lista di regole,

Capitolo 3. Infrastruttura

49

Figura 3.3: Catene di ip6tables e ordine di attraversamento

eventualmente vuota, con una azione associata che pu` essere accept, accetta o il pacchetto, drop, scarta il pacchetto senza notica al mittente e reject, riuta il pacchetto ed avvisa il mittente. Quando una regola viene applicata si interrompe il proseguimento della catena, qualora nessuna regola contempli il pacchetto in transito si applica la regola predenita della catena. Quindi il traco da e verso la rete dei client passer` per la catena di forward mentre a il traco per Talos passer` dalla catena di input. Analizziamo ora lo script a di congurazione per ip6tables-restore.
Listato 3.6: Congurazione ip6tables-restore per un comportamento NAT-like 1 filter 2 3 # permetti tutto i l 4 5 :OUTPUT ACCEPT [ 0 : 0 ] t r a f f i c o in uscita

Capitolo 3. Infrastruttura

50

6 # p a c c h e t t i i n t r a n s i t o f r a l e due i n t e r f a c c e 7 :FORWARD ACCEPT [ 0 : 0 ]

8 # non i n t e r r o m p e r e c o n n e s s i o n i s t a b i l i t e 9 A FORWARD m s t a t e s t a t e ESTABLISHED,RELATED j ACCEPT 10 # a u t o r i z z a ICMPv6 11 A FORWARD p icmpv 6 j ACCEPT 12 # a u t o r i z z a t u t t i g l i ACK 13 A FORWARD p t c p m t c p tcpf l a g s ACK ACK j ACCEPT 14 # a u t o r i z z a t u t t e l e nuove c o n n e s s i o n i p r o v e n i e n t i d a i client 15 A FORWARD i e t h 1 m s t a t e s t a t e NEW j ACCEPT 16 # a u t o r i z z a i l t r a f f i c o di traceroute 6

17 A FORWARD p udp d p o r t 3 3 4 3 4 : 3 3 5 2 3 m s t a t e s t a t e NEW j ACCEPT 18 # i l r e s t o no 19 A FORWARD j REJECT r e j e c t with icmp6admp r o h i b i t e d 20 21 # p a c c h e t t i p e r q u e s t a macchina 22 : INPUT ACCEPT [ 0 : 0 ]

23 # t r a f f i c o l o c a l e 24 A INPUT i l o j ACCEPT 25 # non i n t e r r o m p e r e c o n n e s s i o n i s t a b i l i t e 26 A INPUT m s t a t e s t a t e ESTABLISHED,RELATED j ACCEPT 27 # ICMPv6 28 A INPUT p icmpv 6 j ACCEPT 29 # Web s e r v e r ( h t t p e h t t p s ) 30 A INPUT p t c p m t c p d p o r t 80 syn m s t a t e s t a t e NEW j ACCEPT

Capitolo 3. Infrastruttura

51

31 A INPUT p t c p m t c p d p o r t 443 syn m s t a t e s t a t e NEW j ACCEPT 32 # SSH s e r v e r 33 A INPUT p t c p m t c p d p o r t 22 syn m s t a t e s t a t e NEW j ACCEPT 34 #dhcpv 6 r e l a y a g e n t 35 A INPUT m s t a t e s t a t e NEW m udp p udp d p o r t 547 j ACCEPT 36 # t u t t o i l r e s t o no 37 A INPUT j REJECT r e j e c t with icmp6admp r o h i b i t e d 38 COMMIT

Non volendo fare restrizioni sul traco in uscita da Talos, alla riga 4 applichiamo una regola di default di tipo accept per la catena di output. Per quanto riguarda la rete dei client alla riga 9 autorizziamo il transito di tutti i pacchetti relativi a connessioni stabilite dallinterno, alle righe 11 e 17 autorizziamo il traco ICMPv6 e quello generato da traceroute6 che risultano indispensabili per il corretto funzionamento e il debug della rete, poi alla riga 15 autorizziamo le nuove connessioni originate dallinterno e con la riga 19 riutiamo ogni pacchetto che non sia fra quelli precedentemente menzionati, con una risposta icmp6-adm-prohibited. Con la catena di input difendiamo il router. Autorizziamo tutte le connessioni per linterfaccia di loopback con la riga 24, tutti i pacchetti relativi a connessioni gi` stabilite con la riga 26 e tutti i pacchetti ICMPv6 con la riga a 28. Apriamo poi le porte per i servizi web e ssh dalla riga 30 alla 33 ed inne con la riga 35, autorizziamo i pacchetti UDP sulla porta 547 per permette il transito dei pacchet DHCPv6 da e verso il relay-agent e i client. Tutto il resto viene proibito con la riga 37.

Capitolo 3. Infrastruttura

52

Se non avessimo voluto porre restrizioni sul traco in ingresso per la rete dei client sarebbe bastato utilizzare solo la policy di default per la catena di forward, permettendo cos` il transito di tutti i pacchetti. Script di avvio Per poter utilizzare il le di congurazione riportato nel listato 3.6 si fornisce, in appendice B.4, uno script che ` in grado di caricare queste istruzioni, e purch si trovino nel le /etc/my6firewall.conf. e

3.4

Cisco Adaptive Security Appliance (ASA)

Uno dei rewall pi` diusi nelle infrastrutture di medie-grandi dimensioni ` u e sicuramente il Cisco Adaptive Security Appliance (ASA), qualora ne facessimo uso allinterno della nostra infrastruttura ` bene ricordare che non sono e in grado di partecipare il routing OSPF, ma che bisogna utilizzare delle route statiche. Riferendoci sempre alla nostra infrastruttura di test consideriamo che lindirizzo assegnatoci dal nostro ISP sia 2001:db8:beef:abcd::17/127, ovvero una punto-punto con 2001:db8:beef:abcd::16. Analizziamo il listato 3.7 per vedere come congurare lASA, come sempre non riportiamo alcuna informazione a proposito degli indirizzi IPv4 che assumiamo essere gi` a congurati. Alla riga 2 inizia la denizione dellinterfaccia outside su cui assegniamo lindirizzo della punto-punto fornitoci dal nostro ISP. Alla riga 8 inizia la congurazione dellinterfaccia inside che ` la punto-punto verso il e router R1. Alle righe 14 e 15 autorizziamo il transito dei pacchetti ICMPv6, dopodich deniamo la route verso la nostra rete interna alla riga 16 e la e route di default verso il nostro ISP alla riga 17. Le rimanenti istruzioni de-

Capitolo 3. Infrastruttura

53

Listato 3.7: Esempio congurazione ASA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 enable i n t e r f a c e E t h e r n e t 0 /0 nameif o u t s i d e s e c u r i t y l e v e l 0 i p v 6 a d d r e s s 2 0 0 1 : db8 : b e e f : abcd : : 1 7 / 1 2 7 i p v 6 nd p r e f i x d e f a u l t noa d v e r t i s e exit i n t e r f a c e E t h e r n e t 0 /1 nameif i n s i d e s e c u r i t y l e v e l 100 i p v 6 a d d r e s s 2 0 0 1 : db8 : c a f e : f f f f : : 0 / 1 2 7 i p v 6 nd p r e f i x d e f a u l t noa d v e r t i s e exit i p v 6 icmp p e r m i t any o u t s i d e i p v 6 icmp p e r m i t any i n s i d e i p v 6 r o u t e i n s i d e 2 0 0 1 : db8 : c a f e : : / 4 8 2 0 0 1 : db8 : c a f e : f f f f : : 1 17 18 19 20 21 22 i p v 6 a c c e s s l i s t i p v 6 o u t s i d e i n p e r m i t icmp6 any any i p v 6 a c c e s s l i s t i p v 6 o u t s i d e i n p e r m i t i p any any a c c e s s group i p v 6 o u t s i d e i n i n i n t e r f a c e o u t s i d e exit i p v 6 r o u t e o u t s i d e : : / 0 2 0 0 1 : db8 : b e e f : abcd : : 1 6

Capitolo 3. Infrastruttura

54

niscono una access list che autorizza ogni tipo di traco IPv6 e la applicano al traco proveniente dallinterfaccia outside. Ovviamente la congurazione dellinterfaccia outside pu` variare a secono da della policy del nostro ISP.

3.4.1

Failover

Purtroppo Cisco non supporta il failover per IPv6. In pi` la situazione ` u e aggravata da un bug del rmware che consente allinterfaccia dellunit` in a standby di fare advertisement del proprio prex, ma essendo in standby lASA scarter` silenziosamente tutti i pacchetti in ingresso. Si trovano dei a workaround in rete, ma in alcuni casi prevedono la necessit` di agire manuala mente dopo il vericarsi di un failover e comunque il supporto statefull non funziona obbligando tutte le connessioni ad andare in timeout e a ristabilirsi attraverso il nuovo ASA. Cisco stessa consiglia di utilizzare un altro gateway per il traco IPv6 in presenza di una coppia di ASA in failover. Qualora questo non sia possibile, come soluzione temporanea si potrebbe pensare di utilizzare un tunnel IPv6-in-IPv4 per superare i rewall.

3.5

Il problema dei due protocolli

Abbiamo detto che IPv6 rimuove la frammentazione dai pacchetti IP (vedi 1.4), ma cosa accade quando lMTU di un troncone della rete non ` sue ciente a far transitare un pacchetto? Il router che non ` in grado di eseguire e linstradamento provvede ad inviare al mittente un messaggio ICMPv6 per avvisarlo che il pacchetto inviato ` troppo grande, cos` che il mittente possa e ridurne la dimensione e procedere ad un nuovo invio.

Capitolo 3. Infrastruttura

55

` E tutto molto semplice, ma cosa accadrebbe se durante il tragitto ci fosse un rewall mal congurato che ltrasse i pacchetti ICMPv6? O peggio anche un tunnel IPv4 che aumenterebbe la dimensione del pacchetto aggiungendoci un ulteriore header IPv4? La risposta a queste domande ce la ore Geo Huston nellarticolo A Tale of Two Protocols: IPv4, IPv6, MTUs and Fragmentation[?]. In pratica rischieremmo di non poter usufruire correttamente del servizio. A questo proposito, qualora si incontrino inconvenienti del genere ` opportuno ridurre lMTU della propria interfaccia di rete in modo da e generare pacchetti di dimensione inferiore gi` dal primo invio. LRFC2460[?] a richiede che ogni link IPv6 abbia un MTU minimo di 1280 e che ogni host sia in grado di gestire un pacchetto di almeno 1500 ottetti. Considerando quindi i 40 byte massimi di un header IPv4 per un tunnel IPv6-in-UDP-in-IPv4 ` e una buona strategia per un server impostare un MTU di 1400, che garantisce un buon margine rispetto ad eventuali tunnel, 100 ottetti, ma non degenera le prestazioni in modo sensibile. Un approccio ancora pi` garantista ` quello u e di scegliere il valore minimo 1280, in questo caso le probabilit` di non poter a superare un tunnel IPv4 sono prossime allo zero. Per quanto riguarda i client invece ` possibile mantenere lMTU standard e di 1500 ed in caso di problemi provvedere ad una diminuzione graduale; si tratta sicuramente di un approccio pi` costruttivo rispetto alla disabilitazione u del servizio IPv6.

Capitolo 4 Servizi avanzati


In questo capitolo analizzeremo il funzionamento di alcuni servizi popolari, adesso che la nostra rete ` completamente dual-stack dobbiamo occupare ci di aggiornare i software, o le loro congurazioni, in modo da gestire le connessioni IPv6.

4.1

Secure Shell (SSH)

Secure Shell (SSH) con la congurazione di default ` in ascolto su tutte e le interfacce, nel momento in cui una di queste assume un indirizzo IPv6 ` e possibile collegarsi ad un server SSH anche attraverso il nuovo indirizzo senza alcuna modica ai le di congurazione.

4.2

Web server - Apache

Apache ` in grado di gestire connessioni IPv6 senza alcun problema ed ` gee e neralmente congurato per stare in ascolto su tutte le interfacce, ma qualora non fosse cos` bisogna modicare la direttiva Listen nel le di congurazio

Capitolo 4. Servizi avanzati

57

Listato 4.1: Direttiva Listen di Apache con indirizzo IPv6 # L i s t e n : Allows you t o bind Apache t o s p e c i f i c IP # a d d r e s s e s and/ o r p o r t s , i n a d d i t i o n t o t h e d e f a u l t . # See a l s o t h e <V i r t u a l H o s t > d i r e c t i v e . # Change t h i s t o L i s t e n on s p e c i f i c IP a d d r e s s e s a s # shown below t o p r e v e n t Apache from glomming onto a l l # bound IP a d d r e s s e s ( 0 . 0 . 0 . 0 ) # #L i s t e n 80 #i n a s c o l t o su t u t t e l e i n t e r f a c c e Listen 192.170.2.1:80 L i s t e n [ 2 0 0 1 : db8 : c a f e : c2 : : 2 4 ] : 8 0

Hostname v6cowboys.com ipv6.v6cowboys.com ipv4.v6cowboys.com

Indirizzo 2001:db8:cafe:c2::24 192.170.2.1 2001:db8:cafe:c2::24 192.170.2.1

Tabella 4.1: Record DNS per i virtual host di apache

ne httpd.conf aggiungendo anche lindirizzo IPv6 su cui stare in ascolto. Per specicare un indirizzo IPv6 si utilizza la notazione con le parentesi quadre come si vede nel listato 4.1. Lo stesso discorso vale per i virtual host. Supponiamo di avere impostato sia un record A che uno AAAA per il dominio v6cowboys.com, solo il record A per ipv4.v6cowboys.com e solo quello AAAA per ipv6.v6cowboys.com come riportato in tabella 4.1. Possiamo decidere di mostrare contenuti diversi a seconda che il client utilizzi una connessione IPv4 o IPv6 oppure mostrare esattamente lo stesso sito. Il listato 4.2 denisce due virtual host, uno per ogni versione del protocollo, il listato

Capitolo 4. Servizi avanzati

58

Listato 4.2: Congurazione dei virtual host di Apache (contenuti diversi) <V i r t u a l H o s t 1 9 2 . 1 7 0 . 2 . 1 : 8 0 > ServerName v6cowboys . com S e r v e r A l i a s i p v 4 . v6cowboys . com ServerAdmin admin@v6cowboys . com

DocumentRoot / var /www/ i p v 4

ErrorLog / var / l o g / httpd / i p v 4 e r r o r . l o g LogLevel warn CustomLog / var / l o g / httpd / i p v 4 a c c e s s . l o g combined S e r v e r S i g n a t u r e On </V i r t u a l H o s t >

<V i r t u a l H o s t [ 2 0 0 1 : db8 : c a f e : c2 : : 2 4 ] : 8 0 > ServerName v6cowboys . com S e r v e r A l i a s i p v 6 . v6cowboys . com ServerAdmin admin@v6cowboys . com

DocumentRoot / var /www/ i p v 6

ErrorLog / var / l o g / httpd / i p v 6 e r r o r . l o g LogLevel warn CustomLog / var / l o g / httpd / i p v 6 a c c e s s . l o g combined S e r v e r S i g n a t u r e On </V i r t u a l H o s t >

Capitolo 4. Servizi avanzati

59

Listato 4.3: Congurazione dei virtual host di Apache (stessi contenuti) <V i r t u a l H o s t :80 > ServerName v6cowboys . com S e r v e r A l i a s i p v 6 . v6cowboys . com S e r v e r A l i a s i p v 4 . v6cowboys . com ServerAdmin admin@v6cowboys . com

DocumentRoot / var /www/ s i t e

ErrorLog / var / l o g / httpd / v 6 c o w e r r o r . l o g LogLevel warn CustomLog / var / l o g / httpd / v 6 c o w a c c e s s . l o g combined S e r v e r S i g n a t u r e On </V i r t u a l H o s t >

Capitolo 4. Servizi avanzati

60

4.3 invece ne denisce uno solo.

4.2.1

MD-Pro, Drupal, Plone e considerazioni generali

Nellambito dei test di Apache si ` provato con successo il Content Managee ment System (CMS) MD-Pro[?] che attualmente ` utilizzato su tutti i siti e istituzionali dellUniversit` di Firenze; a seguito della migrazione del server a del Laboratorio di Elaborazione Numerica dei Segnali e Telematica / Laboratorio Reti di Telecomunicazioni (LENST/LaRT) si ` testato anche il e funzionamento dei CMS Drupal e Plone. Questo ci permette di dire che sia PHP che Zope sono gi` pronti per IPv6. a Diverso ` il caso dei tool di congurazione ed analisi di rete webmin e e ntop, che pur funzionando non presentano moduli specici per IPv6 e quindi necessitano di alcune revisioni a livello di codice. Si ritiene che in generale i servizi web siano pronti per IPv6 salvo alcuni casi specici dove si rende necessaria la correzione del software. A questo scopo occorre ricordare che quando si programma un applicativo ` sbagliato e assumere che lindirizzo IP sia un campo a 32 bit o una stringa di massimo 15 caratteri intervallati da punti, ma bisogna tenere conto dellesistenza degli indirizzi IPv6.

Capitolo 5 La rete dellUniversit` degli a Studi di Firenze - Uni


5.1 Il backbone

Il Centro Servizi Informatici e informativi dellAteneo Fiorentino (CSIAF) si occupa di gestire la rete dellUniversit` di Firenze (Uni) il cui backbone ` a e riportato in appendice A.1. Sia per estensione territoriale che per il numero dei client si tratta una rete di tipo geograco. Prima di iniziare il lavoro di tesi linfrastruttura era esclusivamente IPv4 e utilizzava OSPF come protocollo di routing.

5.2

Indirizzamento

Il global routing prex assegnato ad Uni ` 2001:760:2c05::/48 questo ci e permette di allocare 216 prex da 64 bit, ognuno dei quali contenente 264 indirizzi unicast pubblici.

Capitolo 5. La rete dellUniversit` degli Studi di Firenze - Uni a

62

Figura 5.1: Prex Uni

2001:760:2c05 48 bit X identica lanello Y riservato per usi futuri WZ identica la rete

XYWZ 16 bit

Interface ID 64 bit

Tabella 5.1: Valori della cifra X nel prex Uni

0 CSIAF 1 Anello Giallo 2 Anello Blu 3 Anello Rosso

4 Anello Verde 5 Zona morgagni/careggi F riservato per linfrastruttura

Si ` scelto di partizionare lo spazio di indirizzamento secondo lo schema e riportato in gura 5.1. La cifra esadecimale X indica la posizione topologica della rete secondo i valori riportati in tabella 5.1. La cifra Y ` riservata per e usi futuri e per zone con pi` di 256 reti, mentre le cifre WZ sono assegnate in u modo sequenziale rispetto a X. Durante la fase di migrazione sono state assegnati i seguenti prex: 0001 DMZ CSIAF F0FF rete di backbone 1001 rete del DET a S. Marta 1002 rete del LENST/LaRT

Sono inoltre state attivate per un periodo limitato le reti esclusivamente IPv6 D00, D01 e D05.

Capitolo 5. La rete dellUniversit` degli Studi di Firenze - Uni a

63

5.3

I router
GARR

solo IPv6 solo IPv4 dual-stack

GW_GARR

ASA in failover

CSIAF2-EXT GW_SMARTA RETE DET CSIAF1

V6-1

V6-2 DET

LENST

DMZ CSIAF

RETE TEST

RETE LENST

POSHBIT

Figura 5.2: Porzione della rete Uni attualmente dual-stack

Tutti gli apparati di livello tre del backbone sono dei Cisco Catalyst 3750. Il prex 2001:760:2c05:f0ff:/64 ` interamente dedicato ai collegamenti e punto-punto fra i router del backbone. La zona attualmente migrata a IPv6 ` riportata in gura 5.2, le congurazioni degli apparati sono come quelle e introdotte nel capitolo 3.

Capitolo 5. La rete dellUniversit` degli Studi di Firenze - Uni a

64

5.4

ASA in failover

A causa della presenza di due ASA in failover sul link fra la sede CSIAF in via delle Gore ed il router di frontiera collegato con il Consortium Gestione Ampliamento Rete Ricerca (Consortium GARR) a Sesto Fiorentino si ` e deciso di utilizzare un link parallelo solo IPv6 per raggiungere il router di frontiera (vedi gura 5.3).

5.5

Congurazione dei client

Per Uni si ` scelto di usare un server DHCP centrale gestito dallo CSIAF, e anche se i server sono comunque congurati in modo manuale. Probabilmente con laumentare dei nodi dual-stack sar` necessario introdurre alcuni server a DHCP periferici per bilanciare meglio il carico delle richieste.

5.6

Server DNS

Per limplementazione il servizio DNS in Uni si ` scelto di dedicare il doe minio di terzo livello ipv6.unifi.it e di utilizzare il server DNS BIND che supporta IPv6 dalla versione 8.4 in poi. Per cui ci troveremo a denire nel le di zona dei record di questo tipo:
l e n s t 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : 1 0 0 1 : : 2 4

mentre il record per la risoluzione inversa di questo stesso indirizzo sar` a


$ORIGIN 1 . 0 . 0 . 1 . 5 . 0 . c . 2 . 0 . 6 . 7 . 0 . 1 . 0 . 0 . 2 . i p 6 . arpa . 4 . 2 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t . i p v 6 . u n i f i . i t .

Si ` scelto di utilizzare inizialmente un dominio dedicato esclusivamente e agli indirizzi IPv6 per evitare eventuali disagi dovuti a server o applicati-

Capitolo 5. La rete dellUniversit` degli Studi di Firenze - Uni a

65

vi congurati non correttamente. Quando i singoli host saranno testati con i nuovi indirizzi IPv6 si provveder` ad integrare i record AAAA nel dominio a unifi.it.

5.7

Svolgimento del lavoro di tesi

Fino a questo momento si sono esposti esclusivamente i risultati del lavoro di tesi, adesso illustriamo le fasi operative che hanno portato alla migrazione.

5.7.1

Documentazione e pianicazione

La prima fase ` stata di tipo documentale, si sono raccolte tutte le informae zioni sulla rete Uni e si ` cominciato lo studio di IPv6. Sono stati deniti e gli obiettivi della migrazione e ci si ` confrontati con lo sta reti e fonia dello e CSIAF. Alla ne di questa fase ` emersa la necessit` di dedicare un server ai e a servizi di base descritti nel capitolo 2 e di approfondire i meccanismi di autocongurazione con dei test pratici di fattibilit`. E in questa fase che a ` si ` deciso lo schema di indirizzamento della rete. e

5.7.2

Poshbit

Per implementare i servizi base si ` installata la distribuzione GNU/Linux e Fedora 10 su un server dedicato (poshbit.ipv6.unifi.it). Su questa macchina sono stati installati il server DNS BIND ed il server DHCP dhcpv6server. Una volta terminata la congurazione il server ` stato portato nella e server farm e collegato sulla rete IPv4 dei server CSIAF.

Capitolo 5. La rete dellUniversit` degli Studi di Firenze - Uni a

66

5.7.3

Infrastruttura di test

Trattandosi di uninfrastruttura in produzione non ` stato possibile eseguie re i test direttamente sulla rete. A questo scopo si ` costruita una piccola e infrastruttura di test formata da due Cisco Catalyst 3750, poshbit e due client. Con questa congurazione sono state testate le versioni dei rmware Cisco IOS e gli applicativi per i servizi base descritti nel capitolo 2. Si sono provate tutte le modalit` di autocongurazione con i vari sistemi operativi e si a ` testato anche la possibilit` di utilizzare il metodo Dynamic DNS (DDNS)[?] e a che permette di aggiornare i record del DNS nel momento in cui un client si autocongura, ma si ` scelto di abbandonare lidea per le implicazioni sulla e sicurezza del server.

5.7.4

Attivazione della connessione con il GARR

Vericata la fattibilit` della congurazione dual-stack si ` provveduto ad inola e trare al NOC GARR la richiesta di un global routing prex per la rete Uni. Durante lattesa dei tempi tecnici si ` provveduto ad integrare nel backbone e i due Catalyst dellinfrastruttura di test (v6-1 e v6-2) ed a bypassare gli ASA in failover. Con la disponibilit` di connettivit` IPv6 si ` cominciato a a a e congurare alcuni servizi avanzati e a testarli. Alla ne di questa fase la rete Uni IPv6 era quella riportata in gura 5.3.

5.7.5

La prima rete client dual-stack

Terminata con successo la congurazione del server dual-stack si ` passati e alla prima rete client. Si ` attivato IPv6 sul link GW-SMARTADET. Lhost e det.ipv6.unifi.it ` un ASA sulla cui interfaccia inside si ` attivato il e e prex 2001:760:2c05:1001::/64. Questo prex non viene inviato in adver-

Capitolo 5. La rete dellUniversit` degli Studi di Firenze - Uni a

67

GARR

solo IPv6 solo IPv4 dual-stack

GW_GARR

ASA in failover

CSIAF2-EXT GW_SMARTA CSIAF1

V6-1

V6-2

DMZ CSIAF

RETE TEST

POSHBIT

Figura 5.3: Lo stato della rete IPv6 dopo lattivazione del link con il GARR

tisement e lunico altro host congurato in dual-stack su quella rete ` il server e lenst.ipv6.unifi.it che, come Talos nel capitolo 3, ` il router per la sua e rete privata dietro NAT. Alla ne di questa fase la rete interna del LENST/LaRT era in modalit` a dual-stack con congurazione dei client attraverso il server DHCP poshbit, inoltre i servizi web e ssh del server erano raggiungibili anche in IPv6.

Capitolo 5. La rete dellUniversit` degli Studi di Firenze - Uni a

68

5.7.6

Ulteriori studi sugli ASA in failover

Si ` continuato lo studio di una possibile congurazione degli ASA in faie lover per evitare il link di bypass. Purtroppo, anche a causa del bug del rmware, non ` stato possibile trovare una soluzione che valesse la pena di e implementare.

5.7.7

Monitoring della rete

Si ` passati ad una fase di monitoring del traco di rete. I client con Windoe ws Vista erano gli unici che in modo autonomo si erano congurati per lIPv6. Analizzando i log del server DNS ci siamo accorti che le query avvenivano esclusivamente su IPv6 e questo portava a bypassare il dominio interno, con indirizzi IPv4 privati, denito sul server DNS del LENST/LaRT. Per ovviare a questo problema si ` denita una forward zone sul DNS CSIAF per inole trare le richieste interne del dominio in questione al server DNS situato su lenst.ipv6.unifi.it.

5.7.8

Server DNS interno al LENST/LaRT

Considerando la soluzione introdotta al paragrafo 5.7.7 esclusivamente una contromisura temporanea, la congurazione del server DHCP ` stata modie cata per fornire agli host sulla rete del LENST/LaRT come DNS il loro server interno. Tuttavia anche questa ` da considerarsi una soluzione temporanea, e ma spiegheremo questa aermazione nel capitolo 6.

5.7.9

Script di generazione dei record DNS

Avendo scelto di utilizzare un server DHCP con indirizzi assegnati in sequenza ` stato possibile generare automaticamente i record DNS AAAA e PTR e

Capitolo 5. La rete dellUniversit` degli Studi di Firenze - Uni a

69

per gli host. A questo proposito ` stato sviluppato lo script ruby in appendice e B.3.

5.7.10

Script di controllo per il server dhcpv6

Dopo alcuni giorni di utilizzo si sono riscontrati problemi con il server DHCP (dhcpv6.i386 versione 1.0.22-1.fc10). A causa di alcuni errori di programmazione si registravano dei crash dellapplicazione, impedendo cos` ai nuovi client di ottenere un indirizzo. Si ` provato ad aggiornare il server alla vere sione 1.2.0, ma questa presentava problemi con i relay agent impedendo ogni tipo di comunicazione fra i client e il server. Analizzando il comportamento della versione 1.0.22-1.fc10 dopo il riavvio a seguito di un crash, si ` deciso, e come soluzione temporanea, di eseguire ogni 5 minuti uno script di controllo per far ripartire il servizio qualora non fosse pi` in esecuzione (appendice u B.5).

Capitolo 6 Conclusioni
Abbiamo una rete dual-stack IPv6, siamo pronti per la End of the World. Mentre la ne degli indirizzi IPv4 si avvicina pericolosamente alla ne del Mondo secondo il calendario Maya[?], lUniversit` degli Studi di Firenze pu` a o tutto sommato sentirsi tranquilla. Ovviamente ancora c` molto da fare, per` e o si ` dimostrato che con un lavoro di 3-4 mesi ` possibile pianicare e implee e mentare una migrazione del genere. Adesso per Uni viene la fase delle scelte strategiche in cui dovr` decidere come assegnare le reti e se sar` obbligatorio a a o facoltativo il passaggio; tutte questioni di scarso interesse ai ni tecnici della migrazione. Abbiamo fatto vedere come congurare il backbone, i server e i client. Risulta evidente che la parte dei server ` in assoluto la meno complicata. e Anche il backbone non genera particolari problemi, ad eccezione degli ASA in failover che rimangono eettivamente una spina nel anco per chi non ha la possibilit` di bypassarli. La parte pi` problematica sono i client; considea u rando le statistiche di diusione dei sistemi operativi[?] risulta che Windows XP, nonostante la sua obsolescenza, sia il sistema operativo pi` diuso u (67% a luglio 2009) ed ` quello con il peggiore supporto a IPv6. In generale e

Capitolo 6. Conclusioni

71

la scelta di usare un DHCP peggiora la situazione obbligando ad interventi di installazione e congurazione non alla portata dellutente medio. Sul fronte Linux, bench sia ancora richiesta una congurazione manuale del client e DHCP, ` in fase di test il supporto a IPv6 integrato in NetworkManger, che e sar` introdotto con la prossima versione delle maggiori distribuzioni, tutte a pianicate entro ne anno. Apple rimane indietro rispetto ai concorrenti sul campo IPv6 ma ` prevedibile che al momento di una richiesta insistente da e parte del mercato si rimetta in riga. Comunque, come abbiamo dimostrato, nessuna di queste complicazioni rende inutilizzabile IPv6 ed in un contesto di rete di grosse dimensioni ci si aspetta che il management dei client sia gi` in a qualche modo remotizzato, rendendo pi` semplice linstallazione di software u e lapplicazione di modiche ai le di congurazione su tutti i client. Vogliamo ora soermarci a riettere sui cambiamenti architetturali che una migrazione a IPv6 comporta. Una congurazione di rete IPv4 standard ` composta da un gateway a indirizzo pubblico che esegue il NAT per la e propria rete privata, spesso vi sono dei server a uso interno che orono servizi solo per la rete privata. Qualora sia necessario pubblicare un servizio interno su Internet bisogna eseguire una redirezione delle porte del gateway verso lindirizzo privato, sperando di non averle gi` assegnate ad un altro a host. Spesso, come nel caso del LENST/LaRT, ci si inventano domini a uso interno mappati sul proprio DNS locale con indirizzi IPv4 privati. Chiunque abbia mai provato a gestire uninfrastruttura del genere conosce le complicazioni e i grattacapi che comporta. Con IPv6 tutto questo non esiste pi`, u sparisce la distinzione architetturale fra privato e pubblico. Non si dovr` pi` a u avere un dominio fasullo interno alla propria rete, ma si useranno hostname pubblici, con indirizzi a visibilit` global. Sar` poi a livello di rewall che si a a decider` chi pu` e chi non pu` raggiungere un determinato servizio. Questo a o o

Capitolo 6. Conclusioni

72

` un enorme passo avanti rispetto allattuale infrastruttura IPv4. Non ci sae ranno pi` problemi di web server https condivisi che devono avere lo stesso u certicato SSL nonostante gli hostname siano dierenti. Una persona potr` a raggiungere, se lo vorr`, il proprio PC di lavoro senza dover fare tunnel SSH a su tunnel SSH. Insomma, come anticipavamo nellintroduzione, riporteremo la rete alla sua natura originaria di mezzo di comunicazione ent-to-end, con tutti i vantaggi che questo comporta. Non dobbiamo dimenticarci che IPv4 convivr` a lungo con IPv6, almeno a no a quando tutti non saranno passati al nuovo protocollo. Questo porter` al a proliferare di situazioni promiscue con indirizzi IPv4 privati e IPv6 pubblici, ` con nomi di dominio fasulli e veri. E importante, per gli amministratori di rete e dei servizi, non abbassare il livello di attenzione su nessuna delle due versioni del protocollo, o niremo con policy di sicurezza aggirabili scegliendo con cura la versione di IP da utilizzare. Il rischio ` che IPv4 cada nel dimenticatoio e troppo in fretta e possa essere utilizzato come veicolo di attacco. Ci aspettano tempi duri; il periodo di transizione, in cui ci saranno due Internet, dicilmente sar` breve ma alla ne ne uscir` una rete pi` sana e a a u longeva.

6.1

Suggerimenti per sviluppi futuri

Durante lo svolgimento del lavoro di tesi sono emerse carenze di funzionalit` a di alcuni applicativi, o altri campi in cui indirizzare nuovi studi. Si appunta qui una serie di suggerimenti per ulteriori approfondimenti. Multicast IPv6 supporta anche il global multicast ma richiede una congurazione del backbone specica.

Capitolo 6. Conclusioni

73

Mobile IPv6 utilizzando degli Extension Headers ` possibile introdurre il e supporto per client in movimento. DHCPv6 pur esistendo molteplici implementazioni di server DHCPv6 nessuna implementa tutte le funzionalit` previste dallo standard. a

Capitolo 7 Nota personale


Perdonatemi il tono informale di questo ultimo capitolo, ma dopo cinque anni di studi ed unestate caldissima passata su questa tesi voglio prendermi un capitoletto tutto per me. Sono felicissimo di aver avuto lopportunit` di a svolgere il mio lavoro di tesi su IPv6, un argomento che mi entusiasma ed interessa gi` da prima che me ne parlassero in ambito accademico. Di quea sto non posso che ringraziare Tommaso (Pecorella) ed Eugenio (Dibilio), ma anche Fabio, Gianfranco, Marisa e Vincenzo che mi sono stati di grandissimo aiuto. Un ringraziamento speciale va alla mia famiglia, quella attuale con tutti i parenti e quella che spero un giorno sar`. Senza i loro sacrici ed il loro a supporto non sarei mai potuto arrivare no a questo punto. Un grazie di cuore va ad Enrico che, nonostante largomento fosse squisitamente tecnico, si ` e prodigato nel darmi una mano a controllare la tesi dal punto di vista grammaticale e sintattico. Non posso non ringraziare i ragazzi (presenti e passati) del Laboratorio di Informatica Libera del Kollettivo di ingegneria (LILiK), insieme siamo cresciuti molto come persone e come informatici. Ultimi, ma non per ultimi, Daniele e Mirko, compagni di studio e di memorabili discussioni animate su argomenti di ogni genere, grazie anche a voi per il supporto

Capitolo 7. Nota personale

75

e lamicizia. (Daniele muoviti che manchi solo te!) Per gli impavidi che sono arrivati a leggere no a questo punto, vorrei lasciarvi con le parole di Robert M. Pirsig[?] che hanno animato le mie azioni durante questa tesi. La parola greca enthousiasmos mi piace perch descrive esattae mente quello che succede a chi ` in rapporto con la Qualit`. [...] e a ` Chi ` pieno di enthousiasmos non se ne sta a rimugginare. E e arrivato alla piena consapevolezza di s e ha ben presente la Quae lit`: cos` sa cosa lo aspetta e pu` far fronte a tutto. Questo ` a o e lenthousiasmos. [...] Se vi accingete a riparare una motocicletta, il primo strumento, e il pi` importante, ` unadeguata riserva di u e enthousiasmos. Se non ce lavete, potete anche raccattare tutti gli altri strumenti e metterli via, perch non vi serviranno a niene te. Ma se ce lavete e sapete come continuare ad averlo non c` e motivo al mondo che vi possa impedire di aggiustare la moto. Anche se lui parlava della manutenzione della motocicletta il discorso si applica perfettamente ad una migrazione a IPv6. Adesso ho veramente nito, see you space cowboys.

Appendice A Tavole a colori

Appendice A. Tavole a colori

77

Figura A.1: La rete dellUniversit` degli Studi di Firenze a

Appendice B File di congurazione e script


Listato B.1: File di zona ipv6.uni.it ; ; zone f o r i p v 6 . u n i f i . i t ;

$TTL

3600

@ 86400 IN SOA dns . i p v 6 . u n i f i . i t . s t a f f r e t i . u n i f i . i t . 2009082801 ; S e r i a l 86400 7200 3600000 3600 ) ; Refresh ; Retry ; Expire ; Minimum

@ 86400 IN NS dns . i p v 6 . u n i f i . i t .

wpad

IN A

127.0.0.1

IN AAAA : : 1

Appendice B. File di congurazione e script

79

; ; SPF ; @ 3600 IN TXT v=s p f 1 a l l

; ; ; @ 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : 1 : : 2 0 IN A 150.217.1.20 Host

dns

4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : 1 : : 2 0 4800 IN A 150.217.1.20

poshbit ipv4

4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : 1 : : 2 0 4800 IN A 150.217.1.20

lenst

4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : 1 0 0 1 : : 2 4

; ; A l i a s CNAME ; ns1 www lart 4800 IN CNAME dns 4800 IN CNAME dns 4800 IN CNAME l e n s t

; ; backbone ptp

Appendice B. File di congurazione e script

80

; c s i a f 2 extv61 v61c s i a f 2 e x t 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : f 0 f f : : 8 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : f 0 f f : : 9

v61v62 v62v61

4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : f 0 f f : : 1 1 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : f 0 f f : : 1 0

c s i a f 2 extc s i a f 1 c s i a f 1 c s i a f 2 e x t

4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : f 0 f f : : 1 2 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : f 0 f f : : 1 3

c s i a f 1 smarta smartac s i a f 1

4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : f 0 f f : : 1 4 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : f 0 f f : : 1 5

g a r r v61 v61g a r r

4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : f 0 f f : : 5 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : f 0 f f : : 7

smartad e t detsmarta

4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : f 0 f f : : 1 6 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 c05 : f 0 f f : : 1 7

; ; backbone r o u t e r ; c s i a f 2 e x t v61 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 1 2 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 9 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 1 1 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 7 v62 csiaf1 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 1 0 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 1 3 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 1 4

Appendice B. File di congurazione e script

81

smarta garr

4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 1 5 4800 IN AAAA 2 0 0 1 : 7 6 0 : 2 C05 : F0FF : : 5

; ; ; l e n s t 0001000 l e n s t 0001001 l e n s t 0001002 l e n s t 0001003 l e n s t 0001004 l e n s t 0001005 l e n s t 0001006 l e n s t 0001007 l e n s t 0001008 l e n s t 0001009 l e n s t 000100a l e n s t 000100b l e n s t 000100c l e n s t 000100d l e n s t 000100e l e n s t 000100 f l e n s t 0001010 l e n s t 0001011 l e n s t 0001012 l e n s t 0001013 l e n s t 0001014 l e n s t 0001015 l e n s t 0001016 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 0 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 1 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 2 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 3 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 4 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 5 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 6 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 7 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 8 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 9 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 a 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 b 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 c 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 d 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 e 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 0 f 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 0 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 1 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 2 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 3 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 4 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 5 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 6 HOST DHCP d e l LENST

Appendice B. File di congurazione e script

82

l e n s t 0001017 l e n s t 0001018 l e n s t 0001019 l e n s t 000101a l e n s t 000101b l e n s t 000101c l e n s t 000101d l e n s t 000101e l e n s t 000101 f l e n s t 0001020 l e n s t 0001021 l e n s t 0001022 l e n s t 0001023 l e n s t 0001024 l e n s t 0001025 l e n s t 0001026 l e n s t 0001027 l e n s t 0001028 l e n s t 0001029 l e n s t 000102a l e n s t 000102b l e n s t 000102c l e n s t 000102d l e n s t 000102e l e n s t 000102 f l e n s t 0001030 l e n s t 0001031 l e n s t 0001032

4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 7 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 8 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 9 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 a 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 b 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 c 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 d 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 e 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 1 f 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 0 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 1 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 2 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 3 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 4 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 5 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 6 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 7 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 8 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 9 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 a 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 b 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 c 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 d 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 e 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 2 f 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 3 0 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 3 1 4800 IN AAAA 2 0 0 1 : 0 7 6 0 : 2 c05 : 1 0 0 2 : : 1 0 3 2

Appendice B. File di congurazione e script

83

Listato B.2: File di zona 2001:760:2c05::/48 ; ; 2 0 0 1 : 7 6 0 : 2 c05 : : / 4 8

$TTL 3d ; D e f a u l t TTL @ IN SOA 5 . 0 . c . 2 . 0 . 6 . 7 . 0 . 1 . 0 . 0 . 2 . i p 6 . arpa . staffreti . unifi . it . ( 2009082802 ; S e r i a l number (YYYYMMdd) 24h 30m 2d 3d ) ; R e f r e s h time ; Retry time ; E x p i r e time ; D e f a u l t TTL

; Name s e r v e r e n t r i e s IN NS dns . i p v 6 . u n i f i . i t .

; IPv6 PTR e n t r i e s

; Subnet #1 $ORIGIN 1 . 0 . 0 . 0 . 5 . 0 . c . 2 . 0 . 6 . 7 . 0 . 1 . 0 . 0 . 2 . i p 6 . arpa .

0 . 2 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR dns . i p v 6 . u n i f i . i t .

; ; Rete d e l d e t ; $ORIGIN 1 . 0 . 0 . 1 . 5 . 0 . c . 2 . 0 . 6 . 7 . 0 . 1 . 0 . 0 . 2 . i p 6 . arpa .

Appendice B. File di congurazione e script

84

4 . 2 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t . i p v 6 . u n i f i . i t .

; ; Rete d e i r o u t e r d i backbone ; $ORIGIN f . f . 0 . f . 5 . 0 . c . 2 . 0 . 6 . 7 . 0 . 1 . 0 . 0 . 2 . i p 6 . arpa .

5 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR g a r r v6 1. i p v 6 . u n i f i . i t . 7 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR v61g a r r . i p v 6 . u n i f i . i t . 8 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR c s i a f 2 extv6 1. i p v 6 . u n i f i . i t . 9 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR v61c s i a f 2 e x t . i p v 6 . u n i f i . i t .

0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR v61v6 2. i p v 6 . u n i f i . i t . 1 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR v62v6 1. i p v 6 . u n i f i . i t . 2 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR c s i a f 2 extc s i a f 1 . i p v 6 . u n i f i . i t . 3 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR c s i a f 1 c s i a f 2 e x t . i p v 6 . u n i f i . i t . 4 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR c s i a f 1 smarta . i p v 6 . u n i f i . i t . 5 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR smartac s i a f 1 . i p v 6 . u n i f i . i t . 6 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR

Appendice B. File di congurazione e script

85

smartad e t . i p v 6 . u n i f i . i t . 7 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR detsmarta . i p v 6 . u n i f i . i t .

; ; ; $ORIGIN 2 . 0 . 0 . 1 . 5 . 0 . c . 2 . 0 . 6 . 7 . 0 . 1 . 0 . 0 . 2 . i p 6 . arpa . 0 . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001000. i p v 6 . u n i f i . i t . 1 . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001001. i p v 6 . u n i f i . i t . 2 . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001002. i p v 6 . u n i f i . i t . 3 . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001003. i p v 6 . u n i f i . i t . 4 . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001004. i p v 6 . u n i f i . i t . 5 . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001005. i p v 6 . u n i f i . i t . 6 . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001006. i p v 6 . u n i f i . i t . 7 . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001007. i p v 6 . u n i f i . i t . 8 . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001008. i p v 6 . u n i f i . i t . 9 . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001009. i p v 6 . u n i f i . i t . a . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR r e t e dhcp d e l LENST

Appendice B. File di congurazione e script

86

l e n s t 000100a . i p v 6 . u n i f i . i t . b . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000100b . i p v 6 . u n i f i . i t . c . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000100c . i p v 6 . u n i f i . i t . d . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000100d . i p v 6 . u n i f i . i t . e . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000100e . i p v 6 . u n i f i . i t . f . 0 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000100 f . i p v 6 . u n i f i . i t . 0 . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001010. i p v 6 . u n i f i . i t . 1 . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001011. i p v 6 . u n i f i . i t . 2 . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001012. i p v 6 . u n i f i . i t . 3 . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001013. i p v 6 . u n i f i . i t . 4 . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001014. i p v 6 . u n i f i . i t . 5 . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001015. i p v 6 . u n i f i . i t . 6 . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001016. i p v 6 . u n i f i . i t . 7 . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001017. i p v 6 . u n i f i . i t . 8 . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001018. i p v 6 . u n i f i . i t .

Appendice B. File di congurazione e script

87

9 . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001019. i p v 6 . u n i f i . i t . a . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000101a . i p v 6 . u n i f i . i t . b . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000101b . i p v 6 . u n i f i . i t . c . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000101c . i p v 6 . u n i f i . i t . d . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000101d . i p v 6 . u n i f i . i t . e . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000101e . i p v 6 . u n i f i . i t . f . 1 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000101 f . i p v 6 . u n i f i . i t . 0 . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001020. i p v 6 . u n i f i . i t . 1 . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001021. i p v 6 . u n i f i . i t . 2 . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001022. i p v 6 . u n i f i . i t . 3 . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001023. i p v 6 . u n i f i . i t . 4 . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001024. i p v 6 . u n i f i . i t . 5 . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001025. i p v 6 . u n i f i . i t . 6 . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001026. i p v 6 . u n i f i . i t . 7 . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR

Appendice B. File di congurazione e script

88

l e n s t 0001027. i p v 6 . u n i f i . i t . 8 . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001028. i p v 6 . u n i f i . i t . 9 . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001029. i p v 6 . u n i f i . i t . a . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000102a . i p v 6 . u n i f i . i t . b . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000102b . i p v 6 . u n i f i . i t . c . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000102c . i p v 6 . u n i f i . i t . d . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000102d . i p v 6 . u n i f i . i t . e . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000102e . i p v 6 . u n i f i . i t . f . 2 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 000102 f . i p v 6 . u n i f i . i t . 0 . 3 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001030. i p v 6 . u n i f i . i t . 1 . 3 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001031. i p v 6 . u n i f i . i t . 2 . 3 . 0 . 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 IN PTR l e n s t 0001032. i p v 6 . u n i f i . i t .

; End o f zone f i l e .

Appendice B. File di congurazione e script

89

Listato B.3: Script di generazione dei record AAAA e PTR per BIND #! / u s r / b i n / env rub y

## d n s g e n . r b BIND r e c o r d g e n e r a t o r (AAAA and PTR) ## C o p y r i g h t (C) 2009 A l e s s i o Caiazza

## p u b l i s h e d on h t t p : / / code . l 0 g . i n / d n s g e n ## ## This program i s f r e e s o f t w a r e : you can r e d i s t r i b u t e ## i t and/ or modify i t under t h e terms o f t h e GNU General ## P u b l i c L i c e n s e as p u b l i s h e d by t h e Free S o f t w a r e ## Foundation , e i t h e r v e r s i o n 3 o f t h e L i c e n s e . ## ## This program i s d i s t r i b u t e d i n t h e hope t h a t i t w i l l ## be u s e f u l , b u t WITHOUT ANY WARRANTY; w i t h o u t even t h e ## i m p l i e d warranty o f MERCHANTABILITY or FITNESS FOR A ## PARTICULAR PURPOSE. ## f o r more d e t a i l s . ## See t h e GNU General P u b l i c L i c e n s e

IPV6 LEN = 39

# # C l a s s e p e r l a g e s t i o n e d e g l i i n d i r i z z i IPv6 # # c l a s s V6Addr i n c l u d e Comparable a t t r : addr implementa i Range

Appendice B. File di congurazione e script

90

a t t r : comp addr

def i n i t i a l i z e ( addr ) @comp addr = addr @addr = expand end

# # g e n e r a l i n d i r i z z o s u c c e s s i v o ( i m p l e m e n t a z i o n e Range ) # def s u c c s p l i t t e d = @addr . s p l i t ( : ) next addr = 1 . upto ( 8 ) do | i | f o u r N i b b l e = ( s p l i t t e d [ i ] . t o i ( 1 6 ) +1) . t o s ( 1 6 ) i f f o u r N i b b l e . l e n g t h <= 4 0 . upto (8 i 1) { | j | n e x t a d d r << s p l i t t e d [ j ]+ : } n e x t a d d r << f o u r N i b b l e ( i 1) . t i m e s { n e x t a d d r << : 0 0 0 0 } return V6Addr . new ( n e x t a d d r ) end end V6Addr . new ( : : 0 ) end

# # c o n f r o n t a due i n d i r i z z i ( i m p l e m e n t a z i o n e Range ) # def <=>(o t h e r )

Appendice B. File di congurazione e script

91

@addr <=> o t h e r . addr end def t o s s p r i n t f %s #{i n s p e c t } , @addr end

# # g e n e r a una s t r i n g a c o m p a t i b i l e con un hostname # def a d d r t o h o s t ( domain pre ) s p l i t t e d = @addr . s p l i t ( : ) h o s t = domain pre . dup 4 . upto ( 7 ) { | i | h o s t << +s p l i t t e d [ i ] . t o i ( 1 6 ) . t o s ( 1 6 ) } host end def expand V6Addr . e x p a n d i p v 6 ( @comp addr ) end

# # # # def s e l f . e x p a n d i p v 6 ( i p ) low , h i g h = i p . s p l i t ( : : ) expanded = low . s p l i t ( : ) . map{ | i | 0 (4 i . l e n g t h )+i } . j o i n ( : ) unless h i g h . n i l ? Espande un i n d i r i z z o i p v 6 d a l l a forma c o n t r a t t a a l l a forma e s t e s a

Appendice B. File di congurazione e script

92

h i g h = : +h i g h . s p l i t ( : ) . map{ | i | 0 (4 i . l e n g t h )+i } . j o i n ( : ) padding = ( IPV6 LEN ( expanded+h i g h ) . l e n g t h ) / 5 expanded = expanded + : 0 0 0 0 padding + h i g h end

return expanded end end

# # # # # # # # def g e n f o r w a r d ( range , domain , d o m a i n p r e f , s e l f d o m a i n ) puts ; HOSTS Genera i r e c o r d AAAA p e r i l range d i i n d i r i z z i IPv6 fornito . d o m a i n p r e f v i e n e messo come p r e f i s s o a l nome d i dominio g e n e r a t o a p a r t i r e d a l l i n t e r f a c e ID d e l l i n d i r i z z o , s e s e l f d o m a i n ` t r u e appende a l e r e c o r d i l nome d i dominio c o m p l e t o .

r a n g e . each do | addr | p u t s #{addr . a d d r t o h o s t ( d o m a i n p r e f )}#{ s e l f d o m a i n ? : . + domain + . } \ t 4 8 0 0 IN AAAA #{addr . addr } end end

# # # Genera i r e c o r d PTR p e r i l range d i i n d i r i z z i IPv6 fornito .

Appendice B. File di congurazione e script

93

# # # #

I p a r a m e t r i domain e d o m a i n p r e f hanno l o s t e s s o s i g n i f i c a t o d e s c r i t t o n e l metodo g e n f o r w a r d ( range , domain , d o m a i n p r e f , s e l f d o m a i n )

def g e n r e v e r s e ( range , domain , d o m a i n p r e f ) i p 6 a r p a = r a n g e . f i r s t . addr . d e l e t e ( : ) [ 0 . . 1 5 ] ip6 arpa = ip6 arpa . r e v e r s e . s p l i t (/ s /) . j o i n ( . ) + . i p 6 . arpa . puts ; REVERSE

p u t s $ORIGIN #{i p 6 a r p a } r a n g e . each do | addr | r e v e r s e = addr . addr . d e l e t e ( : ) [ 1 6 . . 1 ] r e v e r s e = r e v e r s e . r e v e r s e . s p l i t (/ s /) . j o i n ( . ) p u t s #{ r e v e r s e } IN PTR #{addr . a d d r t o h o s t ( d o m a i n p r e f ) }.#{ domain } . end end

def main ( ) i f ARGV. l e n g t h < 4 p u t s Wrong p a r a m e t e r s ! \ nUsage : p u t s #{$0 } 2 0 0 1 : db8 : b e a r : : c a f e 2 0 0 1 : db8 : b e a r : : dead mydomain . com dhcp [c o m p l e t e ] p u t s Use c o m p l e t e f o r appending mydomain . com . on AAAA r e c o r d s . exit 1 end f i r s t h o s t = V6Addr . new (ARGV[ 0 ] ) l a s t h o s t = V6Addr . new (ARGV[ 1 ] )

Appendice B. File di congurazione e script

94

domain= ARGV[ 2 ] d o m a i n p r e f = ARGV[ 3 ] s e l f d o m a i n = true i f !ARGV[ 4 ] . n i l ? && ARGV[ 4 ] . e q l ? ( c o m p l e t e ) self domain = false end g e n f o r w a r d ( f i r s t h o s t . . l a s t h o s t , domain , domain pref , s e l f d o m a i n ) g e n r e v e r s e ( f i r s t h o s t . . l a s t h o s t , domain , d o m a i n p r e f ) end

if

FILE main ( )

== $0

end

Appendice B. File di congurazione e script

95

Listato B.4: Script di avvio per ip6tables #! / b i n / sh

# Script di avvio del f i r e w a l l i p 6 t a b l e s # A l e s s i o C a i a z z a <n o l i t h @ a b i s s o . org>

CONFIG6 FILE=/ e t c / m y 6 f i r e w a l l . c o n f

case $1 i n start | restart ) echo n S t a r t i n g IPv6 f i r e w a l l : i p 6 t a b l e s r e s t o r e < $CONFIG6 FILE echo done . ;;

stop ) echo n S t o p p i n g IPv6 f i r e w a l l : echo n o t h i n g t o do . ;;

) echo Usage : $0 { s t a r t | s t o p | r e s t a r t | c l e a r } exit 1 ;; esac exit 0

Appendice B. File di congurazione e script

96

Listato B.5: Script di controllo per dhcp6s #! / b i n / b a s h # d h c p d o c t o r . sh # A l e s s i o Caiazza # # V e r i f i c a s e i l s e r v i z i o dhcp6s ` andato i n c r a s h e # e lo riavvia # # Installazione : # # Copiare i l f i l e d h c p d o c t o r . sh i n / u s r / l o c a l / s b i n

# e aggiungere in / etc / crontab # # # #c o n t r o l l o a r e i l dhcp o g n i 5 m i n u t i /5 r o o t / u s r / l o c a l / s b i n / d h c p d o c t o r . sh

#c o n t r o l l a s e dhcp6s d e v e e s s e r e e s e g u i t o a l l a v v i o # d e l l a macchina c h k c o n f i g l i s t dhcp6s | g r e p on >/dev / n u l l i f [ $ ? ne 0 ] ; then exit 1 fi s e r v i c e dhcp6s s t a t u s >/dev / n u l l

i f [ $ ? ne 0 ] ; then s e r v i c e dhcp6s s t a r t >/dev / n u l l fi

Appendice C Acronimi
ABR ASA AS ASBR AYIYA BR CIDR CMS CSIAF Area Border Router Adaptive Security Appliance Autonomous System Autonomous System Boundary Router Anything In Anything Backbone Router Classless Inter-Domain Routing Content Management System Centro Servizi Informatici e informativi dellAteneo Fiorentino DDNS DDOS Dynamic DNS Distributed Denial Of Service

Appendice C. Acronimi

98

DNS DUID EUI-64

Domain Name System DHCP Unique Identier Extend Unique Identier

Consortium GARR Consortium Gestione Ampliamento Rete Ricerca IANA IETF IGP IR ISATAP ISP LENST/LaRT Internet Assigned Numbers Authority Internet Engineering Task Force Interior Gateway Protocol Internal Router Intra-Site Automatic Tunnel Addressing Protocol Internet Service Provider Laboratorio di Elaborazione Numerica dei Segnali e Telematica / Laboratorio Reti di Telecomunicazioni LILiK Laboratorio di Informatica Libera del Kollettivo di ingegneria NAT OSPF proto-41 radvd RIRs RIR Network Address TranslationPort Translation Open Shortest Path First Protocol 41 Router Advertisement Daemon Regional Internet Registries Regional Internet Registry

Appendice C. Acronimi

99

SSH TLDs

Secure Shell Top Level Domains