Фильтрация трафика между виртуальными машинами

Фильтрация трафика между виртуальными машинами

У меня есть машина с Fedora 21, которая выступает в качестве хост-системы для двух виртуальных машин. Виртуальные машины созданы с использованием QEMU/KVM/libvirt/virt-manager. Одна виртуальная машина запускает веб-сервер, другая виртуальная машина выступает в качестве клиента. Клиент может посещать сервер, так что сетевое взаимодействие пока работает хорошо. Я думаю, что это каким-то образом управляется через интерфейс virbr0 на хост-машине, который также выступает в качестве шлюза по умолчанию для виртуальных машин.

Теперь на хостовой машине я хочу фильтровать сетевой трафик виртуальных машин. Например, я хочу поместить его в очередь netfilter и принимать или отклонять его в зависимости от определенных обстоятельств. Пример правила iptables:iptables -I FORWARD -i virbr0 -j NFQUEUE --queue-num 1

В целом это, кажется, работает, потому что когда я отбрасываю каждый пакет, поступающий в очередь, виртуальные машины больше не могут посещать веб-сайты в Интернете. Конечно, нет, шлюз по умолчанию отбрасывает пакеты. Пока все в порядке.

Но я не могу остановить трафик между двумя виртуальными машинами. Даже если я отбрасываю пакеты, клиент может загрузить страницу, предлагаемую виртуальной машиной веб-сервера. Я думаю, это происходит потому, что виртуализация формирует сеть, в которой две виртуальные машины соединены без необходимости в шлюзе по умолчанию.

Может ли кто-нибудь подсказать мне, как контролировать трафик между двумя виртуальными машинами через iptables и очередь netfilter?

И я хочу, чтобы фильтр работал только на хост-машине. И блокировка всего трафика не предполагается. Речь идет только о фильтрации в определенных обстоятельствах. Поэтому очередь netfilter.

Связанный контент