KVM默认网络为多台虚拟机分配相同IP的问题排查
问题
使用KVM+libvirt管理虚拟机,已安装以下依赖包:
bridge-utils libvirt-daemon-system virt-manager virt-viewer qemu-kvm qemu-efi
通过以下命令创建三台虚拟机:
virt-install --import --name guest1 \ --memory 2048 --vcpus 1 --noautoconsole \ --os-variant ubuntu22.04 --hvm \ --network network=default \ --disk=/vm-images/jammy01.img --import virt-install --import --name guest2 \ --memory 2048 --vcpus 1 --noautoconsole \ --os-variant ubuntu22.04 --hvm \ --network network=default \ --disk=/vm-images/jammy02.img --import virt-install --import --name guest3 \ --memory 2048 --vcpus 1 --noautoconsole \ --os-variant ubuntu22.04 --hvm \ --network network=default \ --disk=/vm-images/jammy03.img --import
libvirt默认网络配置:
<network> <name>default</name> <uuid>9ea90610-3814-4508-b943-3e53aa5d3404</uuid> <forward mode='nat'/> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:6a:55:17'/> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254'/> </dhcp> </ip> </network>
每台虚拟机的netplan配置:
network: ethernets: enp1s0: dhcp4: true version: 2 renderer: networkd
所有虚拟机MAC地址不同,但均获取到同一个IP。执行virsh net-dhcp-leases default仅看到一条租约,三台虚拟机的DUID完全一致:
Expiry Time MAC address Protocol IP address Hostname Client ID or DUID ------------------------------------------------------------------------------------------------------------------------------------------------ 2023-02-22 12:07:14 00:50:52:a7:d7:92 ipv4 192.168.122.241/24 ubuntu ff:5d:e2:6c:15:00:02:00:00:ab:11:33:33:f1:46:a3:8b:cb:28
期望每台虚拟机获取独立IP,各对应一条DHCP租约。
解决方案
问题根源是三台虚拟机从同一镜像创建,系统中存储的DHCP客户端DUID完全相同,libvirt的DHCP服务器将它们识别为同一客户端,因此分配同一个IP。解决步骤如下:
登录每台虚拟机,删除DUID及相关配置文件
执行命令:sudo rm /var/lib/systemd/netif/leases/* sudo rm /etc/machine-id重新生成唯一的machine-id
执行命令:sudo systemd-machine-id-setup重启网络服务或虚拟机
重启网络服务生效:sudo systemctl restart systemd-networkd或直接重启虚拟机:
sudo reboot验证DHCP租约
在宿主机执行命令,确认每台虚拟机已获取独立IP:virsh net-dhcp-leases default
后续预防措施
后续创建新虚拟机前,建议对基础镜像执行sysprep操作,清除个性化配置(包括machine-id、DUID等),避免重复问题:
virt-sysprep -a /vm-images/jammy-base.img
内容的提问来源于stack exchange,提问作者dev.whoan
相关产品推荐
相关产品推荐

