Netzwerkkonfiguration von virtuellen Maschinen
Virtuelle Maschinen können mit virtuellen Netzwerkcontrollern konfiguriert werden, um so die virtuelle Maschine mit einem Netzwerk zu verbinden. Virtuelle Maschinen nutzen dafür tap(4)oder
vmnet(4) Netzwerkschnittstellen des TwinCAT/BSD-Hosts, die wiederum unter TwinCAT/BSD mit Hilfe von ifconfig(8) verwaltet werden.
Der folgende Befehl erstellt ein neue vmnet(4)
Instanz:
doas ifconfig vmnet create
vmnet0
Auf ähnliche Weise können tap(4) Instanzen erstellt werden
doas ifconfig tap create
tap0
tap(4) und vmnet(4) Netzwerkschnittstellen können über cloned_interfaces bereits beim Systemstart angelegt werden. Dazu können die Instanzen der cloned_interfaces Auflistung in der rc-Konfiguration hinzugefügt werden:
doas sysrc cloned_interfaces+="vmnet0 tap0"
Die erstellten vmnet(4)
oder tap(4)
Instanzen (in diesem Fall vmnet0
und tap0
) können anschließend als Ethernet-Endpunkt für eine virtuelle Maschine verwendet werden, um zwischen TwinCAT/BSD-Host und der virtuellen Maschinenumgebung Ethernet-Pakete auszutauschen.
Dafür wird der bhyve
Aufruf um ein oder mehrere emulierte virtio-net
Gerät gestartet, welche als Endpunkt die zuvor erstellten Netzwerkschnittstellen nutzen. Für jede Netzwerkschnittstelle der virtuellen Maschine wird eine MAC-Adresse generiert. Optional kann jeder Netzwerkschnittstelle auch eine definierte MAC-Adresse mit ,mac=xx:xx:xx:xx:xx:xx
übergeben werden.
Der folgende Befehl startet eine virtuelle Maschine mit zwei virtuellen Netzwerkcontrollern, die als Endpunkte auf Host-Seite die oben genannten Instanzen vmnet0
und tap0
an PCI-Slot -s 20
und -s 21
nutzen und definierte MAC-Adressen erhalten:
doas bhyve \
-c sockets=1,cores=1,threads=1 \
-m 2G \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_BHF_UEFI.fd,fwcfg=qemu \
-s 0,hostbridge \
-s 2,fbuf,rfb=0.0.0.0:5900,w=1024,h=768 \
-s 3,xhci,tablet \
-s 20,virtio-net,vmnet0,mac=58:9c:fc:02:34:25 \
-s 21,virtio-net,tap0,mac=58:9c:fc:03:5e:ec \
-s 31,lpc \
-A -H -P \
samplevm
Die Anbindung von virtuellen Maschinen an externe Netzwerke erfolgt somit immer über tap(4)
oder vmnet(4)
Geräte.
Die Konfiguration mit virtuellen Netzwerkcontrollern sieht wie folgt aus:
Je nach Anwendungsfall kann eine virtuelle Maschine auch mit weiteren Netzwerkcontrollern konfiguriert werden, um an unterschiedlichen Netzwerken angebunden zu werden. Die Anbindung einer virtuellen Maschine an ein Netzwerk wird anschließend über die Konfiguration der jeweiligen tap(4)
oder vmnet(4)
Geräte auf dem TwinCAT/BSD-Host bestimmt. Dadurch ergeben sich unterschiedliche Möglichkeiten die Kommunikation von virtuellen Maschinen in ein Netzwerk zu realisieren: