
Ich bin gerade von VirtualBox auf Virt Manager mit KVM umgestiegen und bin sehr zufrieden mit dem Wechsel (mein ursprünglicher Grund dafür war, die gleiche Virtualisierung für Desktop-VMs und Server-VMs zu verwenden, indem ich sowohl Virtualbox als auch Vanilla Proxmox zugunsten von libvirt aufgegeben habe). Allerdings weiß ich nicht wirklich, was ich tue, also könnte ich etwas Hilfe gebrauchen.
Ich führe Debian-VMs auf einem Debian-Host aus. Ich habe eine einfache Bridge auf dem Host definiert (in /etc/network/interfaces) und alle meine VMs darauf abgelegt. Der Host führt die UFW-Standardkonfiguration aus. Alles ist gut und in Ordnung, bis ich versuche, nwfilters zu verwenden.
Ich habe einen Filter definiert (virsh nwfilter-define) und ihn zu einer VM „my-vm1“ hinzugefügt (auch bekannt als „reffilter filter=‚my-vm1-filter‘ im Netzwerkgerät von my-vm1).Der Datenverkehr von „my-vm1“ wird wie erwartet gefiltert, ABER andere VMs verlieren ärgerlicherweise die Konnektivität:
- ein Neustart dieser anderen VMs hilft nicht: es sieht so aus, als ob sie kein DHCP ausführen können
- das Stoppen von my-vm1 hilft nicht
- Um die Netzwerkverbindung auf anderen VMs wiederherzustellen, ist ein Neustart des Hosts und kein Starten von my-vm1 erforderlich.
- Ich habe versucht, die Änderung an iptables -L nach dem Start von my-vm1 zu verstehen, und es ist verwirrend. Aber ich weiß überhaupt nichts über iptables.
Erste Frage: Gibt es ein bekanntes Problem, einen bekannten Schritt oder eine bekannte Einschränkung bei der Verwendung von NWFilters, die ich leider übersehen habe?
Und wenn nicht, Vorschläge, was ich als nächstes versuchen soll? Ich freue mich, etwas Neues zu lernen, das für mein Problem relevant ist.
Antwort1
Falls jemand hier landet, hier einige Fortschritte:
- Mir wurde klar, dass nft mir ein besseres Bild liefern würde als iptables, auf das in alten Beiträgen verwiesen wird. Soweit ich verstanden habe, verwendet libvirt heutzutage nftables
- Es stellt sich heraus, dass ufw nicht gut mit libvirt funktioniert: Wenn ich es deaktiviere, verschwindet mein Problem und andere VMs ohne nwfilter funktionieren einwandfrei.
- Habe irgendwo gelesen, dass Firewalld besser mit Libvirt funktioniert, habe es aber nicht ausprobiert
EDIT: Für Neulinge wie mich funktioniert Firewalld zumindest für meinen einfachen Anwendungsfall tatsächlich viel besser:
- Platzieren Sie die Host-Bridge in der Zone „libvirt“
- Dienste, Ports usw. dieser Zone gelten nur für den eingehenden Datenverkehr des Hosts (nicht für die VMs, die dann auf ihren eigenen NW-Filter zurückgreifen können).
- Das Ziel der Libvirt-Zone muss auf „Akzeptieren“ bleiben (weder löschen noch ablehnen): Etwas kontraintuitiv werden die Pakete, die nicht von den Diensten/Ports abgedeckt sind, vom Host nicht akzeptiert, aber „Akzeptieren“ ist für den VM-Verkehr erforderlich.