Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Corso di Laurea in
Ingegneria Informatica
Alessio Caiazza
28 settembre 2009
Relatori:
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
1.5
2 Servizi base
Indice
ii
2.1
2.2
2.3
Confronto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 32
3 Infrastruttura 3.1
3.2
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
3.5
Secure Shell (SSH) . . . . . . . . . . . . . . . . . . . . . . . . 56 Web server - Apache . . . . . . . . . . . . . . . . . . . . . . . 56 4.2.1 MD-Pro, Drupal, Plone e considerazioni generali . . . . 60 61
Il backbone . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Indirizzamento . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Indice
iii
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
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
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
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
Interface ID 64 bit
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
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
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
Bob 2001:db8:aa89:f5::16
2001:db8:aa89:f5::feed
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
Source Address
Destination Address
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
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
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
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.
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
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
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.
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
20
relay-agent
client
relay-agent
client
relay-agent
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
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
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 }; }; }; };
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.
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 ; };
ida s s o c na 0 { };
ida s s o c na 1 { };
25
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
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.
27
@ 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).
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 .
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
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
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
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
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
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
Tabella 3.1: Indirizzi dei nodi della rete di riferimento per gli esempi
Capitolo 3. Infrastruttura
34
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
3.1
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
Autonomous System 1
Area 1
BR
IR
IR
IR
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
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
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
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
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
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
3.3.1
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
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
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
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
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
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
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.
4.1
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
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
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
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
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
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
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 >
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
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 >
60
4.2.1
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.
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.
62
2001:760:2c05 48 bit X identica lanello Y riservato per usi futuri WZ identica la rete
XYWZ 16 bit
Interface ID 64 bit
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.
63
5.3
I router
GARR
GW_GARR
ASA in failover
V6-1
V6-2 DET
LENST
DMZ CSIAF
RETE TEST
RETE LENST
POSHBIT
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.
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
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
Si ` scelto di utilizzare inizialmente un dominio dedicato esclusivamente e agli indirizzi IPv6 per evitare eventuali disagi dovuti a server o applicati-
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
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.
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
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
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-
67
GARR
GW_GARR
ASA in failover
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.
68
5.7.6
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
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
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
Avendo scelto di utilizzare un server DHCP con indirizzi assegnati in sequenza ` stato possibile generare automaticamente i record DNS AAAA e PTR e
69
per gli host. A questo proposito ` stato sviluppato lo script ruby in appendice e B.3.
5.7.10
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
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
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.
77
$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
79
dns
poshbit ipv4
lenst
; ; 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
80
v61v62 v62v61
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
c s i a f 1 smarta smartac s i a f 1
g a r r v61 v61g a r r
smartad e t detsmarta
; ; 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
81
smarta garr
; ; ; 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
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
83
$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
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 .
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 .
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
85
; ; ; $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
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 .
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
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 .
89
Listato B.3: Script di generazione dei record AAAA e PTR per BIND #! / u s r / b i n / env rub y
## 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
90
a t t r : comp addr
# # 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
91
# # 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
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
# # # # # # # # 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
93
# # # #
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 ] )
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
95
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 . ;;
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
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
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