KVM ist eine Virtualisierungstechnik für Linux, welche die Hardwarevirtualisierung aktueller Intel und AMD Prozessoren nutzt und Teil des Linux-Kernels ist. Ich verwende KVM für meine virtuellen Maschinen.
In diesem Beitrag beschriebe ich wie KVM unter Ubuntu Linux 20.04 installiert sowie Bridged networking konfiguriert werden kann. Mit Bridged networking kann jeder virtuellen Maschine ein eigenes virtuellen Netzwerk Interface zugewiesen werden, welches die VM nach außen als eigenen Host darstellt.
KVM Unterstützung prüfen
Mit nachfolgendem Befehl kann geprüft werden, ob Hardwarevirtualisierung von der verwendeten CPU unterstützt wird. Falls eine Zahl größer 0 zurückgegeben wird ist dies der Fall.
$ egrep -c '(vmx|svm)' /proc/cpuinfo
8
Installieren
Zuerst müssen die Pakete qemu-kvm, libvirt-daemon-system, libvirt-clients sowie bridge-utils installiert werden.
$ sudo apt install virtinst qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
Installation überprüfen
Bevor neue Virtuellen Maschinen erstellt werden sollte die KVM Installation noch mit nachfolgendem Befehl überprüft werden.
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
Nun kann KVM verwendet werden.
Bridged networking Konfigurieren
Jetzt sollte noch Bridget networking konfiguriert werden. Es ermöglicht, dass jede Virtuelle Maschine ein eigenes virtuelles Netzwerk Interface nach außen bekommen kann und somit auch eine eigene IP Adresse. Um es zu Konfigurieren muss die Datei /etc/netplan/00-installer-config.yaml bearbeitet werden.
# This is the network config written by 'subiquity' network: ethernets: enp6s0: dhcp4: true version: 2
Im Beispiel soll enp6s0 als für Bridged networking genutzt werden. Daher muss die Konfiguration durch nachfolgendefolgende ersetzt werden.
# This is the network config written by 'subiquity' network: ethernets: enp6s0: dhcp4: no dhcp6: no version: 2 bridges: br0: interfaces: [enp6s0] dhcp4: true
- Es wird DHCP auf enp6s0 deaktiviert (Zeile 4-5).
- Zusätzlich wird die Definition der Bridge br0 hinzugefügt (Zeile 8-11)
- Zeile 9 definiert den Namen der Bridge
- Zeile 10 definiert das zu verwendende interface
- Zeile 11 ist die bisherige Konfiguration des Interfaces (im Beispiel dhcp)
Nach dem anpassen der Konfiguration sollte sie geladen werden.
$ sudo netplan apply
Anschließend können wir den Status von br0 überprüfen.
$ sudo networkctl status br0
● 5: br0
Link File: /usr/lib/systemd/network/99-default.link
Network File: /run/systemd/network/10-netplan-br0.network
Type: bridge
State: routable (configured)
Driver: bridge
HW Address: xx:xx:xx:xx:xx:xx (XXXX)
MTU: 1500 (min: 68, max: 65535)
Forward Delay: 15s
Hello Time: 2s
Max Age: 20s
Ageing Time: 5min
Priority: 32768
STP: no
Multicast IGMP Version: 2
Queue Length (Tx/Rx): 1/1
Address: xxx.xxx.xxx.xxx (DHCP4)
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
xxxx::xxxx:xxxx:xxxx:xxxx
Gateway: xxx.xxx.xxx.xxx (XXXX)
xxxx::xxxx:xxxx:xxxx:xxxx (XXXX)
DNS: xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
xxxx::xxxx:xxxx:xxxx:xxxx
Search Domains: XXXXX
Jun 15 19:49:54 xxx systemd-udevd[1114]: br0: Could not generate persistent MAC>
Jun 15 19:49:54 xxx systemd-networkd[1790]: br0: netdev ready
Jun 15 19:49:54 xxx systemd-networkd[1790]: br0: IPv6 successfully enabled
Jun 15 19:49:54 xxx systemd-networkd[1790]: br0: Link UP
Jun 15 19:49:54 xxx systemd-networkd[1790]: br0: Gained carrier
Jun 15 19:49:54 xxx systemd-networkd[1790]: br0: Lost carrier
Jun 15 19:49:55 xxx systemd-networkd[1790]: br0: Gained IPv6LL
Jun 15 19:49:57 xxx systemd-networkd[1790]: br0: Gained carrier
Jun 15 19:50:01 xxx systemd-networkd[1790]: br0: DHCPv4 address xxx.xxx.xxx.xxx/2>
Nachdem die Konfiguration angepasst wurde sollte der Server einmal neu gestartet werden.
$ sudo reboot
Zusätzlich zu br0 wurde das Interface virbr0 erstellt, welches den Virtuellen Maschinen Netzwerkzugriff über NAT erlaubt. Es hat standardmäßig die IP-Adresse 192.168.122.1.
Die Datei, die man bei einer abgeschlossenen Ubuntu-20-Standardinstallation unter /etc/netplan/ findet, heißt 01-network-manager-all.yaml .
Hallo Carsten,
wie bekomme ich denn hier eine Bridge für meine KVM eingebaut?
# This is the network config written by ’subiquity‘
network:
bonds:
bond0:
dhcp4: true
interfaces:
– enp2s0
– enp3s0
parameters:
mode: balance-rr
ethernets:
enp2s0: {}
enp3s0: {}
version: 2
Alles, was ich bislang hab auftreiben können, führt bei ńetplan apply‘ zu dem Ergebnis -> Invalid YAML: inconsistent indentation:iface br0 inet static
Freue mich auf Deine Rückmeldung.
VG, Marcus