noVNC-Konsole funktioniert bei keiner VM

AlmanAchim

Member
Mar 15, 2024
3
0
6
Hallo zusammen,

ich habe ein Problem mit der noVNC-Konsole auf meinem Proxmox-Server, bei dem ich bisher nicht weiterkomme. Bei allen VMs schlägt die Konsolenverbindung fehl. Die VMs selbst laufen normal, aber über die Weboberfläche kann ich keine Konsole öffnen.

Ursprünglich lief der Server mit Proxmox VE 8. Da ich die Ursache dort nicht finden konnte, habe ich inzwischen auf Proxmox VE 9 aktualisiert und den Server neu gestartet. Leider besteht das Problem weiterhin.

Ich hoffe, jemand hat eine Idee, wo ich noch suchen kann.

Fehlerbild​

Beim Öffnen der Konsole einer VM erscheint in der Proxmox-Weboberfläche:

  • Failed to connect to server
  • teilweise TASK ERROR: connection timed out
In der Browser-Konsole erscheint außerdem:

WebSocket connection ... failed
Connection closed (code: 1006)
Das Problem betrifft alle VMs, nicht nur eine einzelne VM.

1791675254469.png

Was ich bisher geprüft habe​

1. Die VMs laufen weiterhin

Beispielsweise zeigt qm status 269:

status: running
Auch die QEMU-Prozesse laufen.

2. Die Proxmox-Dienste sind aktiv

Die Dienste pveproxy, pvedaemon und pve-cluster waren während der Fehlersuche aktiv.

3. QEMU und der VNC-Socket funktionieren grundsätzlich

Für VM 269 existiert der Socket:

/var/run/qemu-server/269.vnc
Mit folgendem Test erhielt ich eine VNC-Antwort:

timeout 3 socat - UNIX-CONNECT:/var/run/qemu-server/269.vnc
Ausgabe:

RFB 003.008
Das spricht dafür, dass der VNC-Dienst der VM grundsätzlich erreichbar ist.

4. Der VNC-Proxy lässt sich erstellen

Der Aufruf

pvesh create /nodes/node01/qemu/269/vncproxy
liefert einen Port, ein Ticket und eine UPID zurück. Der temporäre Proxy lauscht anschließend auf Port 5900.

Allerdings erscheint im Journal von pvedaemon wiederholt:

starting vnc proxy ...
connection timed out
Der Timeout tritt ungefähr zehn Sekunden nach dem Start auf, wenn sich kein Client erfolgreich mit dem Proxy verbindet.

5. WebSocket-Verbindung untersucht

Im Browser-Netzwerkmonitor wird der Request auf vncwebsocket angezeigt. Im Access-Log von pveproxy findet sich unter anderem:

GET /api2/json/nodes/node01/vncwebsocket?port=5900&vncticket=... HTTP/1.1" 101 -
Der HTTP-Status 101 bedeutet, dass der WebSocket-Handshake grundsätzlich akzeptiert wurde. Anschließend meldet der Browser jedoch den Fehler 1006.

6. Firewall und Namensauflösung geprüft

  • Die geprüften Regeln von iptables, ip6tables und nftables waren leer bzw. nicht blockierend.
  • /etc/hosts enthält die korrekte Zuordnung von localhost zu 127.0.0.1.
  • getent hosts localhost liefert 127.0.0.1.
Die üblichen Verdächtigen konnten das Problem bisher also nicht erklären.

Update auf Proxmox VE 9​

Da ich unter Proxmox VE 8 keine Lösung gefunden habe, habe ich den Server auf Proxmox VE 9 aktualisiert und anschließend neu gestartet. Der Fehler ist unverändert vorhanden.

Es scheint daher nicht einfach an einem vorübergehenden Zustand eines einzelnen Dienstes oder einer einzelnen VM zu liegen.

Meine Fragen​

  1. Wo könnte die Verbindung zwischen pveproxy, vncwebsocket und dem temporären VNC-Proxy abbrechen?
  2. Welche Logs oder Tests wären als Nächstes sinnvoll, um die Ursache genauer einzugrenzen?
  3. Gibt es bekannte Ursachen für dieses Verhalten, die auch nach einem Upgrade von PVE 8 auf PVE 9 bestehen bleiben?
