Я пытаюсь внести несколько изменений в MAC-адрес работающей виртуальной машины и получить новый IP-адрес. В настоящее время виртуальные машины подключены к внешней сети через интерфейс моста хоста. Я хотел бы временно (10-20 секунд) заблокировать сетевое соединение виртуальной машины с хост-машиной, за исключением пакетов, относящихся к dhcp.
Является ли это возможным?
Если вы используете мостовую сеть для виртуальной машины, просто удалите интерфейс виртуальной машины с адаптера моста, внесите изменения, а затем добавьте его обратно. Если хост - это операционная система Linux, вам понадобится установленный пакет bridge-utils (возможно, он уже установлен). Запустите это:
brctl show
чтобы увидеть, какие устройства моста включены и работают, определите имя вашего моста и сетевой адаптер виртуальной машины, затем удалите его из моста:
brctl delif brdev0 vmdev0
Сделайте то, что вам нужно сделать на виртуальной машине, и когда вы закончите, добавьте ее обратно в мост:
brctl addif brdev0 vmdev0
PS: приведенные выше команды следует запускать от имени пользователя root.
Конечно, вы можете либо отключить виртуальную машину от хост-сети, либо просто применить соответствующие iptables
или ebtables
правила, чтобы запретить пакетам идти куда угодно.
Без дополнительной информации о том, как настроена ваша сеть, невозможно дать вам более подробные команды, но это все основные административные задачи.
Я предполагаю, что ваша цель - найти способ применить фильтры для конкретного экземпляра виртуальной машины со стороны хоста? Применение фильтров к исходящему интерфейсу хоста не отличается от любого обычного iptables setup, но тогда виртуальные машины смогут обмениваться данными между собой без фильтрации.
Вы пробовали применять нормальный iptables и ebtables правила к соответствующему vnetNNN интерфейсы в хосте? Я сам не пробовал, но думаю, что это сработает.
Если вы используете libvirt для управления экземплярами QEMU / KVM вы можете virsh dumpxml VMNAME
и найдите строку, например <target dev='vnet0'/>
чтобы увидеть соответствующий интерфейс vnet.