如何在用户网络模式下为qemu-kvm定义IP

如何在用户网络模式下为qemu-kvm定义IP

我正在尝试学习 qemu 的不同网络模式。
在用户网络模式下,qemu 将创建虚拟 DNS 并使用 DHCP 将 IP 地址关联到虚拟机。
问题是我创建的所有虚拟机都有相同的 IP,10.0.2.15所以我想它们可能位于不同的网络集线器上。我尝试创建具有相同网络 ID 或更改 MAC 的虚拟机,但它不会改变结果。
以下是我用来创建虚拟机的命令:

kvm -m 3G -cdrom ubuntu-22.04-desktop-amd64.iso -netdev user,id=network0 -device e1000,netdev=network0,mac=52:54:00:12:34:77 -name "kvm1" 

kvm -m 3G -cdrom ubuntu-22.04-desktop-amd64.iso -netdev user,id=network0 -device e1000,netdev=network0 -name "kvm2"

杰德哈恩的建议 我尝试了解 virsh 在使用桥接模式创建虚拟机时会做什么。首先,我在主机上创建了一个桥,并使用 virsh 和该桥创建了虚拟机。使用此方法,您应该进入虚拟机并手动设置接口的IP。不幸的是,输出中的虚拟机创建命令ps很混乱,您无法找到桥在哪里!像这样的东西:

qemu-system-x86_64 *** -netdev tap,fd=38,id=hostnet0,vhost=on,vhostfd=40 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:a8:7b:3b,bus=pci.1,addr=0x0

答案1

如果您使用 DHCP 服务器来配置 IP,我认为这是您的问题。

您可能克隆了虚拟机,并且从 Ubuntu 22.04(或 20?)开始,它使用称为机器 ID 的东西来获取地址。由于机器是克隆机,因此所有机器上的 ID 都是相同的。您可以更新此机器 ID(通过 systemd-machine-id-setup),或者将 netplan 配置文件中的 dhcp-indentifier 更改为如下所示,以便它使用 DHCP 的 MAC 地址:

    network
  version 2
  renderer networkd
  ethernets
    enp1s0
      dhcp4: true
      dhcp-identifier: mac

来自网络规划文档:

dhcp 标识符(标量)

(仅限网络后端)设置 DHCPv4 客户端标识符的来源。如果指定了 mac,则使用链路的 MAC 地址。如果省略此选项,或者指定了 duid,networkd 将通过组合链路的 IAID 和 DUID 为接口生成符合 RFC4361 的客户端标识符。

相关内容