Benutzer-Werkzeuge

Webseiten-Werkzeuge


projects:staticip

statische IP-Adressen per dhcp im Virt-Manager

Ein Beitrag aus serverfault.com:

If you don't want to do any configuration inside the guest, then the only option is a DHCP server that hands out static IP addresses. If you use bridge mode, that will probably be some external DHCP server. Consult its manual to find out how to serve static leases.

But at least in forward modes nat or route, you could use libvirt's built-in 'dnsmasq' (More recent versions of libvirtd support the dnsmasq's „dhcp-hostsfile“ option). Here is how:

First, find out the MAC addresses of the VMs you want to assign static IP addresses:

virsh  dumpxml  $VM_NAME | grep 'mac address'

Then edit the network

virsh  net-list
virsh  net-edit  $NETWORK_NAME    # Probably "default"

Find the <dhcp> section, restrict the dynamic range and add host entries for your VMs

<dhcp>
  <range start='192.168.122.100' end='192.168.122.254'/>
  <host mac='52:54:00:6c:3c:01' name='vm1' ip='192.168.122.11'/>
  <host mac='52:54:00:6c:3c:02' name='vm2' ip='192.168.122.12'/>
  <host mac='52:54:00:6c:3c:03' name='vm3' ip='192.168.122.12'/>
</dhcp>

Then, stop and start the network and reboot your VM (or restart its DHCP client, e.g. ipdown eth0; ifup eth0)

Aber Achtung! Das Netzwerk darf nicht gestoppt und gestartet werden, wenn sich darin aktive VM befinden. Die Folge ist, dass keine Zugriff über das Netzwerk auf die bestehenden Server mehr möglich ist und der gesamte Server neu gestartet werden muss.

Abhilfe schafft ein live-Patch des Netzwerks. Hier am Beispiel für das Netzwerk „default“:

$ virsh net-update default add ip-dhcp-host "<host mac='52:54:00:bd:61:39' name='tyche' ip='192.168.122.32'/>" --live --config

Durch dieses Kommando wird eine zusätzliche statische IP-Adresse live in das Netzwerk aufgenommen und in die Konfiguration übernommen.

Bridge Netzwerk in der Benutzer Session

Grundsätzlich können virtuelle Maschinen (VM) im Virtual Machine Manager sowohl als root als auch als Benutzer betrieben werden. Die QEMU/KVM Benutzer-Session funktioniert uneingeschränkt, außer der Verwaltung der virtuellen Netzwerke. Virtuelle Netze können ausschließlich durch die root-Session angelegt und betrieben werden.

Um eine VM als Benutzer in das Netzwerk zu integrieren muss die Funktion qemu-bridge-helper aus dem Package qemu-system-common verwendet werden.

Wie das praktisch geschieht beschreibt der Bridge Helper Einsatz. Wesentliche Schritte sind dabei

1. die Einrichtung der Datei

# ls -l /etc/qemu/bridge.conf 
-rw-r--r-- 1 root root 13 Apr 30 15:08 /etc/qemu/bridge.conf
# cat /etc/qemu/bridge.conf 
allow virbr0

Dabei steht virbr0 für das virtuelle Netzwerk „Default“. Das kann auf dem jeweiligen Hypervisor anders sein.

2. setuid für das Programm qemu-bridge-helper setzen. ! Hinweis ! Das muss auch immer wieder nach einer Aktualisierung von qemu getan werden, die packages enthalten das s-Bit sicherheitshalber nicht!

# chmod u+s /usr/lib/qemu/qemu-bridge-helper

Wenn das getan ist kann bei der Einrichtung der virtuellen Maschine in der Benutzer-Session als Netzwerkquelle „Name des gemeinsam verwendeten Geräts angeben“ ausgewählt und als Brückenname „virbr0“ eingetragen werden.

Die neue VM erhält damit eine IP-Adresse aus dem Netzwerk „Default“, in der Regel also aus 192.168.122.0/24.

projects/staticip.txt · Zuletzt geändert: 2020-09-09 14:32 von andreas