Tesi di Laurea di Primo Livello
Corso di “Modelli e Sistemi”
Reti Private Virtuali con Topologia Dinamica
IPSec-IPv6
Studente
Relatore
Prof. Andrea Detti
Gabriele Trabucco
Anno Accademico 2008/2009
Overlay VPN in Pratica
Una Overlay VPN è una rete di computer interconnessi tra loro che realizzano una
determinata topologia.
La particolarità di queste reti è che esse non sono fisiche ma bensì logiche e per tale
motivo sono realizzate al di sopra di altre reti preesistenti, nel nostro caso INTERNET.
Il prerequisito fondamentale per il nostro progetto è che ogni nodo facente parte della
Overlay, o che intenda unirsi a tale rete, abbia un indirizzo IP pubblico grazie al quale i
software di gestione possano essere messi in comunicazione diretta.
Il primo problema da superare è l’interconnessione logica tra i nodi della rete.
Per tale proposito ci vengono in soccorso le tecnologie di tunneling
2
Tunneling
Il tunneling è una particolare tecnica che inserisce un determinato protocollo in un altro
protocollo dello stesso livello o di livello superiore.
E’ il fulcro di tutto il progetto in quanto grazie a questa particolare tecnica possiamo
creare delle interfacce virtuali sui nodi che andranno a costituire l’Overlay Network.
L’interconnessione Point-to-Point tra le interfacce virtuali presenti sui diversi nodi ci
permette di creare l’Overlay Network vera e propria.
GRE è il candidato perfetto come protocollo di tunneling
Tunnel
Internet
3
GRE
Generic Routing Encapsulation
GRE è già integrato nella maggior parte delle distribuzioni linux ed è molto semplice da
configurare.
La scelta di adottare questo particolare tipo di protocollo di tunneling è data dal fatto
che GRE è in grado di incapsulare al suo interno anche il traffico Broadcast e Multicast
utilizzato dai comuni protocolli di routing.
IP
Packet
4
Struttura del Tunneling GRE
I nodi fisicamente sono interconnessi tra loro grazie alla rete INTERNET .
Non ci è dato sapere come è realizzata fisicamente la topologia delle rete sottostante
ma sappiamo esattamente qual è la topologia dell’Overlay Network generata
dall’interconnessione dei nodi.
IP Tunnel
IP Tunnel
GRE
GRE
IP Pubblico
IP Pubblico
Collegamento Fisico
Collegamento Fisico
INTERNET
5
Problemi
•
•
•
•
Indirizzamento IP dei Tunnel
Configurazione Tabelle di Routing
Overhead dovuto alle Tabelle di Routing
Sicurezza - IPSec
6
Indirizzamento dei Tunnel GRE
Ovviamente le interfacce di rete virtuali create
devono avere un indirizzo IP tramite il quale
possono essere raggiunte.
Scegliere un indirizzamento IPv4 classico
(diverso da quello dell’interfaccia fisica) avrebbe
comportato l’onere di integrare all’interno del
progetto un servizio DHCP (Dynamic Host
Configuration Protocol) o quantomeno un
algoritmo che generasse IP unici per ogni nodo
dell’Overlay.
Abbiamo adottato l’indirizzamento IPv6 che può
essere mappato su IPv4 con il risultato di
ottenere senza sforzo IPv6 unici nell’Overlay.
7
IPv6 vs IPv4
IPv4
• Indirizzo di 32 bit
• Spazio di indirizzamento
IPv4  4.2 109
• Rappresentazione decimale
: 160.80.80.1
•
•
•
•
IPv6
Indirizzo di 128 bit
Spazio di indirizzamento
IPv6  3.4 1038
Rappresentazione
esadecimale o ibrida :
2001::160.80.80.1 è
equivalente a
2001::A050:5001
Anycasting
8
Configurazione Tabelle di Routing
È un punto cruciale all’interno dell’Overlay
Network in quanto ogni nodo, senza tabelle di
routing, non è in grado di comunicare con
nessun nodo all’interno della rete.
La tabella di routing non è altro che “la strada”
che un pacchetto deve percorrere per arrivare a
destinazione.
Si è adottato un protocollo di routing Link State
ossia ogni nodo dell’Overlay conosce l’intera
topologia di rete.
Per tali scopi, visto il requisito di supportare
frequenti cambiamenti topologici, il protocollo
più appropriato è OLSR : Optimized Link State
Routing Protocol.
Tale protocollo viene fatto girare sopra tutte le
interfacce Tunnel.
9
Overhead dovuto alle Tabelle di Routing
Supponiamo di fissare ad 8 il numero di tunnel che un nodo può avere.
Se avessimo utilizzato un indirizzamento IPv4 avremmo dovuto assegnare otto indirizzi
IP diversi ad ogni interfaccia dei tunnel.
Così facendo il protocollo OLSR di un nodo avrebbe dovuto diramare a tutti gli altri
nodi dell’Overley esattamente 8 indirizzi IP.
Supponendo di avere una rete composta da 101 nodi, ogni singolo nodo facente parte
dell’Overlay si ritroverebbe con una tabella di routing di 800 righe con un enorme
spreco in termini di Overhead di rete per la trasmissione delle stesse e di calcolo per il
forwarding dei pacchetti.
Ci viene in aiuto IPv6 grazie al quale è possibile dare lo stesso IPv6 a tutte le interfacce
virtuali (Anycast) minimizzando così da 8 a 1 il numero di indirizzi IP diramati agli altri
nodi tramite OLSR.
In questo modo ogni nodo dell’Overlay avrà all’interno della propria tabella di routing
tante righe quanti sono i nodi connessi alla rete.
10
Sicurezza - IPSec
La sicurezza della trasmissione dei dati è affidata ad IPSec - Transport Mode.
Grazie a questo protocollo completamente trasparente al livello applicativo si riesce ad
implementare la crittografia e l’autenticazione delle connessioni IP
Nella modalità Transport Mode viene messo in sicurezza solo il payload del pacchetto IP.
L’header IP viene staccato e il payload viene criptato (ESP) e viene applicato il security
header (ESP/AH). Infine viene riapplicato l’header IP originale.
Per effettuare questo meccanismo viene configurato un SPD (Security Policy Database)
grazie al quale verrà poi generato un SAD (Security Association Database)
SP – Regola chi deve essere trattato da una specifica SA.
SA – Definisce come realizzare una connessione sicura tra due host.
11
Prova di Concetto
Strumenti utilizzati per la realizzazione del software
• Linux Ubuntu 9.04 Debian Based
• Netkit : suite di virtualizzazione per la
simulazione di molte tipologie di rete.
• Olsrd : Demone del protocollo di routing OLSR
• Ipsec-tool : suite per la gestione di IPSec
12
gre_server
GRE
Data
È lo script principale che rimane sempre in esecuzione in
background. Grazie a questo script un host all’interno
del’Overlay Network è in grado di ricevere le richieste
d’ingresso da parte di macchine esterne alla rete.
Filtro GRE
Le richieste vengono identificate dal tipo di protocollo. Non
appena lo script filtra un pacchetto IP GRE apre un tunnel
per instaurare la comunicazione con il nodo entrante.
GRE
Data
GRE
Data
Per garantire la sicurezza l’operazione successiva è quella di
configurazione IPSec per garantire lo scambio dei dati
criptato.
Data
Data
GRE
Data
Data
13
overlay_connection
Permette di fare una richiesta di ingresso
ad un nodo appartenente all’Overlay
Network. Il suo funzionamento è molto
semplice.
Client
Server
IPSec Setting
IPSec Setting
Apre un tunnel GRE verso il nodo remoto
Imposta i parametri IPSec
Il nodo remoto risponderà settando anche
esso i medesimi parametri IPSec
Crypted Data
La connessione è stabilita ed i dati di
qualunque tipo possono essere scambiati
tra tutti i nodi della rete comprese le
tabelle di instradamento per raggiungere il
nuovo nodo.
14
Obbiettivi Futuri
• Introduzione del demone racoon per la creazione
automatizzata delle Security Policy e Security Association tra i
nodi della rete.
• Porting del progetto da bash script a demone C
15