我正在尝试对正在运行的VM的MAC地址执行一些更改并获取新的IP地址。 目前,虚拟机通过主机的网桥接口连接到外部networking。 我想暂时(10-20秒)阻止来自主机的虚拟机的networking连接,除了与dhcp有关的数据包。
可能吗?
当然,你可以从主机networking断开虚拟机,或者只是应用相关的iptables或ebtables规则来阻止数据包进入任何地方。
没有关于如何设置networking的更多细节,不可能给你更详细的命令,但它们都是基本的pipe理任务。
如果您正在为虚拟机使用桥接networking,只需从网桥适配器中移除虚拟机的接口,执行更改,然后将其添加回去。 如果主机是Linux操作系统,则需要安装bridge-utils软件包(可能已经安装)。 运行这个:
brctl show
要查看哪些网桥设备已启动并运行,请确定您的网桥名称和虚拟机networking适配器,然后从网桥中删除它:
brctl delif brdev0 vmdev0
做你需要在虚拟机上做什么,当你完成后,将它添加回桥:
brctl addif brdev0 vmdev0
PS:上面的命令应该以root身份运行。
我认为你的观点是find一种方法来应用从主机端的特定VM实例的filter? 将filter应用到主机的外出接口与任何正常的iptables设置没有区别,但是虚拟机将能够彼此之间未经过滤的通信。
您是否尝试过将正常的iptables和ebtables规则应用到主机中相应的vnetNNN接口? 我自己没有尝试过,但我认为这很有可能会奏效。
如果您使用libvirt来pipe理您的QEMU / KVM实例,则可以执行virsh dumpxml VMNAME并查找诸如<target dev='vnet0'/>来查看相关的vnet接口。