VirtualBox: creazione di una rete virtuale: differenze tra le versioni

nessun oggetto della modifica
(Modifiche minori: aggiunta di un link, segnalazione versioni compatibili)
Nessun oggetto della modifica
Riga 11: Riga 11:
Per la configurazione dei repository di VirtualBox e per l'installazione del software si segua ad esempio questa guida: [[Installare Virtualbox su un server Debian senza X]]
Per la configurazione dei repository di VirtualBox e per l'installazione del software si segua ad esempio questa guida: [[Installare Virtualbox su un server Debian senza X]]
<br/>
<br/>
E' inoltre necessario installare il pacchetto [http://packages.debian.org/lenny/bridge-utils bridge-utils] presente nei repository standard di Debian.
È inoltre necessario installare il pacchetto [http://packages.debian.org/lenny/bridge-utils bridge-utils] presente nei repository standard di Debian.


== Installazione delle macchine virtuali ==
== Installazione delle macchine virtuali ==
Riga 19: Riga 19:
Verosimilmente la macchina host è dotata di un solo dispositivo, supponiamo eth0. Per i nostri scopi abbiamo bisogno di aggiungere altre quattro interfacce. Per far questo ci vengono in aiuto i comandi [http://linux.die.net/man/8/brctl brctl] e [http://linux.die.net/man/8/tunctl tunctl]. Il primo permette di gestire [http://it.wikipedia.org/wiki/Bridge_(informatica) bridge virtuali], ossia dispositivi in grado di collegare più interfacce fra loro in maniera simile a quanto fatto da un [http://it.wikipedia.org/wiki/Hub_(informatica) hub]. Il secondo permette di gestire [http://it.wikipedia.org/wiki/TUN/TAP interfacce ethernet virtuali] le quali saranno poi collegate ai bridge opportuni.
Verosimilmente la macchina host è dotata di un solo dispositivo, supponiamo eth0. Per i nostri scopi abbiamo bisogno di aggiungere altre quattro interfacce. Per far questo ci vengono in aiuto i comandi [http://linux.die.net/man/8/brctl brctl] e [http://linux.die.net/man/8/tunctl tunctl]. Il primo permette di gestire [http://it.wikipedia.org/wiki/Bridge_(informatica) bridge virtuali], ossia dispositivi in grado di collegare più interfacce fra loro in maniera simile a quanto fatto da un [http://it.wikipedia.org/wiki/Hub_(informatica) hub]. Il secondo permette di gestire [http://it.wikipedia.org/wiki/TUN/TAP interfacce ethernet virtuali] le quali saranno poi collegate ai bridge opportuni.


Supponendo che l'IP del router fisico al quale siamo collegati sia 192.168.1.1, e per evitare eventuali conflitti nel routing dei pacchetti, vengono create le seguenti due sottoreti: 10.1.1.0/24 e 10.1.2.0/24. Il primo bridge ''br0'' con indirizzo 10.1.1.1, il secondo ''br1'' 10.1.2.1.
Supponendo che l'IP del router fisico al quale siamo collegati sia <code>192.168.1.1</code>, e per evitare eventuali conflitti nel routing dei pacchetti, vengono create le seguenti due sottoreti: <code>10.1.1.0/24</code> e <code>10.1.2.0/24</code>. Il primo bridge <code>''br0''</code> con indirizzo <code>10.1.1.1</code>, il secondo <code>''br1''</code> <code>10.1.2.1</code>.


Una volta creati i bridge si procede alla creazione delle interfacce virtuali ''tap0 tap1 tap2'' e ''tap3''. ''tap0'' e ''tap1'' appartengono al server, ''tap2'' al primo client e ''tap3'' al secondo. ''tap0'' è collegato a ''br0'', e attraverso di questo potrà comunicare con l'host (e con la rete esterna). ''tap1'', ''tap2'' e ''tap3'' sono collegate a ''br1'' attraverso il quale viene garantita la connessione fra i client ed il server. Gli indirizzi IP dei dispositivi TAP saranno poi configurati all'interno delle macchine virtuali.
Una volta creati i bridge si procede alla creazione delle interfacce virtuali <code>''tap0 tap1 tap2''</code> e <code>''tap3''</code>. <code>''tap0''</code> e <code>''tap1''</code> appartengono al server, <code>''tap2''</code> al primo client e <code>''tap3''</code> al secondo. <code>''tap0''</code> è collegato a <code>''br0''</code>, e attraverso di questo potrà comunicare con l'host (e con la rete esterna). <code>''tap1''</code>, <code>''tap2''</code> e <code>''tap3''</code> sono collegate a <code>''br1''</code> attraverso il quale viene garantita la connessione fra i client ed il server. Gli indirizzi IP dei dispositivi TAP saranno poi configurati all'interno delle macchine virtuali.
Di seguito un'immagine chiarificatrice sullo schema in oggetto.
Di seguito un'immagine chiarificatrice sullo schema in oggetto.


Riga 30: Riga 30:




Creazione di un'interfaccia virtuale chiamata ''tap0'' disponibile solo per nomeUtente:
Creazione di un'interfaccia virtuale chiamata <code>''tap0''</code> disponibile solo per nomeUtente:
<pre>
<pre>
tunctl -t tap0 -u nomeUtente
# tunctl -t tap0 -u nomeUtente
</pre>
</pre>




Attivazione dell'interfaccia ''tap0'':
Attivazione dell'interfaccia <code>''tap0''</code>:
<pre>
<pre>
ip link set up dev tap0
# ip link set up dev tap0
</pre>
</pre>




Creazione di un bridge virtuale chiamato ''br0'':
Creazione di un bridge virtuale chiamato <code>''br0''</code>:
<pre>
<pre>
brctl addbr br0
# brctl addbr br0
</pre>
</pre>




Aggiunta di ''tap0'' a ''br0'':
Aggiunta di <code>''tap0''</code> a <code>''br0''</code>:
<pre>
<pre>
brctl addif br0 tap0
# brctl addif br0 tap0
</pre>
</pre>




Attivazione del bridge ''br0'':
Attivazione del bridge <code>''br0''</code>:
<pre>
<pre>
ip link set up dev br0
# ip link set up dev br0
</pre>
</pre>




Assegnazione dell'indirizzo 10.1.1.1 con netmask 255.255.255.0 a ''br0'':
Assegnazione dell'indirizzo <code>10.1.1.1</code> con netmask <code>255.255.255.0</code> a <code>''br0''</code>:
<pre>
<pre>
ip addr add 10.1.1.1/24 dev br0
# ip addr add 10.1.1.1/24 dev br0
</pre>
</pre>




Instradamento dei pacchetti diretti a 10.1.1.0 su ''br0'':
Instradamento dei pacchetti diretti a <code>10.1.1.0</code> su <code>''br0''</code>:
<pre>
<pre>
ip route add 10.1.1.0/24 dev br0
# ip route add 10.1.1.0/24 dev br0
</pre>
</pre>


Riga 74: Riga 74:


<pre>
<pre>
tunctl -t tap1 -u nomeUtente
# tunctl -t tap1 -u nomeUtente
tunctl -t tap2 -u nomeUtente
# tunctl -t tap2 -u nomeUtente
tunctl -t tap3 -u nomeUtente
# tunctl -t tap3 -u nomeUtente
ip link set up dev tap1
# ip link set up dev tap1
ip link set up dev tap2
# ip link set up dev tap2
ip link set up dev tap3
# ip link set up dev tap3
brctl addbr br1
# brctl addbr br1
brctl addif br1 tap1
# brctl addif br1 tap1
brctl addif br1 tap2
# brctl addif br1 tap2
brctl addif br1 tap3
# brctl addif br1 tap3
ip link set up dev br1
# ip link set up dev br1
ip addr add 10.1.2.1/24 dev br1
# ip addr add 10.1.2.1/24 dev br1
</pre>
</pre>


== Configurazione delle macchine virtuali ==
== Configurazione delle macchine virtuali ==


Si utilizzi la GUI di virtualbox per assegnare ''tap0'' e ''tap1'' al server, ''tap2'' al primo client e ''tap3'' al secondo. Si rimanda alla documentazione di Virtualbox per la configurazione delle interfacce di rete delle macchine guest come [http://www.virtualbox.org/manual/UserManual.html#id2513808 Schede con bridge].
Si utilizzi la GUI di virtualbox per assegnare <code>''tap0''</code> e <code>''tap1''</code> al server, <code>''tap2''</code> al primo client e <code>''tap3''</code> al secondo. Si rimanda alla documentazione di Virtualbox per la configurazione delle interfacce di rete delle macchine guest come [http://www.virtualbox.org/manual/UserManual.html#id2513808 Schede con bridge].




Riga 235: Riga 235:


Per evitare di digitare ogni volta i comandi di creazione e eliminazione delle interfacce virtuali è possibile realizzare un semplice script bash.
Per evitare di digitare ogni volta i comandi di creazione e eliminazione delle interfacce virtuali è possibile realizzare un semplice script bash.
Si crei dunque un file di nome ''initmachines.sh'' e si copi all'interno il seguente codice:
Si crei dunque un file di nome <code>''initmachines.sh''</code> e si copi all'interno il seguente codice:


<pre>
<pre>
Riga 300: Riga 300:


<pre>
<pre>
sh /pathDelloScript/initmachines.sh start
# sh /pathDelloScript/initmachines.sh start
</pre>
</pre>


Riga 307: Riga 307:


<pre>
<pre>
sh /pathDelloScript/initmachines.sh stop
# sh /pathDelloScript/initmachines.sh stop
</pre>
</pre>
----
----
[[Categoria:Networking]]
[[Categoria:Networking]]
[[Categoria:Server]]
[[Categoria:Server]]
1 508

contributi