Konfiguration von Netzwerk-Brücken als Verbindung in virtuellen KVM-Netzwerken
In individuell angepassten KVM-Netzwerken kann es problematisch werden, Netzwerk-Schnittstellen hinzuzufügen. Eine virtuelle Bridge kann helfen.
Wenn Sie in einem KVM-Netzwerk (Kernel-based Virtual Machine Hypervisor) eine virtuelle Maschine (VM) über die Standard-Konfiguration erstellen, dann ist das Hinzufügen von Netzwerk-Schnittstellen relativ einfach. Wollen Sie das KVM-Netzwerk allerdings für spezielle Umgebungen anpassen, wird die Sache schon kniffliger. In diesem Tipp zeigen wir Ihnen, wie ein KVM-Netzwerk aufgebaut ist und wie Sie eine virtuelle Bridge, also eine virtuelle Netzwerk-Brücke, manuell konfigurieren.
Um virtuelle Maschinen auf Host-Ebene mit dem physischen Netzwerk zu verbinden, müssen Sie irgendwie auf die physische Netzwerk-Karte im physischen Server zugreifen können. Per Standard funktioniert das, indem man ein so genanntes Bridge-Gerät mit Namen br0 verwendet. Jede auf der physischen Maschine laufende Instanz verwendet dieses Bridge-Gerät, um Zugriff auf das Netzwerk und auf das Host-System des Hypervisors zu erlangen.
Wie bei einer physischen Bridge oder einem Switch sind verschiedene Ports mit dem Bridge-Gerät verbunden. Diese sind auch unter dem Namen vnet-Ports bekannt. Jede vnet-Schnittstelle ist mit der Netzwerk-Brücke verbunden und diese wiederum verbindet sich mit einem echten Interface auf entweder dem KVM-Host oder dem virtuellen Betriebssystem. In Abbildung 1 sehen Sie, dass die physische Netzwerk-Karte eth0 des Hosts mit vnet0 verbunden ist. Die Schnittstelle eth0 in vm1 verbindet sich zu vnet1 und eth0 in vm2 zu vnet2. Die Nummerierung der vnet-Schnittstellen ist belanglos und hat nichts mit den virtuellen Maschinen zu tun oder damit, welches Gerät in welcher VM Verwendung findet. Sie listet lediglich die Reihenfolge der äußeren Anordnung auf.
Schematische Darstellung der Funktionsweise einer virtuellen Netzwerk-Brücke.
Schematische Übersicht des KVM-Netzwerks
Um Einblicke in die KVM-Netzwerk-Konfiguration zu erlangen, lässt sich der Befehl brctl show verwenden. Damit bekommen Sie den Namen der Bridge und die Bridge-ID. Weiterhin erkennen Sie damit, ob das Spanning Tree Protocol (STP) deaktiviert ist. Darüber hinaus wird Ihnen angezeigt, welche Schnittstellen mit der Bridge verbunden sind.
lin:~ # brctl show
bridge name bridge id STP enabled interfaces
br0 8000.5c260a1a70aa no em1
vnet0
vnet1
vnet2
vnet3
vnet4
Konfiguration der Bridge-Gerät
Um das Bridge-Gerät auf dem KVM-Host unter Systemen mit SUSE oder Red Hat Linux zu konfigurieren, erstellen Sie in der Regel eine Datei mit Namen ifcfg-br0, die wie folgt bestückt ist:
lin:~ # cat /etc/sysconfig/network/ifcfg-br0
BOOTPROTO='dhcp'
BRIDGE='yes'
BRIDGE_FORWARDDELAY='0'
BRIDGE_PORTS='em1'
BRIDGE_STP='off'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='192.168.122.1/24'
MTU=''
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='onboot'
USERCONTROL='no'
In der obigen Definition eines Bridge-Geräts ist der wichtigste Parameter BRIDGE_PORTS='em1'. Dort ist hinterlegt, welche physische Schnittstelle mit der Bridge verbunden ist. Die mit der Bridge verbundenen physischen Interfaces müssen Sie in der Regel nicht weiter konfigurieren.
lin:~ # cat /etc/sysconfig/network/ifcfg-em1
BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='0.0.0.0/32'
MTU=''
NAME='82577LM Gigabit Network Connection'
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
Virtuelle Maschinen mit der Bridge verbinden
Sobald die Konfiguration auf dem Host abgeschlossen ist, können Sie das VM-Netzwerk mithilfe des Befehls virsh aufsetzen. Tippen Sie dazu auf dem KVM-Host virsh list --all ein. Damit bekommen Sie eine Übersicht aller virtuellen Maschinen, die auf diesem Host verfügbar sind.
lin:~ # virsh list --all
setlocale: No such file or directory
Id Name State
----------------------------------
1 SAN running
4 node2 running
6 windowsvista running
7 node1 running
Im Anschluss führen Sie den Befehl virsh edit hostname aus, um die XML-Konfigurations-Datei für einen spezifischen Host in einem Editor zu öffnen. Begeben Sie sich zur Sektion Device, bis Sie das erste Netzwerk-Interface finden.
<interface type='bridge'>
<mac address='52:54:00:11:f4:2f'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
Um ein neues Interface hinzuzufügen, hinterlegen Sie einfach eine weitere Interface-Sektion. Sie müssen den Interface-Typus definieren, was in diesem Fall bridge ist, sowie die Quelle und das Modell.
<interface type='bridge'>
<source bridge='br0'/>
<model type='virtio'/>
</interface>
MAC-Adressen müssen Sie bei den Hardware-Spezifikationen nicht konfigurieren. Wird der Host das erste Mal mit diesem Einstellungen gestartet, erledigt libvirt diesen Schritt automatisch. Nachdem Sie die Änderungen hinzugefügt haben, können Sie die virtuelle Maschine neu starten. Sie sehen dann in der VM, dass das neue Interface automatisch hinzugefügt wurde.
Um das Netzwerk in einer KVM-Umgebung zu verwalten, sind viele verschiedene Teile involviert. Zunächst müssen Sie ein Bridge-Gerät auf dem Host-Computer erstellen. Danach können Sie in der virtuellen Maschine eine Schnittstelle hinzufügen, die sich mit dem Bridge-Gerät verbindet. Ist das geschafft, können Sie das Netzwerk in einer VM genauso handhaben, wie Sie das auch bei physischen Maschinen gewohnt sind.
Folgen Sie SearchNetworking.de auch auf Facebook, Twitter und Google+!