我正在尝试对正在运行的虚拟机的 MAC 地址进行一些更改并获取新的 IP 地址。目前,虚拟机通过主机的桥接接口连接到外部网络。我想暂时(10-20 秒)阻止虚拟机与主机的网络连接,但与 dhcp 相关的数据包除外。
是否可以?
答案1
当然,您可以断开虚拟机与主机网络的连接,或者只应用相关iptables
规则ebtables
来阻止数据包去往任何地方。
如果没有有关网络设置方式的更多详细信息,就不可能给您提供更详细的命令,但它们都是基本的管理任务。
答案2
如果您正在为虚拟机使用桥接网络,只需从桥接适配器中删除虚拟机的接口,执行更改,然后重新添加即可。如果主机是 Linux 操作系统,则需要安装 bridge-utils 包(可能已经安装了)。运行以下命令:
brctl show
要查看哪些桥接设备已启动并正在运行,请识别桥接设备名称和虚拟机网络适配器,然后将其从桥接设备中删除:
brctl delif brdev0 vmdev0
在虚拟机上执行您需要执行的操作,完成后将其添加回桥接器:
brctl addif brdev0 vmdev0
PS:以上命令应以root身份运行。
答案3
我猜你的目的是找到一种方法来从主机端应用每个特定 VM 实例的过滤器?将过滤器应用于主机的传出接口与任何正常的iptables设置,但随后虚拟机将能够不受过滤地相互通信。
您是否尝试过应用正常iptables和ebtables规则对应虚拟网络主机中是否有接口?我自己还没有尝试过,但我认为它很有可能会起作用。
如果你正在使用虚拟器要管理您的 QEMU/KVM 实例,您可以执行virsh dumpxml VMNAME
并查找一行以<target dev='vnet0'/>
查看相关的 vnet 接口。