qemu, kvm, xen & libvirtHauptseite | Über | Hilfe | FAQ | Spezialseiten | Anmelden

Druckversion | Impressum | Datenschutz

KVM QEMU Internet network bridge bridging nat, Virtuelle Netzwerke, Slirp, TUN/TAP, bridge-utils

(Link zu dieser Seite als [[QEMU-KVM-Buch/ Netzwerkoptionen/ Virtuelle Netzwerke konfigurieren]])

<<<|###| >>> | English

Warnke, Ritzauqemu-kvm & libvirt 4. Auflage 2010 ISBN: 978-3-8370-0876-0 276 Seiten,  27,27 EURBestellen
Warnke, Ritzau
qemu-kvm & libvirt
4. Auflage 2010
ISBN: 978-3-8370-0876-0
276 Seiten, 27,27 EUR
Bestellen

Inhaltsverzeichnis

[bearbeiten] Virtuelle Netzwerke

QEMU und die Kernel-based Virtual Machine unterstützen Netzwerkverbindungen zwischen dem Gast- und dem Host-System. Laufen mehrere Instanzen, sind auch Netzwerkverbindungen zwischen den Gast-Systemen möglich.

[bearbeiten] Netzwerkkarten

Eine virtuelle Netzwerkkarte (Network Interface Card) wird mit der Option -net nic konfiguriert.

Host ~$ qemu-system-x86_64 Platte.img -net nic

Im QEMU-Monitor informiert der Befehl info network über VLANs der Instanz und die zugehörigen Devices. Ein VLAN ist in QEMU ein virtueller HUB, an dem virtuelle Netzwerk-Karten angeschlossen werden. VLANs in QEMU sind nicht zu verwechseln mit IEEE 802.1q. In diesem Beispiel ist die Instanz mit einem virtuellen Netzwerk (VLAN 0) verbunden. Dazu wird eine virtuelle Netzwerkkarte (NE2000 PCI) mit der Default-MAC-Adresse 52:54:00:12:34:56 zur Verfügung gestellt.

(qemu) info network
VLAN 0 devices:
  user.0: net=10.0.2.0, restricted=n
  e1000.0: model=e1000,macaddr=52:54:00:12:34:56

Die Option -net nic ist per Default aktiviert und kann daher weggelassen werden.

Host ~$ qemu-system-x86_64 Platte.img

Mehrere Netzwerkkarten werden durch mehrere -net nic emuliert. Bei jeder zusätzlichen Netzwerkkarte erhöht sich die letzte Stelle der Mac-Adresse um eins.

Host ~$ qemu-system-x86_64 Platte.img -net nic -net nic -net nic
(qemu) info network
VLAN 0 devices:
  e1000.0: type=nic,model=e1000,macaddr=52:54:00:12:34:56
  e1000.1: type=nic,model=e1000,macaddr=52:54:00:12:34:57
  e1000.2: type=nic,model=e1000,macaddr=52:54:00:12:34:58

Im QEMU-Monitor wird mit dem Befehl set_link das virtuelle Netzwerkkabel für die angegebene Netzwerkkarte entfernt (off) oder verbunden (on). Der folgende Befehl zieht das virtuelle Netzwerkkabel heraus.

(qemu) set_link e1000.0 off

Die Verbindung wird wieder hergestellt.

(qemu) set_link e1000.0 on

Soll keine Netzwerkkarte emuliert werden, ist die Option -net none anzuwenden.

Host ~$ qemu-system-x86_64 Platte.img -net none

Die Syntax für die Option -net nic lautet wie folgt:

-net nic[,vlan=n][,macaddr=mac][,model=type] \
[,name=str][,addr=str][,vectors=v]

Der Parameter vlan=n ist bei der Verwendung von mehreren Netzwerkkarten anzugeben und definiert das VLAN. Der Default-Wert ist gleich 0. Mit dem Parameter model lassen sich Netzwerkkarten einstellen. Je nach Prozessor-Architektur werden unterschiedliche Netzwerkkarten emuliert. Alle verfügbaren Netzwerkkarten werden mit -net nic,model=? aufgelistet.

Host ~$ qemu-system-x86_64 -net nic,model=?
qemu: Supported NIC models: ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio

In diesem Beispiel wird die Karte RTL8139 emuliert.

Host ~$ qemu-system-x86_64 Platte.img -net nic,model=rtl8139

Der Parameter macaddr gibt eine MAC-Adresse (Media Access Control) vor, die zur eindeutigen Identifikation des Geräts im Netzwerk dient.

Host ~$ qemu-system-x86_64 Platte.img -net nic,macaddr=00:80:AD:3B:3E:4F

Einige Betriebssysteme verwalten Tabellen in denen MAC-Adressen den Netzwerk-Schnittstellen zugeordnet werden. Wird eine MAC-Adresse geändert, funktioniert die zugeordnete Netzwerkkarte nicht mehr. Dann ist die Zuordnungstabelle zu aktualisieren. Unter Ubuntu sind die MAC-Adressen in der Datei /etc/udev/rules.d/70-persistent-net.rules und unter SuSE in der Datei /etc/udev/rules.d/30-net_persistent_names.rules anzupassen. Ältere Ubuntu-Versionen speichern die MAC-Adressen in der Datei /etc/iftab. Diese Datei kann gelöscht werden.

Die Netzwerkkarte kann zur besseren Adressierung mit dem Parameter name=str benannt werden. Im QEMU-Monitor wird mit info network dieser Name angezeigt.

Host ~$ qemu-system-x86_64 Platte.img -net nic,name=nic1
(qemu) info network
VLAN 0 devices:
nic1: model=ne2k_pci,macaddr=52:54:00:12:34:56

Mit den Parametern addr=str und vectors=v lassen sich bei PCI-Netzwerkkarten die PCI-Device-Adresse und deren Anzahl von MSI-X-Vektoren (Message Signaled Interrupts) festlegen. Diese Vorgabe hat zur Zeit keinen Effekt bei virtio-Karten. Mit vectors=0 wird MSI-X deaktiviert.

Wie schon im Abschnitt Virtuelle Hardware beschrieben, werden virtuelle Netzwerkkarten mit den Befehlen pci_add und pci_del hinzugefügt beziehungsweise entfernt. Im folgenden Beispiel wird eine PCI-Netzwerkkarte (e1000) mit der Mac-Adresse 52:54:00:12:34:60 an das VLAN 1 angeschlossen.

