Einrichten eines Virtuellen Netzwerks
(für per qemu emulierte virtuelle maschinen)
Diese Anleitung baut auf dem Qemu + KQemu
HowTo? auf:
http://wiki.kanotix.net/CoMa.php?CoMa=Qemu_+_KQemu_Installation_HowTo∞
Leider bietet Qemu keine vollständige Unterstützung für ein virtuelles Netzwerk.
So ist es z.B. nicht möglich, "ping" ins Internet zu nutzen, da es root-Rechte erfordern würde (und wir qemu als user benutzen wollen).
Auch ist es nicht so ohne weiteres möglich mehrere virtuelle Maschinen untereinander und mit dem Internet kommunizieren zu lassen.
Um den virtuellen Maschinen eine vollständige TCP/IP-Anbindung zu geben erstellen wir unser eigenes virtuelles Netzwerk.
Dazu benutzen wir das Programm
vde
(virtual distributed ethernet).
vde ist im Debian repository (v. 1.5.9-3).
Allerdings haben sich die Kommandozeilen-Parameter in qemu 0.8 geändert, so dass wir eine neuere Version von vde brauchen.
D.h. wir kompilieren uns vde 2.0.2 aus den Quellen selbst:
Herunterladen der vde Quellen:
:code:$ wget
:∞:
Im tmp Verzeichnis auspacken:
:code:$ cd /tmp/
$ tar xfvj /home/madblueimp/vde-2.0.2.tar.
bz2?:code:
Konfigurieren und kompilieren:
:code:$ ./configure
$ make:code:
Als root installieren:
:code:$ su
# make install:code:
Erstellen eines Skriptes, um das virtuelle Netzwerk und Routing
beim Systemstart einzurichten:
:code:# cd /etc/init.d
# vi vde:code:
Folgende Zeilen eintragen und speichern:
:code:#!/bin/sh
# /etc/init.d/vde: setup/shutdown a virtual distributed ethernet
#
# description: virtual distributed ethernet
#
case "$1" in
-
- "virtual distributed ethernet setup"
# Start the virtual ethernet as daemon:
/usr/local/bin/vde_switch -tap
tap0? -daemon -sock /tmp/vde.ctl
# To run your virtual ethernet in hub mode, use the -hub option instead:
# /usr/local/bin/vde_switch -hub -tap
tap0? -daemon -sock /tmp/vde.ctl
# Wait a little for the virtual network to setup:
/bin/sleep 2
# Assign an IP to the virtual interface
tap0?:
/sbin/ifconfig
tap0? 192.168.254.254
# Make it accessible for everyone:
/bin/chmod -R 777 /tmp/vde.ctl
# Activate routing to the ethernet:
- "1" > /proc/sys/net/ipv4?/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o lan0? -j MASQUERADE
;;
-
- "virtual distributed ethernet shutdown"
# Flush the POSTROUTING list in iptables:
/sbin/iptables -F POSTROUTING -t nat
# Shutdown the virtual network:
/sbin/ifconfig
tap0? down >/dev/null 2>&1
# Kill the vde daemon:
/usr/bin/killall vde_switch >/dev/null 2>&1
;;
- )
- "Usage: $0 {start|stop}"
- 1
esac
exit 0:code:
Danach das Skript noch ausführbar machen:
:code:# chmod +x vde:code:
Dann ins Verzeichnis mit den im Runlevel 5 zu startenden Scripten wechseln:
:code:# cd /etc/
rc5?.d:code:
Und einen symbolischen Link zum Start des Skriptes anlegen:
"S" steht hier für "Start", d.h. der Parameter "start" wird an das Skript übergeben.
"20" steht für die Prioritäts-Reihenfolge gegenüber anderen Skripten.
:code:# ln -s /etc/init.d/vde S20vde:code:
Nach einem Neustart sollte das virtuelle Netzwerk verfügbar sein.
Durch die Routing Regel haben die virtuellen Maschinen auch Zugriff auf das Internet.
Bei mir wird das aber erstmal durch die Firewall Regeln geblockt.
Also Start von Guarddog:
:code:$ kdesu guarddog:code:
Dann Anlegen einer neuen Netzwerkzone (ich habe sie VLAN genannt) und
das gesammte virtuelle LAN mit der Netzwerkadresse 192.168.254.0/255.255.255.0 hinzufügen.
Dieses noch per Häkchen mit den gewünschten Netzwerken verbinden (Internet, ...).
Im Reiter Protokoll wiederum festlegen, welche Dienste ins Internet (oder anderen Zonen)
möglich sein sollen ("von Internet für VLAN bereitgestellt").
Also z.B. Netzwerk->DNS und Ping, Dateiübertragung->HTTP, HTTPS und FTP, usw.
Um jetzt die per QEMU emulierten Maschinen beim Starten mit dem virtuellen Netzwerk
zu verbinden gibt es einen Wrapper-Befehl, der folgendermassen benutzt wird:
:code:$ vdeqemu -snapshot -cdrom /media/
sda7?/ISO/Kanotix/KANOTIX-2005-04.iso -m 265 -boot d:code:
vdeqemu übergibt qemu als Parameter das virtuelle Netzwerk als Interface.
Man lässt also die Netzwerk Optionen (-net) weg und kann ansonsten die gleichen Parameter
verwenden, wie beim direkten Aufruf von qemu.
In JQEMU (einer grafischen Benutzeroberfläche für qemu) kann man in den Optionen (alt-o)
den Befehl zum Aufruf von qemu in vdeqemu ändern, und somit vde auch in JQEMU nutzen.
Das einzige was jetzt noch fehlt ist die Netzwerk-Konfiguration der Clients.
Dies gelingt leider nicht automatisch, da für das virtuelle Netzwerk kein DHCP-Server
vorhanden ist.
Folgende Einstellungen müssen in den Clients vorgenommen werden:
:code:IP: 192.168.254.[1-253] (also z.B. 192.168.254.1)
Netmask: 255.255.255.0
Broadcast: 192.168.254.255
Gateway: 192.168.254.254
DNS-Server: Wie im Host, bzw.
code ∞:
So das war's. Jetzt haben wir ein virtuelles Netzwerk und können munter
Samba-Konfigurationen, Firewall-Regeln und andere Dinge testen, ohne einen
zweiten Rechner laufen lassen zu müssen.
Diese Anleitung wurde mit freundlicher Genehmigung des Autors ;) hier entnommen:
https://blueimp.net/forum/viewtopic.php?t=230#4564∞