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) Geräte 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
Um die vmnet0
Instanz bereits bei einem Systemstart anzulegen kann sie in der rc-Konfiguration cloned_interfaces
hinzugefügt werden:
doas sysrc cloned_interfaces+="vmnet0"
Die erstellte vmnet(4)
Instanz (in diesem Fall vmnet0
) kann 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 emuliertes virtio-net
Gerät an einem PCI-Slot übergeben, welches als Endpunkt das zuvor erstellte vmnet0
Interface nutzt. Der folgende Befehl startet eine virtuelle Maschine mit einem virtuellen Netzwerkcontroller der das zuvor erstellte vmnet0
Gerät am PCI-Slot -s 20
nutzt:
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 \
-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.
Je nach Anwendungsfall kann eine virtuelle Maschine auch mit mehreren Netzwerkcontroller konfiguriert 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: