Filtern des Datenverkehrs zwischen virtuellen Maschinen

Filtern des Datenverkehrs zwischen virtuellen Maschinen

Ich habe eine Maschine mit Fedora 21, die als Hostsystem für zwei virtuelle Maschinen fungiert. Die VMs werden mithilfe von QEMU/KVM/libvirt/virt-manager erstellt. Eine VM betreibt einen Webserver, die andere VM fungiert als Client. Der Client kann den Server besuchen, sodass die Netzwerkverbindung bisher gut funktioniert. Ich denke, es wird irgendwie über die virbr0-Schnittstelle auf der Hostmaschine verwaltet, die auch als Standard-Gateway für die VMs fungiert.

Nun möchte ich auf dem Host-Rechner den Netzwerkverkehr der virtuellen Maschinen filtern. Ich möchte ihn zum Beispiel in eine Netfilter-Warteschlange stellen und ihn je nach bestimmten Umständen akzeptieren oder löschen. Eine beispielhafte iptables-Regel istiptables -I FORWARD -i virbr0 -j NFQUEUE --queue-num 1

Im Allgemeinen scheint es zu funktionieren, denn wenn ich jedes in die Warteschlange eingehende Paket verwerfe, können die VMs keine Websites im Internet mehr besuchen. Natürlich nicht, das Standard-Gateway verwirft die Pakete. Soweit alles gut.

Aber ich kann den Datenverkehr zwischen den beiden VMs nicht stoppen. Selbst wenn ich die Pakete verwerfe, kann der Client die von der Webserver-VM angebotene Seite laden. Ich denke, das liegt daran, dass die Virtualisierung ein Netzwerk bildet, in dem die beiden VMs ohne die Notwendigkeit eines Standard-Gateways verbunden sind.

Kann mir also jemand sagen, wie ich den Datenverkehr zwischen zwei VMs über Iptables und die Netfilter-Warteschlange steuern kann?

Und ich möchte die Filterarbeit nur auf dem Host-Rechner durchführen. Und es ist nicht beabsichtigt, den gesamten Datenverkehr zu blockieren. Es geht nur darum, unter bestimmten Umständen zu filtern. Daher die Netfilter-Warteschlange.

verwandte Informationen