Netkit: laboratorio di rete virtuale: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
(revisionata, corretti alcuni errori, modificata gerarchia titoli)
Riga 1: Riga 1:
= Introduzione =
==Introduzione ==
Netkit[http://wiki.netkit.org/index.php/Main_Page] è un software, sviluppato dall'Università Roma3, che permette di realizzare veri e propri laboratori virtuali di rete a basso costo e con estrema
Netkit[http://wiki.netkit.org/index.php/Main_Page] è un software, sviluppato dall'Università Roma3, che permette di realizzare veri e propri laboratori virtuali di rete a basso costo e con estrema facilità di gestione.
facilità di gestione.


Questo viene utile sia per motivi didattici che per sperimentare configurazioni particolari da applicare, eventualmente, in
Questo viene utile sia per motivi didattici che per sperimentare configurazioni particolari da applicare, eventualmente, in
Riga 9: Riga 8:




= Installazione =
== Installazione ==
I pacchetti necessari all'installazione sono scaricabili da: http://wiki.netkit.org/index.php/Download_Official.
I pacchetti necessari all'installazione sono scaricabili da: http://wiki.netkit.org/index.php/Download_Official.
Allo stato attuale:
Allo stato attuale:
Riga 24: Riga 23:
</pre>
</pre>


spostiamo la directory netkit appena creata
spostiamo la directory <code>netkit</code> appena creata
<pre>
<pre>
$ mv netkit /home/utente/opt
$ mv netkit /home/utente/opt
Riga 31: Riga 30:


= Configurazione =
= Configurazione =
Settiamo il path aggiungendo a '''.bashrc''' le righe
Settiamo il path aggiungendo a <code>'''.bashrc'''</code> le righe


<pre>
<pre>
Riga 80: Riga 79:
</pre>
</pre>


Il file di configurazione di netkit è '''netkit.conf''' presente nella directory del programma.
Il file di configurazione di netkit è <code>'''netkit.conf'''</code> presente nella directory del programma.


Per aumentare la memoria riservata ad ogni macchina, editiamo questo file e sostituiamo
Per aumentare la memoria riservata ad ogni macchina, editiamo questo file e sostituiamo
Riga 96: Riga 95:


= Comandi principali =
= Comandi principali =
* '''vstart''': avvia una macchina virtuale
* <code>'''vstart'''</code>: avvia una macchina virtuale
* '''vhalt''': spegne una macchina virtuale
* <code>'''vhalt'''</code>: spegne una macchina virtuale
* '''vcrash''': chiude una macchina virtuale
* <code>'''vcrash'''</code>: chiude una macchina virtuale
* '''vlist''': ottiene informazioni dettagliate sulle macchine virtuali attive
* <code>'''vlist'''</code>: ottiene informazioni dettagliate sulle macchine virtuali attive




Riga 113: Riga 112:
$ vhalt v1
$ vhalt v1
</pre>
</pre>
spegne la macchina '''v1''' (stesso effetto di dare halt all'interno della macchina virtuale
spegne la macchina '''v1''' (stesso effetto di dare halt all'interno della macchina virtuale)




Riga 122: Riga 121:




= Comunicazione con l'host =
== Comunicazione con l'host ==
Per trasferire files al pc host basterà inserirli all'interno della directory '''/hosthome''', presente nel filesystem di ogni macchina virtuale. I files saranno visibili nel pc host e potranno essere gestiti a nostro piacere.
Per trasferire files al pc host basterà inserirli all'interno della directory <code>'''/hosthome'''</code>, presente nel filesystem di ogni macchina virtuale. I files saranno visibili nel pc host e potranno essere gestiti a nostro piacere.




= Collegamento ad internet =
== Collegamento ad internet ==
Per collegare ad internet una macchina virtuale, bisogna avviarla inserendo '''tap''' come dominio di collisione e scegliendo una classe di rete differente da quella della macchina host.
Per collegare ad internet una macchina virtuale, bisogna avviarla inserendo '''tap''' come dominio di collisione e scegliendo una classe di rete differente da quella della macchina host.


Riga 149: Riga 148:




= Installazione applicazioni =
== Installazione applicazioni ==
Per aggiungere nuove applicazioni ad una macchina virtuale:
Per aggiungere nuove applicazioni ad una macchina virtuale:
<pre>
<pre>
Riga 156: Riga 155:


dove
dove
* '''-W''' fa in modo che i pacchetti aggiunti su v1 risultino disponibili anche sulle altre macchine virtuali
* <code>'''-W'''</code> fa in modo che i pacchetti aggiunti su v1 risultino disponibili anche sulle altre macchine virtuali;
* '''–mem 256''' aumenta la RAM di v1 fino a 256Mb in modo che l'installazione dei pacchetti non si blocchi a causa della poca memoria disponibile.
* <code>'''–mem 256'''</code> aumenta la RAM di v1 fino a 256Mb in modo che l'installazione dei pacchetti non si blocchi a causa della poca memoria disponibile.


Fatto questo, basterà lanciare i classici comandi:
Fatto questo, basterà lanciare i classici comandi:
Riga 164: Riga 163:
# apt-get install nomepacchetto
# apt-get install nomepacchetto
</pre>
</pre>
per l'installazione, come in una normalissima macchina debian-based.
per l'installazione, come in una normalissima macchina Debian-based.




= Netkit labs =
== Netkit labs ==
Settare un lab in netkit significa predisporre, con pochi passaggi, lo “scheletro” di una infrastruttura di rete completa, avviabile (per intero) con un unico comando.
Settare un lab in netkit significa predisporre, con pochi passaggi, lo “scheletro” di una infrastruttura di rete completa, avviabile (per intero) con un unico comando.


Riga 186: Riga 185:
</pre>
</pre>


in questo modo sonostate create delle directory aventi i nomi dell macchine virtuali che comporranno il nostro lab e i relativi script di avvio di ognuna di esse.
in questo modo sono state create delle directory aventi i nomi delle macchine virtuali che comporranno il nostro lab e i relativi script di avvio di ognuna di esse.


Inoltre è stato creato il file '''lab.conf''' che conterrà le impostazioni di base del network:
Inoltre è stato creato il file <code>'''lab.conf'''</code> che conterrà le impostazioni di base del network:
<pre>
<pre>
LAB_DESCRIPTION="A simple network with firewall, server and two clients"
LAB_DESCRIPTION="A simple network with firewall, server and two clients"
Riga 207: Riga 206:


dove:
dove:
* '''pc1[0]=“A”''' —→ la scheda eth0 del pc1 si appoggia allo switch virtuale A
* <code>'''pc1[0]=“A”'''</code> —→ la scheda eth0 del pc1 si appoggia allo switch virtuale A
* '''pc2[0]=“A”''' —→ la scheda eth0 del pc2 si appoggia allo switch virtuale A
* <code>'''pc2[0]=“A”'''</code> —→ la scheda eth0 del pc2 si appoggia allo switch virtuale A
* '''fw[0]=“A”''' —→ la scheda eth0 del fw si appoggia allo switch virtuale A
* <code>'''fw[0]=“A”'''</code> —→ la scheda eth0 del fw si appoggia allo switch virtuale A
* '''fw[1]=“B”''' —→ la scheda eth0 del fw si appoggia allo switch virtuale B
* <code>'''fw[1]=“B”'''</code> —→ la scheda eth0 del fw si appoggia allo switch virtuale B
* '''server1[0]=“A”''' —→ la scheda eth0 del server1 si appoggia allo switch virtuale A
* <code>'''server1[0]=“A”'''</code> —→ la scheda eth0 del server1 si appoggia allo switch virtuale A


Nei files '''.startup''', invece, andranno tutti quei comandi che si volessero eseguire dopo l'avvio della macchina virtuale. Ad esempio:
Nei files <code>'''.startup'''</code>, invece, andranno tutti quei comandi che si volessero eseguire dopo l'avvio della macchina virtuale. Ad esempio:


file fw.startup:
file fw.startup:
Riga 221: Riga 220:
</pre>
</pre>


Le directory aventi il nome delle macchine virtuali saranno l'equivalente della directory '''/''' per ognuna di esse.
Le directory aventi il nome delle macchine virtuali saranno l'equivalente della directory <code>'''/'''</code> per ognuna di esse.


Se quindi volessimo impostare per le macchine di quel lab un determinato server dns:
Se quindi volessimo impostare per le macchine di quel lab un determinato server dns:
Riga 240: Riga 239:
le macchine virtuali facenti parte del lab si apriranno una dopo l'altra automaticamente.
le macchine virtuali facenti parte del lab si apriranno una dopo l'altra automaticamente.


Nella directory in cui viene lanciato il comando lstart verranno creati i files relativi alle macchine virtuali ed ai loro logs.
Nella directory in cui viene lanciato il comando <code>lstart</code> verranno creati i files relativi alle macchine virtuali ed ai loro logs.
Questo, ovviamente, permette di mantenere una “indipendenza” tra le macchine e lo scheletro dell'infrastruttura.
Questo, ovviamente, permette di mantenere una “indipendenza” tra le macchine e lo scheletro dell'infrastruttura.




P.S. al momento di scrivere questa guida è presente (ma già segnalato agli sviluppatori) un bug che impedisce di avviare il lab con il flag '''-d''' a meno di non applicare questa patch[http://list.dia.uniroma3.it/pipermail/netkit.users/attachments/20090525/cb061526/attachment.bin] al file '''lcommon''':
P.S. al momento di scrivere questa guida è presente (ma già segnalato agli sviluppatori) un bug che impedisce di avviare il lab con il flag <code>'''-d'''</code> a meno di non applicare questa patch [http://list.dia.uniroma3.it/pipermail/netkit.users/attachments/20090525/cb061526/attachment.bin] al file <code>'''lcommon'''</code>:
<pre>
<pre>
$ wget http://list.dia.uniroma3.it/pipermail/netkit.users/attachments/20090525/cb061526/attachment.bin
$ wget http://list.dia.uniroma3.it/pipermail/netkit.users/attachments/20090525/cb061526/attachment.bin
Riga 257: Riga 256:
</pre>
</pre>


La versione 2.6 di netkit è affeta da un bug [http://list.dia.uniroma3.it/pipermail/netkit.users/2008-February/000342.html] [http://list.dia.uniroma3.it/pipermail/netkit.users/2008-February/000349.html] che si manifesta quando si dichiara una vm con più dispositivi di rete ed uno di questi ha tap come dominio di collisione, gli sviluppatori hanno rilasciato la patch [http://list.dia.uniroma3.it/pipermail/netkit.users/attachments/20080202/f21faaa6/tap-not-first.obj]:
La versione 2.6 di netkit è affetta da un bug [http://list.dia.uniroma3.it/pipermail/netkit.users/2008-February/000342.html] [http://list.dia.uniroma3.it/pipermail/netkit.users/2008-February/000349.html] che si manifesta quando si dichiara una vm con più dispositivi di rete ed uno di questi ha tap come dominio di collisione, gli sviluppatori hanno rilasciato la patch [http://list.dia.uniroma3.it/pipermail/netkit.users/attachments/20080202/f21faaa6/tap-not-first.obj]:
<pre>
<pre>
$ wget http://list.dia.uniroma3.it/pipermail/netkit.users/attachments/20080202/f21faaa6/tap-not-first.obj
$ wget http://list.dia.uniroma3.it/pipermail/netkit.users/attachments/20080202/f21faaa6/tap-not-first.obj