AlcaLabs

[[docs:netkit]]

Traccia: » Netkit: una rete virtuale

Ti trovi qui: Alca Labs » docs » Netkit: una rete virtuale

Login

Non sei ancora collegato! Inserisci il tuo nome utente e la tua password per autenticarti. E' necessario che il tuo browser abbia i cookie abilitati.

Entra

Hai dimenticato la password? Richiedine una nuova: Invia nuova password

Netkit: una rete virtuale

In modo semplice e piuttosto veloce, Netkit permette di creare delle reti di macchine virtuali.

Senza alcuna patch al kernel, poiché Netkit è self-contained, è possibile creare tutto ciò che occorre per formare una rete: host, router, switch, bridge. Con pochi comandi e con grande facilità si potranno emulare le reti che si stanno progettando o che si vuole testare.

Requisiti

  • Linux 2.4 o 2.6 su un x86 (è consigliata una CPU con frequenza maggiore di 600MHz)
  • circa 10 MB di RAM per ogni macchina virtuale
  • circa 600 MB di spazio sul disco per contenere netkit

E' consigliato avere anche X, perché ogni macchina virtuale verrà lanciata in una console (tipicamente xterm, ma si può cambiare l'impostazione in netkit.conf). In alternativa, se la macchina virtuale ha un'interfaccia TAP oppure è in ascolto su una porta, si potrà accedere ad essa mediante telnet.

Installazione

Il netkit è suddiviso in tre pacchetti:

Per scaricare la versione corrente fare riferimento alla pagina ufficiale di Download

I pacchetti vanno decompressi nella stessa directory, ad esempio /usr/local/netkit2.

Prima di utilizzare netkit, è necessario impostare le variabili di ambiente (che ovviamente si possono definire nel proprio ~/.bashrc):

$ export NETKIT_HOME=/usr/local/src/netkit2
$ export MANPATH=:$NETKIT_HOME/man
$ export PATH=$NETKIT_HOME/bin:$PATH

Per verificare di avere tutto il necessario per utilizzare netkit, avviate lo script:

$ ./check_configuration.sh

Eventualmente dovrete installare alcuni pacchetti come ad esempio uml-utilities.

La configurazione delle macchine è contenuta nel file di configurazione $NETKIT_HOME/netkit.conf, in cui si possono impostare ad esempio la quantità di memoria assegnata ad ogni macchina, il numero di interfacce a disposizione, ecc.

Comandi utili

vstart

$ vstart <nome_macchina> --ethN=<nome_hub>

Avvia una nuova macchina virtuale dal nome (univoco per utente) <nome_macchina> e con un interfaccia di rete N collegata all'hub (quindi al dominio di collisione) <nome_hub>. Sia il nome della macchina e che dell'hub sono stringhe alfanumeriche.

E' possibile collegare la macchina virtuale e quella host attraverso un'interfaccia TAP, scrivendo il <nome_hub> nella forma:

--ethN=tap,TAP-ADDRESS,GUEST-ADDRESS

dove TAP-ADDRESS è l'indirizzo IP dell'interfaccia dal lato della macchina host e GUEST-ADDRESS è l'indirizzo IP dell'interfaccia dal lato della macchina virtuale. TAP-ADDRESS e GUEST-ADDRESS devono trovarsi nella stessa (sub)net.

Si può anche porre in ascolto la macchina virtuale su una determinata porta, evitando così l'avvio di una nuova console, con l'opzione:

--port=<numero_di_porta>

vlist

$ vlist

Visualizza la lista delle macchine virtuali in esecuzione, le interfacce di rete e i domini di collisione

USER             VHOST               PID       SIZE  INTERFACES
haku             pc1               20022      12500  eth0 @ hub0

Total virtual machines:       1    (you),        1    (all users).
Total consumed memory:    12500 KB (you),    12500 KB (all users).

vhalt

vhalt [nome_macchina]

Invia il segnale di halt alla macchina: è come eseguire il comando in console.

vcrash

vcrash [nome_macchina]

Spegne la macchina improvvisamente, come se fosse stato staccato il cavo della corrente (al riavvio vengono controllati i file system). E' utile in caso di lock.

Esempi

Creare una macchina virtuale

$ vstart pc1 --eth0=hub0

In questo modo è stata creata la macchina pc1 con il dispositivo di rete eth0 collegato al dominio di collisione hub0.

Due host sullo stesso dominio di collisione

$ vstart pc1 --eth0=hub0
$ vstart pc2 --eth0=hub0

Tre host su differenti domini di collisione e un router

$ vstart pc1 --eth0=hub0
$ vstart pc2 --eth0=hub1
$ vstart pc3 --eth0=hub1
$ vstart router1 --eth0=hub0 --eth1=hub1

Tre host su differenti domini di collisione e un bridge

$ vstart pc1 --eth0=hub1
$ vstart pc2 --eth0=hub1
$ vstart pc3 --eth0=hub1
$ vstart bridge1 --eth0=hub0 --eth1=hub1

Link