VNC-basierte Interaktion mit virtuellen Maschinen

Hinweis

Ungesicherter TCP-Port

Eingehende Verbindungen auf TCP-Port 5900 werden in diesem Beispiel nicht durch die Firewall blockiert. Richten Sie eine sichere und verschlüsselte Verbindung ein und sichern Sie den TCP-Port 5900 über SSH, sobald der Betrieb in einem ungesicherten Netzwerk stattfindet.

Mit Virtual Network Computing (VNC) besteht die Möglichkeit eine virtuelle Maschine auf einem TwinCAT/BSD-Host über eine Netzwerkverbindung zu steuern. Dafür stellt bhyve einen integrierten VNC-Server bereit, um mit VM-Instanzen zu interagieren.

Grafische Ausgaben der virtuellen Maschine und Benutzereingaben an die virtuelle Maschine können über den integrierten VNC-Server übertragen werden, indem die virtuelle Maschine mit einem Frame-Buffer-Gerät fbuf konfiguriert wird. Dem Frame-Buffer-Gerät fbuf können folgende Optionen übergeben werden, um den VNC-Server zu konfigurieren:

fbuf,[rfb=ip-and-port][,w=width][,h=height][,vga=vgaconf][,wait][,password=password]

Der folgende Aufruf startet die virtuelle Maschine samplevm mit einem Frame-Buffer-Gerät an PCI-Slot 2. Über die Konfigurationsoptionen wird festgelegt, dass der VNC-Server auf TCP-Port 5900 des TwinCAT/BSD-Hosts auf Verbindungen lauscht. Zudem wird die Bildauflösung des Frame-Buffers auf 1024x768 Pixel festgelegt. Weitere Konfigurationsoptionen des fbuf Geräts finden sich in den bhyve Manpages

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 31,lpc \
-A -H -P \
samplevm

Abhängig vom VNC-Client kann es vorkommen, dass Mauszeigerpositionen nicht präzise übergeben werden. Der bhyve-Aufruf kann dann um eine xhci,tablet Gerätekonfiguration erweitert werden.

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 31,lpc \
-A -H -P \
samplevm

Der integrierte VNC-Server unterstützt keine Transportschichtsicherheit. Eingehende TCP-Verbindungen auf Port 5900 werden standardmäßig vom TwinCAT/BSD-Paket-Filter pf(8) blockiert. Eingehende Verbindungen können durch die Konfiguration des Paket-Filters erlaubt werden (siehe: Firewall).