(qemu) pci_add auto nic model=e1000,id=nic1,vlan=1,macaddr=52:54:00:12:34:60
OK domain 0, bus 0, slot 4, function 0
(qemu) info network
VLAN 0 devices:
  user.0: type=user,net=10.0.2.0,restrict=off
  pcnet.0: type=nic,model=pcnet,macaddr=52:54:00:12:34:56
VLAN 1 devices:
  e1000.0: type=nic,model=e1000,macaddr=52:54:00:12:34:60
Devices not on any VLAN:

Neben einer oder mehreren virtuellen Netzwerkkarten benötigt man eine virtuelle Netzwerk-Struktur (Kabel, Hubs, Switche, Bridges, Router, Firewalls, Netzwerkdienste,...).

[bearbeiten] User Mode Network Stack

Ein virtuelles Netzwerk, welches ohne Administrator-Rechte im Usermode des Host-Rechners realisiert wird, ist einfach zu konfigurieren. Wird QEMU oder die Kernel-based Virtual Machine ohne Angabe einer Netzwerkoption beziehungsweise mit den Default-Optionen -net nic -net user aufgerufen, wird ein virtuelles Netzwerk (10.0.2.0) mit Firewall und DHCP-Server (10.0.2.2) erzeugt. Der DHCP-Server weist dem Gast-System automatisch eine IP-Adresse ab 10.0.2.15 zu. Auch wird das Routing über das von QEMU bereitgestellte Gateway (10.0.2.2) definiert. Eine Netzwerkkonfiguration ist daher bei den meisten Betriebssystemen nicht notwendig und ein Zugang vom Gast-System nach außen ist sofort verfügbar. Das heißt, wenn das Host-System Zugang zum Internet hat, hat auch das Gast-System automatisch Zugang zum Internet.

Host ~$ qemu-system-x86_64 Platte.img -net nic -net user

Wenn weder für -net nic noch für -net user zusätzliche Parameter notwendig sind, können diese weggelassen werden, da diese Optionen per Default aktiviert sind.

Host ~$ qemu-system-x86_64 Platte.img

Sollen mehrere Netzwerkkarten mit jeweils einem Netzwerk verbunden werden, ist mit dem Parameter -net nic,vlan=n das VLAN für die Netzwerkkarte und den User Mode Network Stack anzugeben. Hier ein Beispiel mit zwei Netzwerkkarten und zwei VLANs.

Host ~$ qemu-system-x86_64 Platte.img -net nic,vlan=0 -net user,vlan=0 \
                        -net nic,vlan=1 -net user,vlan=1

Im QEMU-Monitor informiert der Befehl info network über VLANs der Instanz und die zugehörigen Devices.

(qemu) info network
VLAN 0 devices:
  user.0: net=10.0.2.0, restricted=n
  ne2k_pci.0: model=ne2k_pci,macaddr=52:54:00:12:34:56
VLAN 1 devices:
  user.1: net=10.0.2.0, restricted=n
  ne2k_pci.1: model=ne2k_pci,macaddr=52:54:00:12:34:57

Im QEMU-Monitor lassen sich VLANs mit dem Befehl host_net_remove entfernen. In diesem Beispiel soll das VLAN 1 entfernt werden.

(qemu) host_net_remove 1 user.1
(qemu) info network
VLAN 0 devices:
  user.0: net=10.0.2.0, restricted=n
  ne2k_pci.0: model=ne2k_pci,macaddr=52:54:00:12:34:56
VLAN 1 devices:
  ne2k_pci.1: model=ne2k_pci,macaddr=52:54:00:12:34:57

Mit dem Befehl host_net_add user lassen sich VLANs hinzufügen.

(qemu) host_net_add user vlan=1
(qemu) info network
VLAN 0 devices:
  user.0: net=10.0.2.0, restricted=n
  ne2k_pci.0: model=ne2k_pci,macaddr=52:54:00:12:34:56
VLAN 1 devices:
  ne2k_pci.1: model=ne2k_pci,macaddr=52:54:00:12:34:57
  user.1: net=10.0.2.0, restricted=n

Zur besseren Unterscheidung lassen sich VLANs benennen. In diesem Beispiel werden die VLANs nicht user.0 und user.1 sondern VLANextern und VLANintern benannt.

Host ~$ qemu-system-x86_64 Platte.img \
-net nic,vlan=0 -net user,vlan=0,name=VLANextern \
-net nic,vlan=1 -net user,vlan=1,name=VLANintern

Im QEMU-Monitor werden diese Namen mit dem Befehl info network angezeigt.

(qemu) info network
VLAN 0 devices:
  VLANextern: net=10.0.2.0, restricted=n
  ne2k_pci.0: model=ne2k_pci,macaddr=52:54:00:12:34:56
VLAN 1 devices:
  VLANintern: net=10.0.2.0, restricted=n
  ne2k_pci.1: model=ne2k_pci,macaddr=52:54:00:12:34:57

Per Default wird dem Gast-System das Netzwerk-Segment 10.0.2.0/8 zur Verfügung gestellt. Mit -net user,net=addr[/mask] kann die Netzwerk-Adresse und optional die Netzwerk-Maske angepasst werden. In diesem Beispiel wird dem Gast-System das Netzwerk-Segment 192.168.1.0/24 vorgegeben. Per DHCP erhält das Gast-System die IP-Adresse 192.168.1.15.

Host ~$ qemu-system-x86_64 Platte.img -net nic -net user,net=192.168.1.0/24
(qemu) info network
VLAN 0 devices:
  user.0: net=192.168.1.0, restricted=n
  ne2k_pci.0: model=ne2k_pci,macaddr=52:54:00:12:34:56

Das Host-System ist für das Gast-System über die zweite IP-Adresse (x.x.x.2) im Gast-Netzwerk ansprechbar. Im Default-Netzwerk-Segment (10.0.2.0) ist dies die IP-Adresse 10.0.2.2. Diese IP-Adresse kann mit ping getestet werden. Weiterhin kann man sich auf das Host-System über diese IP-Adresse einloggen. Mit der Option -net user,host=addr lässt sich die IP-Adresse des Host-Systems anpassen.

Host ~$ qemu-system-x86_64 Platte.img -net nic -net user,host=10.0.2.7

Die Firewall der Instanz blockt alle eingehenden Verbindungen in dieses virtuelle Netzwerk ab. Daher kann nicht von außen auf die virtuelle Maschine zugegriffen werden. Das Gast-System ist damit geschützt. Übrigens blockiert QEMU das Internet Control Message Protocol (ICMP) auch nach außen. Das heißt, ein Ping vom Gast-System zum Internet funktioniert nicht. Soll das Gast-System komplett isoliert werden, ist die Option -net user,restrict=y anzuwenden. Ein Einloggen in das Host-Systems über die interne IP-Adresse ist nicht möglich.

Host ~$ qemu-system-x86_64 Platte.img -net nic -net user,restrict=y

Im QEMU-Monitor zeigt der Befehl info network an, ob restrict aktiviert ist.

(qemu) info network
VLAN 0 devices:
  user.0: net=10.0.2.0, restricted=y
  ne2k_pci.0: model=ne2k_pci,macaddr=52:54:00:12:34:56

Die Option -net user,restrict=y beeinträchtigt nicht die nachfolgend beschriebenen Forward-Regeln (-net user,hostfwd und -net user,guestfwd). Weitere Parameter der Option -net user werden im Abschnitt Netzwerkdienste beschrieben.

[bearbeiten] Port-Redirects vom Host-System (hostfwd)

Da das VLAN durch die integrierte Firewall geschützt ist, ist das Gast-System von außen nicht erreichbar. Um auf bestimmte Dienste des Gast-Systems zugreifen zu können, müssen die entsprechenden Ports in der Firewall geöffnet werden. Dies kann im Usermode Network Stack durch Port-Redirects mit der Option -net user,hostfwd=... konfiguriert werden. Dabei wird jeweils ein Port des Gast-Systems auf einen Port des Host-Systems abgebildet. Das bedeutet, dass auf dem Host-System ein Port geöffnet wird, der ein Port des Gast-Systems ist. Die Verwendung von privilegierten Ports (0 - 1024) des Host-System ist nur durch den Benutzer root möglich. Das folgende Beispiel lässt über den Port 12345 des Host-Systems eine SSH-Verbindung (Port 22) auf das Gast-System zu. Dazu muss natürlich auf dem Gast-System ein SSH-Server laufen.

Host ~$ qemu-system-x86_64 Platte.img -net nic -net user,hostfwd=tcp::12345-:22

Mit einem SSH-Client loggt man sich hier am Port 12345 des Host-Systems ein. Die Option -p definiert den Port. Es ist auch ein Einloggen von einem anderen Computer des Netzwerkes in dieses Gast-System möglich. Es muss dann statt localhost die IP-Adresse oder der Rechnername des Host-Systems angegeben werden. Unter Microsoft Windows ist ein Einloggen mit putty oder mit Cygwin möglich. Die Cygwin-Befehle lauten wie ihre Gegenstücke unter Unix/Linux.

Host ~$ ssh -p 12345 root@localhost

Mit SCP unter Unix und Linux beziehungsweise WinSCP unter Microsoft Windows werden Dateien mit dem Gast-System ausgetauscht. Im folgenden Beispiel wird die Datei /etc/fstab des Gast-Systems (Linux) auf das Host-System (Linux) mit scp kopiert.

Host ~$ scp -P 12345 root@localhost:/etc/fstab .

