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

m
nessun oggetto della modifica
mNessun oggetto della modifica
mNessun oggetto della modifica
Riga 1: Riga 1:
{{Virtualbox}}
{{Virtualbox}}
== Introduzione ==
== Introduzione ==
Scopo di questa guida è illustrare i passi necessari ad ottenere un semplice laboratorio virtuale a scopo di studio così strutturato: tre macchine virtuali, una con funzioni di server e le altre due con funzioni di client.  
Scopo di questa guida è illustrare i passi necessari ad ottenere un semplice laboratorio virtuale a scopo di studio così strutturato: tre macchine virtuali, una con funzioni di server e le altre due con funzioni di client.<br/>
Il server è dotato di due interfacce di rete, una verso l'host, attraverso il quale verrà garantita la navigazione in internet, e l'altra verso una rete interna visibile solamente ai client.  
Il server è dotato di due interfacce di rete, una verso l'host, attraverso il quale verrà garantita la navigazione in internet, e l'altra verso una rete interna visibile solamente ai client.<br/>
I due client sono dotati di interfacce di rete singole collegate alla seconda interfaccia del server.
I due client sono dotati di interfacce di rete singole collegate alla seconda interfaccia del server.


Riga 12: Riga 12:
Il software utilizzato è [http://www.virtualbox.org VirtualBox], installato dai repository degli sviluppatori ed al momento della stesura della guida alla versione 3.0.8. Nonostante la versione 3.0 offra la possibilità di fare quanto segue in maniera automatica, si sceglie comunque di procedere manualmente per meglio comprendere quanto accade.
Il software utilizzato è [http://www.virtualbox.org VirtualBox], installato dai repository degli sviluppatori ed al momento della stesura della guida alla versione 3.0.8. Nonostante la versione 3.0 offra la possibilità di fare quanto segue in maniera automatica, si sceglie comunque di procedere manualmente per meglio comprendere quanto accade.


Per la configurazione dei repository di VirtualBox e per l'installazione del software si seguano le guide [[VirtualBox: installazione]], [[VirtualBox: configurazione]] e [[VirtualBox: amministrazione da terminale]].
Per la configurazione dei [[repository]] di VirtualBox e per l'installazione del software si seguano le guide [[VirtualBox: installazione]], [[VirtualBox: configurazione]] e [[VirtualBox: amministrazione da terminale]].


È 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.
Riga 30: Riga 30:




I seguenti comandi vanno impartiti da utente ''root''.
I seguenti comandi vanno impartiti da utente [[root]].




Creazione di un'interfaccia virtuale chiamata <code>''tap0''</code> 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>


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


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


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


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


Riga 65: Riga 65:
Assegnazione dell'indirizzo <code>10.1.1.1</code> con netmask <code>255.255.255.0</code> a <code>''br0''</code>:
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 <code>10.1.1.0</code> su <code>''br0''</code>:
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 77: Riga 76:


<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>


Riga 164: Riga 163:


<pre>
<pre>
/etc/init.d/networking restart
# /etc/init.d/networking restart
</pre>
</pre>


Riga 171: Riga 170:


<pre>
<pre>
echo 1 > /proc/sys/net/ipv4/ip_forward
# echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
# iptables -F
iptables -A FORWARD -i eth0 -o br0 -j ACCEPT
# iptables -A FORWARD -i eth0 -o br0 -j ACCEPT
iptables -A FORWARD -i br0 -o eth0 -j ACCEPT
# iptables -A FORWARD -i br0 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
</pre>
</pre>


Riga 185: Riga 184:
=== Server ===
=== Server ===
<pre>
<pre>
ping 192.168.1.1
$ ping 192.168.1.1
ping 10.1.1.1
$ ping 10.1.1.1
ping 10.1.2.1
$ ping 10.1.2.1
ping 10.1.2.3
$ ping 10.1.2.3
ping 10.1.2.4
$ ping 10.1.2.4
</pre>
</pre>


=== Client 1 ===
=== Client 1 ===
<pre>
<pre>
ping 10.1.2.1
$ ping 10.1.2.1
ping 10.1.2.2
$ ping 10.1.2.2
ping 10.1.2.4
$ ping 10.1.2.4
</pre>
</pre>


=== Client 2 ===
=== Client 2 ===
<pre>
<pre>
ping 10.1.2.1
$ ping 10.1.2.1
ping 10.1.2.2
$ ping 10.1.2.2
ping 10.1.2.3
$ ping 10.1.2.3
</pre>
</pre>


Riga 210: Riga 209:


<pre>
<pre>
echo 0 > /proc/sys/net/ipv4/ip_forward
# echo 0 > /proc/sys/net/ipv4/ip_forward
ip link set down dev tap0
# ip link set down dev tap0
ip link set down dev tap1
# ip link set down dev tap1
ip link set down dev tap2
# ip link set down dev tap2
ip link set down dev tap3
# ip link set down dev tap3
brctl delif br0 tap0
# brctl delif br0 tap0
brctl delif br1 tap1
# brctl delif br1 tap1
brctl delif br1 tap2
# brctl delif br1 tap2
brctl delif br1 tap3
# brctl delif br1 tap3
ip link set down dev br0
# ip link set down dev br0
ip link set down dev br1
# ip link set down dev br1
brctl delbr br0
# brctl delbr br0
brctl delbr br1
# brctl delbr br1
</pre>
</pre>


== Gestire le interfacce tramite Script ==
== Gestire le interfacce tramite Script ==
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 <code>''initmachines.sh''</code> 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:


Riga 292: Riga 291:


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


Riga 299: Riga 298:


<pre>
<pre>
# sh /pathDelloScript/initmachines.sh stop
# sh /pathDelloScript/initmachines.sh stop
</pre>
</pre>
6 999

contributi