System: Kein Cluster. Vor 10 Minuten auf PVE9 latest Version aktualisiert:
root@node01:~# pveversion -v
proxmox-ve: 9.2.0 (running kernel: 7.0.14-23-pve)
pve-manager: 9.2.21 (running version: 9.2.21/4f6e0ac86f9e8c7f)
proxmox-kernel-helper: 9.2.0
proxmox-kernel-7.0: 7.0.14-23
proxmox-kernel-7.0.14-23-pve-signed: 7.0.14-23
proxmox-kernel-6.8.12-43-pve-signed: 6.8.12-43
proxmox-kernel-6.8: 6.8.12-43
proxmox-kernel-6.8.12-22-pve-signed: 6.8.12-22
proxmox-kernel-6.5.13-6-pve-signed: 6.5.13-6
proxmox-kernel-6.5: 6.5.13-6
proxmox-kernel-6.5.13-3-pve-signed: 6.5.13-3
proxmox-kernel-6.5.13-1-pve-signed: 6.5.13-1
proxmox-kernel-6.5.11-8-pve-signed: 6.5.11-8
amd64-microcode: 3.20251202.1~bpo13+1
ceph-fuse: 19.2.6-pve4
corosync: 3.1.10-pve3
criu: 4.1.1-1
frr-pythontools: 10.6.1-1+pve3
ifupdown2: 3.3.0-1+pmx12
ksm-control-daemon: 1.5-1
libjs-extjs: 7.0.0-7
libproxmox-acme-perl: 1.7.2
libproxmox-backup-qemu0: 2.0.3
libproxmox-rs-perl: 0.4.1
libpve-access-control: 9.1.2
libpve-apiclient-perl: 3.4.3
libpve-cluster-api-perl: 9.1.6
libpve-cluster-perl: 9.1.6
libpve-common-perl: 9.2.3
libpve-guest-common-perl: 6.0.5
libpve-http-server-perl: 6.0.5
libpve-network-perl: 1.6.7
libpve-notify-perl: 9.1.6
libpve-rs-perl: 0.15.3
libpve-storage-perl: 9.1.12
libspice-server1: 0.15.2-1+b1
lvm2: 2.03.31-2+pmx1
lxc-pve: 7.0.0-2
lxcfs: 7.0.0-pve1
novnc-pve: 1.7.0-2
proxmox-backup-client: 4.2.8-1
proxmox-backup-file-restore: 4.2.8-1
proxmox-backup-restore-image: 1.0.0
proxmox-enterprise-support-keyring: 1.1
proxmox-firewall: 1.2.3
proxmox-kernel-helper: 9.2.0
proxmox-mail-forward: 1.0.3
proxmox-mini-journalreader: 1.7
proxmox-offline-mirror-helper: 0.7.4
proxmox-widget-toolkit: 5.2.10
pve-cluster: 9.1.6
pve-container: 6.1.14
pve-docs: 9.2.13
pve-edk2-firmware: 4.2026.08-1
pve-esxi-import-tools: 1.0.1
pve-firewall: 6.0.6
pve-firmware: 3.18-7
pve-ha-manager: 5.2.5
pve-i18n: 3.10.0
pve-qemu-kvm: 11.0.3-4
pve-xtermjs: 6.0.0-2
qemu-server: 9.2.10
smartmontools: 7.5-pve2
spiceterm: 3.4.2
swtpm: 0.8.0+pve3
vncterm: 1.9.2
zfsutils-linux: 2.4.4-pve1
root@node01:~#

Vielen Dank vorab
 
Das ist wahrscheinlich ein Problem zwischen Browser und pveproxy mit der WebSocket-Verbindung. Gehst du direkt auf https://<IP>:8006 oder läuft da ein Reverse Proxy (nginx oder NPM) davor? Hatte das schon öfter mit Virenscannern, die HTTPS aufbrechen (Webschutz bzw. SSL-Inspection). Die nicken den Handshake noch ab, und danach kommt nichts mehr durch. Probier mal einen anderen Browser im privaten Fenster oder von einem anderen Rechner aus. Geht die Shell vom Node selbst (>_ Shell)? Die läuft auch über WebSocket, wäre ein guter Vergleich.

Wenn das alles nichts bringt, lass beim Öffnen der Konsole mal parallel journalctl -f -u pveproxy -u pvedaemon mitlaufen und schau mit ss -tnp | grep 5900, ob pveproxy überhaupt eine Verbindung auf den Port aufbaut.
 
@Bu66as @micneu

danke euch für die Tipps. Ich habe es gerade von meinem Jumphost via firefox versucht und Tatsache von dort funktioniert es:
1791818724599.png
Was aber nach wie vor komisch ist, von meinem Rechner von wo novnc bei node01 nicht funktioniert, funktioniert hingegen node02 (anderer server) ohne Probleme. selber browser, nichts anders. Es ist bei beiden derselbe Aufbaue, keine separate FW oder Reverse Proxy dazwischen. Wie kann man sich das erklären?