Um sich per Remote Desktop Protocol (siehe http://qemu-buch.de/d/Anhang/_Nützliche_Tools#Remote_Desktop_Protocol) auf ein Gast-System mit Microsoft Windows einloggen zu können, ist jeweils das Port 3389 freizuschalten.

Host ~$ qemu-system-x86_64 Platte.img -net nic -net user,hostfwd=tcp::3389-:3389

Mit rdesktop oder einem anderem RDP-Client verbindet man sich zu dem Gast-System.

Host ~$ rdesktop -g 800x600 -k de localhost

Es können mehrere Port-Redirects konfiguriert werden. Möchte man zum Beispiel die Protokolle HTTP (Port 80) und HTTPs (Port 443) eines auf dem Gast-System laufenden Webservers zur Verfügung stellen, bewerkstelligen dies folgende Optionen. Auf dem Host-System kann im Web-Browser über die URL http://localhost:8080 der HTTP-Port und über die URL https://localhost:8081 der HTTPS-Port des Gast-Systems erreicht werden.

Host ~$ qemu-system-x86_64 Platte.img -net nic \
        -net user,hostfwd=tcp::8080-:80,hostfwd=tcp::8081-:443

Im QEMU-Monitor informiert der Befehl info usernet über die definierten Forward-Regeln.

(qemu) info usernet
VLAN 0 (user.0):
Protocol[State]  FD Source Address Port Dest.Address Port RecvQ SendQ
TCP[HOST_FORWARD] 6              * 8080    10.0.2.15   80     0     0
TCP[HOST_FORWARD] 5              * 8081    10.0.2.15  443     0     0

Weiterhin können im QEMU-Monitor neue Forward-Regeln mit dem Befehl hostfwd_add hinzugefügt werden. Das folgende Beispiel lässt über den Port 12345 des Host-Systems eine SSH-Verbindung (Port 22) auf das Gast-System zu.

(qemu) hostfwd_add tcp::12345-:22

Mit dem Befehl hostfwd_remove werden Forward-Regeln gelöscht.

(qemu) hostfwd_remove tcp::12345

Die allgemeine Syntax für das Port-Redirect per Option -net user,hostfwd lautet wie folgt.

-net user,hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport

Wird weder tcp noch udp als Verbindungstyp angegeben, wird das TCP-Protokoll verwendet. Durch Angabe von hostaddr kann die Forward-Regel an ein definiertes Netzwerk-Interface im Host gebunden werden. Wird guestaddr nicht vorgegeben, wird dessen Wert mit der ersten vom internen DHCP-Server vorgegebenen IP-Adresse belegt (x.x.x.15).

Die allgemeine Syntax für den Befehl hostfwd_add im QEMU-Monitor lautet wie folgt. Zusätzlich zu den Parametern von -net user,hostfw kann hier VLAN-ID angegeben werden. Dies ist bei mehreren virtuellen Netzwerkkarten notwendig (siehe -net nic,vlan=n).

(qemu) hostfwd_add [vlan_id name]   \ 
       [tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport

Die allgemeine Syntax für den Befehl hostfwd_remove ist:

(qemu) hostfwd_remove [vlan_id name] [tcp|udp]:[hostaddr]:hostport

Bei älteren QEMU-Versionen ist für das Port-Redirect die Option -redir zu verwenden.

[bearbeiten] Redirects vom Gast-System (guestfwd)

Mit der Option -net user,guestfwd=[tcp]:server:port-dev wird eine TCP-Verbindung vom Gast-System zu der IP-Adresse (server) und dem Port (port) auf das Character-Device (dev) des Host-Systems weitergeleitet. Diese Option kann mehrfach angegeben werden. Im folgenden Beispiel wird eine TCP-Verbindung vom Gast-System zu der IP-Adresse 10.0.2.1 und dem Port 80 auf stdio umgeleitet. Wird im Gast-System ein HTTP-Request an die IP-Adresse gesendet, erscheint diese Anfrage auf stdio.

Host ~$ qemu-system-x86_64 Platte.img \
-net nic -net user,guestfwd=tcp:10.0.2.1:80-stdio
GET / HTTP/1.0
User-Agent: Wget/1.11.4
Accept: */*
Host: 10.0.2.1
Connection: Keep-Alive

[bearbeiten] TUN/TAP-Network-Interfaces

Der Usermode Network Stack hat einige Einschränkungen. Da sich das Gast-System in einem anderen Netzwerk als das Host-System und hinter einer Firewall befindet, ist ein vollständiger Zugriff auf das Gast-System nicht möglich. Damit Host- und Gast-System ein gemeinsames Netzwerk haben, wird ein zusätzliches Netzwerk-Interface im Host-System benötigt. Dieses zusätzliche Netzwerk-Interface wird durch einen TUN/TAP-Adapter ermöglicht. TUN und TAP sind virtuelle Netzwerk-Kerneltreiber, die Netzwerkgeräte über Software simulieren. TUN simuliert ein Point-to-Point-Netzwerkgerät, während TAP ein Ethernet-Gerät darstellt. Erst durch den TUN/TAP-Adapter des Host-Systems erhält das Gast-System eine vollständige TCP/IP-Anbindung. Der Linuxkernel bietet ab Version 2.1.60 TUN/TAP-Support. Es muss sichergestellt werden, dass das Device /dev/net/tun für den Benutzer, unter dem QEMU läuft, zugänglich ist.

Host ~$ sudo chmod go+rw /dev/net/tun

Notwendig ist das Skript /etc/qemu-ifup, das beim Aufruf von QEMU mit der Option -net tap den TUN/TAP-Adapter eine IP-Adresse zuweist. Diese Datei hat zum Beispiel folgenden Inhalt:

#!/bin/sh
sudo -p "Password for $0:" /sbin/ifconfig $1 10.0.2.100

Die im Skript angegebene IP-Adresse muss sich im gleichen Netzwerksegment wie die IP-Adresse des Gast-Systems befinden, darf aber nicht mit einer vorhandenen IP-Adresse übereinstimmen. Konfiguriert wird ein Netzwerk-Interface mit ifconfig. Dazu sind root-Rechte erforderlich, die im Skript mit dem Befehl sudo vergeben werden. Weiterhin ist das Skript /etc/qemu-ifdown notwendig. Man legt es mit folgenden Inhalt an:

#!/bin/sh
sudo -p "Password for $0:" /sbin/ifconfig $1 down

Beide Skripte werden ausführbar gemacht.

Host ~$ sudo chmod +x /etc/qemu-ifup
Host ~$ sudo chmod +x /etc/qemu-ifdown

QEMU wird mit den Optionen -net nic und -net tap und deren Parameter gestartet.

Host ~$ qemu-system-x86_64 -hda Platte.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0
Password for /etc/qemu-ifup: *****

Das Host-System erhält ein TAP-Device mit der IP-Adresse 10.0.2.100.

Host ~$ ifconfig tap0
tap0 Protokoll:Ethernet ... 
  inet Adresse:10.0.2.100 ...

Damit sich das Gast-System mit dem Host-System zu vernetzen, ist auch im Gast-System die Netzwerkkarte zu konfigurieren.

Gast ~$ sudo ifconfig eth0 10.0.2.101
Gast ~$ ping 10.0.2.100

Im QEMU-Monitor listet der Befehl info network diese Konfiguration auf.

(qemu) info network
VLAN 0 devices:
  tap.0: ifname=tap0,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
  ne2k_pci.0: model=ne2k_pci,macaddr=52:54:00:12:34:56

Im QEMU-Monitor wird mit dem Befehl host_net_remove dieses Interface entfernt.

(qemu) host_net_remove 0 tap.0
Password for /etc/qemu-ifdown: *****
(qemu) info network
VLAN 0 devices:
  ne2k_pci.0: model=ne2k_pci,macaddr=52:54:00:12:34:56

Zum Aktivieren eines TUN/TAP-Network-Interface kann im QEMU-Monitor der Befehl host_net_add tap angewendet werden. Nach diesem Befehl sind die Parameter wie bei -net tap anzugeben.

(qemu) host_net_add tap vlan=0,ifname=tap0
Password for /etc/qemu-ifup: *****
(qemu) info network
VLAN 0 devices:
  ne2k_pci.0: model=ne2k_pci,macaddr=52:54:00:12:34:56
  tap.0: ifname=tap0,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown

Dies ist die vollständige Syntax für die Option -net tap:

-net tap[,vlan=n][,name=name][,fd=h][,ifname=name]                  \
[,script=file][,downscript=dfile][,sndbuf=nbytes][,vnet_hdr=on|off] \
[,vhost=on|off][,vhostfd=h][,vhostforce=on|off]

Dabei wird das TAP-Netzwerk-Interface des Host-Systems mit dem VLAN n verbunden. Es wird das Skript file (Default = /etc/qemu-ifup) für die Aktivierung und das Skript dfile (Default = /etc/qemu-ifdown) für die Deaktivierung verwendet. Soll die Ausführung der Skripte unterbunden werden, ist script=no beziehungsweise downscript=no zu setzen. Mit fd kann ein Handle eines bestehenden TAP-Netzwerk-Interface angegeben werden. Mit der Option sndbuf wird die Größe des Sende-Puffers begrenzt. Der Default-Wert von sndbuf=1048576 lässt sich mit sndbuf=0 deaktivieren. Wird die Option vnet_hdr=off gesetzt, wird das TUN/TAP-Flag IFF_VNET_HDR deaktiviert. Dieses Flag erlaubt das Senden und Empfangen von großen Paketen beziehungsweise Paketen mit Teil-Checksummen. Bei schlechten Support für IFF_VNET_HDR sollte diese Option deaktiviert werden. Wird die Option vnet_hdr=off gesetzt, wird das TUN/TAP-Flag IFF_VNET_HDR deaktiviert. Dieses Flag erlaubt das Senden und Empfangen von großen Paketen beziehungsweise Paketen mit Teil-Checksummen. Bei schlechten Support für IFF_VNET_HDR sollte diese Option deaktiviert werden. vhost=on aktiviert den experimentellen Kernel-Beschleuniger. vhostfd=h stellt eine Verbindung zu einem bereits geöffneten Netzwerk-Device h her. vhostforce=on erzwingt die Aktivierung des Kernel-Beschleunigers (vhost=on) für Gast-Systeme mit virtio-Treiber ohne MSI-X-Support. MSI-X ist eine Erweiterung des Message Signaled Interrupts ab PCI 3.0.

Unter Linux ist es möglich mit dem Programm tunctl die benötigten TAP-Interfaces im voraus zu generieren. Zum Starten der virtuellen Maschinen sind dann keine root-Rechte mehr notwendig. Weiterhin lassen sich mit diesen generierten TAP-Interfaces virtuelle Maschinen anderer Virtualisierungslösungen einbinden. Es wird das Paket uml-utilities (User Mode Linux Utilities) benötigt.

Host ~$ sudo apt-get install uml-utilities

Folgender Befehl legt das TAP-Interface tap0 an und macht den Nutzer hans zum Eigentümer.

Host ~$ sudo tunctl -t tap0 -u hans

Der Befehl ifconfig listet dieses Interface auf.

Host ~$ ifconfig tap0

Microsoft Windows-Versionen bieten keinen TUN/TAP-Support. Dieser wird erst durch die Installation der TUN/TAP-Adapter von OpenVPN eingerichtet. Eine Anleitung dazu befindet sich unter der URL http://qemu-buch.de/d/QEMU_unter_Microsoft_Windows.

[bearbeiten] Mehrere Instanzen mit Sockets vernetzen

Mit der Option -net socket ist es möglich, mehrere Instanzen untereinander zu verbinden. Ist auch eine Verbindung nach außen gewünscht, kann eine virtuelle Maschine als Router konfiguriert werden. Die Kommunikation erfolgt über Sockets. Ein Socket ist eine bidirektionale Software-Schnittstelle zur Interprozess- oder Netzwerkkommunikation.

[bearbeiten] TCP-Socket

Eine Variante, um mehrere Gast-Systeme miteinander kommunizieren zu lassen, ist die Verbindung über einen TCP-Socket (Transmission Control Protocol). Die Konfiguration ist ähnlich der Konfiguration beim UDP-Multicastsocket. Wird für eine Instanz mit -net socket mit dem Parameter listen angegeben, wartet die Instanz auf eingehende Verbindungen auf dem angegebenen Port. Auf der zweiten Instanz verbindet man sich mit connect mit der ersten Instanz. Hier ein Beispiel für eine auf Verbindung wartende Instanz.

Host ~$ qemu-system-x86_64 Platte-01.img -net nic,macaddr=52:54:00:12:34:56 \
        -net socket,listen=:1234

Das zweite Beispiel stellt eine Instanz dar, die eine Verbindung zur ersten Instanz herstellt.

Host ~$ qemu-system-x86_64 Platte-02.img -net nic,macaddr=52:54:00:12:34:57 \
        -net socket,connect=127.0.0.1:1234

Auf beiden Instanzen kann jeweils im QEMU-Monitor mit dem Befehl info network die Verfügbarkeit des Sockets getestet werden. Auf der Instanz mit listen erscheint folgende Ausgabe:

(qemu) info network
VLAN 0 devices:
  ne2000 pci macaddr=52:54:00:12:34:56
  socket: connection from 127.0.0.1:1472

Auf der Instanz mit connect wird diese Information angezeigt.

(qemu) info network
VLAN 0 devices:
  socket: connect to 127.0.0.1:1234
  ne2000 pci macaddr=52:54:00:12:34:57

Jetzt werden die IP-Adressen in den Gast-Systemen konfiguriert. In diesen Beispielen ist jeweils Linux das Gast-System. Das erste Gast-System erhält hier die IP-Adresse 10.0.2.16. Diese wird mit dem Befehl ifconfig definiert.

Gast 1 ~# ifconfig eth0 10.0.2.16

Das zweite Gast-System erhält die IP-Adresse 10.0.2.17.

Gast 2 ~# ifconfig eth0 10.0.2.17

Hier die vollständige Syntax zur Generierung eines TCP-Socket:

-net socket[,vlan=n][,name=name][,fd=h] \
[,listen=[host]:port][,connect=host:port]

Mit diesen Optionen verbindet man das VLAN n mit einem anderen VLAN über eine TCP-Socket-Verbindung. Ist listen angegeben, wartet die Instanz auf eingehende Verbindungen auf dem angegebenen Port (host ist optional). Auf der zweiten Instanz verbindet man sich mit connect zur ersten Instanz. Mit fd kann ein Handle eines bereits bestehenden TCP-Sockets angegeben werden.

[bearbeiten] UDP-Multicastsocket

Eine weitere Variante, um mehrere Gast-Systeme untereinander zu verbinden, ist ein VLAN über UDP-Multicastsocket. Über Multicast werden in TCP/IP-Netzwerken Daten an viele Empfänger zur gleichen Zeit gesandt. Dies erfolgt über eine spezielle Multicast-Adresse im Bereich 224.0.0.0 bis 239.255.255.255. Das verwendete Protokoll ist UDP (User Datagram Protocol). Es ist ein minimales, verbindungsloses Netzwerkprotokoll, das zur Transportschicht der Internetprotokollfamilie gehört. Um Instanzen mit einem UDP-Multicastsocket zu verbinden, sind jeweils die Startoptionen -net nic mit Angabe der MAC-Adresse der virtuellen Netzwerkkarte und -net socket mit Angabe der gemeinsamen Multicast-Adresse und einem Port anzuwenden. In diesem Beispiel wird die Multicast-Adresse 230.0.0.1 mit dem Port 1234 angesprochen.

Host ~$ qemu-system-x86_64 Platte-01.img -net nic,macaddr=52:54:00:12:34:56 \
-net socket,mcast=230.0.0.1:1234

Die zweite Instanz wird mit einer anderen MAC-Adresse gestartet.

Host ~$ qemu-system-x86_64 Platte-02.img -net nic,macaddr=52:54:00:12:34:57 \
-net socket,mcast=230.0.0.1:1234

Es können weitere Instanzen aufgerufen werden.

Host ~$ qemu-system-x86_64 Platte-03.img -net nic,macaddr=52:54:00:12:34:58 \
-net socket,mcast=230.0.0.1:1234

In den Instanzen zeigt jeweils im QEMU-Monitor der Befehl info network den verwendeten Socket an. Hier als Beispiel die erste Instanz:

(qemu) info network
VLAN 0 devices:
  socket.0: socket: mcast=230.0.0.1:1234
  ne2k_pci.0: model=ne2k_pci,macaddr=52:54:00:12:34:56

Jetzt werden die IP-Adressen in den Gast-Systemen konfiguriert. In diesen Beispielen ist jeweils Linux das Gast-System. Das erste Gast-System erhält die IP-Adresse 10.0.2.16. Diese wird mit dem Befehl ifconfig definiert.

Gast 1 ~# ifconfig eth0 10.0.2.16

Das zweite Gast-System erhält die IP-Adresse 10.0.2.17.

Gast 2 ~# ifconfig eth0 10.0.2.17

Das dritte Gast-System erhält die IP-Adresse 10.0.2.18.

Gast 3 ~# ifconfig eth0 10.0.2.18

In der laufenden Instanz lässt sich mit dem Befehl host_net_remove ein Socket entfernen.

(qemu) host_net_remove 0 socket.0
(qemu) info network
VLAN 0 devices:
  ne2k_pci.0: model=ne2k_pci,macaddr=52:54:00:12:34:56

Mit dem Befehl host_net_add socket generiert man einen Socket. Die Parameter entsprechen denen von -net socket zur Generierung eines UDP-Multicastsocket.

(qemu) host_net_add socket mcast=230.0.0.1:1234
(qemu) info network
VLAN 0 devices:
  ne2k_pci.0: model=ne2k_pci,macaddr=52:54:00:12:34:56
  socket.0: socket: mcast=230.0.0.1:1234

Hier die vollständige Syntax zur Generierung eines UDP-Multicastsocket:

-net socket[,vlan=n][,name=name][,fd=h] \
[,mcast=maddr:port[,localaddr=addr]]

Damit generiert man das VLAN n, das zusammen mit anderen Instanzen mit der gleichen Multicast-Adresse maddr und Port port genutzt werden kann. Mehrere Instanzen können auf unterschiedlichen Hosts laufen und den gleichen Bus nutzen. Der Multicast-Supportt ist kompatibel zum User Mode Linux (ethN=mcast). Mit fd kann ein Handle eines bestehenden UDP-Multicast-Sockets angegeben werden. Mit localaddr=addr wird die IP-Adresse des Hosts vorgegeben, von dem die Pakete versendet werden sollen. In diesem Beispiel wird 1.2.3.4 als Absender-Adresse vorgegeben:

Host ~$ qemu-system-x86_64 linux.img -net nic,macaddr=52:54:00:12:34:56 \
-net socket,mcast=239.192.168.1:1102,localaddr=1.2.3.4

[bearbeiten] Bridging und Switching

Bridging bezeichnet eine Technik zur Koppelung von zwei Netzwerken, meist LAN-Segmenten, auf dem Layer 2 des OSI-Modells. Diese Technik kann genutzt werden, um virtuelle Maschinen zu vernetzen. Damit ist es möglich, den virtuellen Maschinen einen uneingeschränkten Netzwerkzugang zur Verfügung zu stellen. Auf die virtuellen Maschinen kann auch von außerhalb des Host-Systems zugegriffen werden. Beim Switching wird das eingehende Ethernet-Frame analysiert. Dabei werden die MAC-Adressen des Senders und Empfängers in der MAC-Tabelle gespeichert. Dadurch werden die Pakete schneller an den Switch-Port, an dem der Empfänger hängt, weitergeleitet. Da die Verkabelung der Ports verändert werden kann, werden alte Einträge in der MAC-Tabelle regelmäßig gelöscht. Es gibt Layer-2- und Layer-3-Switches. Letztere verfügen in der Regel über Management-Funktionen. Switches werden auch als intelligente Hubs bezeichnet und deren Funktionsweise ist der einer Bridge sehr ähnlich. Bridges haben aber meist nur zwei Ports. Switches hingegen besitzen zwischen vier, 12 bis maximal 48 Ports. Switches beherrschen mehr Funktionen als Bridges. Vereinfacht gesagt: Jeder Switch ist eine Bridge, aber nicht jede Bridge ist ein Switch. Es gibt aber Bridges, die auch Protokolle wie Token Ring und Ethernet (MAC-Bridge oder LLC-Bridge) verbinden können. Dies ist mit Switches nicht möglich.

[bearbeiten] bridge-utils

Virtuelle Bridges werden unter Unix/Linux mit dem Paket bridge-utils realisiert. Das Bridging mit dem Paket bridge-utils funktioniert aber nicht mit WLAN-Devices. Bei WLAN-Devices ist das Proxy-ARP-Bridging mit parprouted anzuwenden (siehe unten). Die Installation des Paketes bridge-utils erfolgt unter Debian/Ubuntu mit folgender Befehlszeile:

Host ~$ sudo apt-get install bridge-utils

Um vorhandene Bridges und dessen Konfiguration anzuzeigen, dient der Befehl brctl show.

Host ~$ sudo -i  
Host ~# brctl show
bridge name   bridge id          STP enabled  interfaces
pan0          8000.000000000000  no

Eine Bridge löscht man mit dem Befehl brctl delbr.

Host ~# brctl delbr pan0

Zum Anlegen einer neuen Bridge ist die Option addbr anzuwenden. Im folgenden Beispiel erhält die angelegte Bridge den Namen bri0.

Host ~# brctl addbr bri0

Mit brctl show überprüft man, ob die Bridge angelegt wurde.

Host ~# brctl show
bridge name  bridge id          STP enabled  interfaces
bri0         8000.000000000000  no

Da hier nur eine Bridge verwendet wird, ist das Spanning Tree Protocol (STP) nicht notwendig und zu deaktivieren. Das Spanning Tree Protocol dient zur Vermeidung redundanter Netzpfade (Schleifen) im LAN.

Host ~# brctl stp bri0 off
Host ~# exit
Host ~$

Im diesem Beispiel werden die TUN/TAP-Network-Interfaces zweier virtueller Maschinen an die angelegte Bridge angeschlossen. Damit können die virtuellen Maschinen mit dem Netzwerk des Host-Rechners verbunden werden. Die Adresse dieses Netzwerkes ist hier 192.168.1.0. Zunächst sind zwei Instanzen mit TUN/TAP-Network-Interfaces zu starten. Zur eindeutigen Adressierung müssen die MAC-Adressen unterschiedlich sein. Ansonsten kommt es zu Aussetzern.

Host ~$ qemu-system-x86_64 Platte1.img -net nic,macaddr=52:54:00:12:34:56 -net tap
Password for /etc/qemu-ifup: *****
Host ~$ qemu-system-x86_64 Platte2.img -net nic,macaddr=52:54:00:12:34:57 -net tap
Password for /etc/qemu-ifup: *****

Im Host-System wurden die virtuellen Netzwerk-Schnittstellen tap0 und tap1 angelegt. Dies kann mit dem Befehl ifconfig überprüft werden. Die IP-Adressen dieser virtuellen Netzwerk-Schnittstellen müssen gelöscht werden.

Host ~$ sudo ifconfig tap0 0.0.0.0 up
Host ~$ sudo ifconfig tap1 0.0.0.0 up

Die virtuellen Netzwerk-Schnittstellen werden anschließend der Bridge bri0 zugeordnet.

Host ~$ sudo brctl addif bri0 tap0
Host ~$ sudo brctl addif bri0 tap1

Diese Zuordnung ist mit dem Befehl brctl show zu kontrollieren.

Host ~$ sudo brctl show
bridge name   bridge id          STP enabled  interfaces
bri0          8000.76674ec80764  no           tap0
                                              tap1

Die Bridge erhält eine freie IP-Adresse im Netzwerk des Host-Systems.

Host ~$ sudo ifconfig bri0 192.168.1.220 up

Die Verfügbarkeit dieser IP-Adresse wird von einem anderen Rechner in diesem Netzwerk mit ping getestet.

Host 2 ~# ping 192.168.1.220

Den virtuellen Maschinen können freie IP-Adressen des Host-Netzwerkes zugeordnet werden. Läuft auf den Gast-Systemen Linux, können folgende Befehle angewendet werden.

Gast 1 ~# ifconfig eth0 192.168.1.221 netmask 255.255.255.0 up
Gast 2 ~# ifconfig eth0 192.168.1.222 netmask 255.255.255.0 up

Damit auch die Netzwerkkarte des Host-Systems an die Bridge angeschlossen werden kann, ist auch dessen IP-Adresse zu löschen und anschließend der Bridge zuzuordnen. Der Host ist danach nicht mehr unter der alten IP-Adresse erreichbar.

Host ~$ sudo ifconfig eth0 0.0.0.0 up && brctl addif bri0 eth0

Damit die Bridge auch nach einem Neustart zur Verfügung steht, ist die entsprechende Netzwerk-Konfigurationsdatei anzupassen. Bei Debian/Ubuntu ist dies die Datei /etc/network/interfaces. In diesem Beispiel müssen die bisherigen Einträge zu eth0 gelöscht werden. Die Bridge und damit der Rechner sind in diesem Beispiel über die IP-Adresse 192.168.1.220 erreichbar.

auto eth0
iface eth0 inet manual
auto bri0
iface bri0 inet static
       address 192.168.1.220
       network 192.168.1.0
       netmask 255.255.255.0
       broadcast 192.168.1.255
       gateway 192.168.1.10
       bridge_ports eth0
       bridge_fd 9
       bridge_hello 2
       bridge_maxage 12
       bridge_stp off

Falls per DHCP-Server eine Adresse zugewiesen werden soll, ist diese Konfiguration anzuwenden:

auto eth0
iface eth0 inet manual
auto bri0
iface bri0 inet dhcp
       bridge_ports eth0
       bridge_fd 9
       bridge_hello 2
       bridge_maxage 12
       bridge_stp off

Anschließend ist der Netzwerkdienst neu zu starten.

Host ~$ sudo /etc/init.d/networking restart

Bei vielen Desktop-Distributionen erfolgt die Netzwerk-Konfiguration per Netzwerk-Manager. Für die hier dargestellte Konfiguration ist dieser zu entfernen. Unter Debian/Ubuntu ist dies mit einer Zeile erledigt.

Host ~$ sudo apt-get remove network-manager

Unter Fedora sind mehrere Schritte zur Deinstallation des Netzwerk-Managers notwendig:

Host ~$ su -
Host ~# yum remove NetworkManager
Host ~# chkconfig network on
Host ~# echo "DEVICE=eth0" > /etc/sysconfig/network-scripts/ifcfg-eth0
Host ~# echo "ONBOOT=yes" >> /etc/sysconfig/network-scripts/ifcfg-eth0
Host ~# system-config-network

[bearbeiten] Proxy-ARP-Bridging mit parprouted

Eine weitere Möglichkeit ist die Verwendung des Proxy-ARP-Bridging. Im Gegensatz zum Standard-Bridging erlaubt das Proxy-ARP-Bridging auch Verbindung über eine WLAN-Verbindung. Benötigt wird dazu das Paket parprouted.

Host ~$ sudo apt-get install parprouted

Um eine Bridge zwischen den Interfaces eth0 und tap0 anzulegen, dient der folgende Befehl.

Host ~$ sudo parprouted eth0 tap0

[bearbeiten] VDE Switch

VDE Switch (Virtual Distributed Ethernet) unterstützt den Aufbau aufwendiger virtueller Netzwerkverbindungen. Dazu ist das Paket vde2 notwendig.

Host ~$ sudo apt-get install vde2

Dieses Paket enthält das Programm vde_switch zum Anlegen von virtuellen Switches. Nach dessen Aufruf und einem weiteren Betätigen der Return-Taste erhält man einen Prompt. Der Befehl help zeigt alle Befehle an. Der Befehl shutdown beendet den virtuellen Switch.

Host ~$ sudo vde_switch
                        [Return]
vde$ help
vde$ shutdown

Mit der Option --daemon wird vde_switch als Daemon gestartet. Die Option --sock definiert den Socket und mit der Option --mgmt wird die Verbindung zum Management des virtuellen Switches eingerichtet.

Host ~$ sudo vde_switch --daemon --sock /tmp/myswitch \
        --mgmt /tmp/myvde.mgmt

Mit dem Programm unixterm lässt sich der Switch managen. Der vde-Befehl port/print listet die aktiven Ports auf. Mit der Tastenkombination [Strg]+[d] loggt man sich aus.

Host ~$ sudo unixterm /tmp/myvde.mgmt
vde$ port/print
0000 DATA END WITH '.'
.
1000 Success
vde$ [Strg]+[d]
Host ~$ 

Wurde QEMU mit der Unterstützung für VDE kompiliert, steht die Option -net vde zur Verfügung. Mit folgenden Befehl wird die Instanz mit dem angelegten virtuellen Switch verbunden.

Host ~$ qemu-system-x86_64 Platte.img -net nic -net vde,sock=/tmp/myswitch

Wurde QEMU ohne Unterstützung für VDE kompiliert, kann das im Paket vde2 enthaltene Programm vdeq verwendet werden. Es ist vor dem Befehl qemu einzugeben.

Host ~$ vdeq qemu Platte.img -net nic -net vde,sock=/tmp/myswitch

Zur Kontrolle lässt man sich die aktiven Ports des virtuellen Switches auflisten. In diesem Beispiel wurde eine virtuelle Maschine an den Switch angeschlossen.

Host ~$ sudo unixterm /tmp/myvde.mgmt
vde$ port/print
0000 DATA END WITH '.'
Port 0001 untagged_vlan=0000 ACTIVE - Unnamed Allocatable
 IN:  pkts         75          bytes                 7103
 OUT: pkts          0          bytes                    0
 -- endpoint ID 0003 module unix prog : QEMU user=knut PID=1740
 SOCK=/tmp/myswitch/.01740-00000

Im Gast-System, hier Linux, wird eine IP-Adresse konfiguriert.

Gast ~# ifconfig eth0 10.0.0.16 netmask 255.255.255.0 up

Ein virtueller Router kann zusätzlich mit slirpvde eingerichtet werden. slirpvde ist auch Bestandteil des Paketes vde2 und benötigt keine Administrationsrechte. Falls noch nicht geschehen, ist zuvor ein virtueller Switch anzulegen.

Host ~$ sudo vde_switch --daemon --sock /tmp/myswitch \
--mgmt /tmp/myvde.mgmt

Jetzt wird slirpvde aufgerufen. Mit der Option -dhcp wird ein DHCP-Server aktiviert. Damit erhalten die virtuellen Maschinen am virtuellen Switch einen Zugang nach außen.

Host ~$ sudo slirpvde --daemon --sock /tmp/myswitch -dhcp

Es kann eine virtuelle Maschine gestartet und an den virtuellen Switch angeschlossen werden.

Host ~$ qemu-system-x86_64 Platte.img -net nic -net vde,sock=/tmp/myswitch

Soll eine zweite Instanz an dem virtuellen Switch angeschlossen werden, ist sicherzustellen, dass diese ein andere Mac-Adresse verwendet.

Host ~$ qemu-system-x86_64 Platte-zwei.img \
-net nic,macaddr=00:80:AD:3B:3E:4F -net vde,sock=/tmp/myswitch

Zur Kontrolle listet man die aktiven Ports des virtuellen Switches auf.

Host ~$ sudo unixterm /tmp/myvde.mgmt
vde$ port/print

Hier die vollständige Syntax für die Option -net vde.

-net vde[,vlan=n][,name=name][,sock=socketpath] \
[,port=n][,group=groupname][,mode=octalmode]

Das VLAN n wird mit dem Port n eines VDE Switches verbunden. Dieser virtuelle Switch ist auf dem Host-System installiert und wartet auf eingehende Verbindungen auf dem Socket socketpath. Mit der Gruppe groupname und dem Modus octalmode ist es möglich, die Eigentümer- und Zugriffsrechte anzupassen.

[bearbeiten] netdev

Mit QEMU 0.12.0 wurde die Option -netdev zur Definition von virtuellen Netzwerken eingeführt. Je nach Art des virtuellen Netzwerkes (user, tap, vde, socket) sind bestimmte Parameter anzuwenden. Dabei muss mit id eine Zeichenkette zur eindeutigen Identifizierung zugeordnet werden. In diesem Beispiel wird mit der Option -net nic eine Netzwerkkarte (e1000) und mit -netdev der User Mode Network Stack definiert.

Host ~$ qemu-system-x86_64 Platte.img \
-net nic,model=e1000,netdev=net0 -netdev user,id=net0

Die Definition der Netzwerkkarte kann auch mit der Option -device erfolgen.

Host ~$ qemu-system-x86_64 Platte.img \
-device e1000,netdev=net0 -netdev user,id=net0

Hier die vollständige Syntax von -netdev:

-netdev [user|tap|vde|socket],id=str[,option][,option][,...]

Im QEMU-Monitor fügt der Befehl netdev_add ein Netzwerk-Device zur Laufzeit der virtuellen Maschine hinzu. Die Optionen entsprechen denen der Option -netdev.

(qemu) netdev_add user,id=net0

Ein Netzwerk-Device wird mit dem Befehl netdev_del entfernt. Dazu ist die id des Devices anzugeben.

(qemu) netdev_del net0

Löscht ein Netzwerk-Device.


<<<|###| >>>

Von „http://qemu-buch.de/de/index.php?title=QEMU-KVM-Buch/_Netzwerkoptionen/_Virtuelle_Netzwerke_konfigurieren

Diese Seite wurde bisher 146.895 mal abgerufen. Diese Seite wurde zuletzt am 29. März 2012 um 16:16 Uhr geändert. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.


Finden

Blättern

News

Deutsch
Weitersagen
Tipps für Autoren
Autoren
Impressum


English
Recommendation
The Authors
Contact



Letzte Änderungen


Ändern
Seite bearbeiten
Bearbeitungshilfe
Seitenoptionen
Diskussion
Kommentar hinzufügen
Druckversion
Seitendaten
Versionen
Links auf diese Seite
Änderungen an verlinkten Seiten
Meine Seiten
Anmelden
Spezialseiten
Neue Seiten
Dateiliste
Statistik
Kontakt
Mehr …