Virsh 没有为虚拟机分配动态 IP 地址

Virsh 没有为虚拟机分配动态 IP 地址

我正在尝试在 Debian 12 主机上设置 KVM 机器,该主机连接到 libvirt 创建的默认网络。然而,即使网络处于活动状态并且可用192.168.122.1/24......

# ip addr show virbr0
55: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:16:d4:1a brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever

...没有分配 IP 地址VM(即 的输出为virsh net-dhcp-leases空)。

的截断输出virsh dumpxml vm0如下。

<domain type='kvm' id='5'>
...
    <interface type='network'>
      <mac address='52:54:00:ab:71:69'/>
      <source network='default' portid='8ff73a58-1d26-460a-81e9-94f3143e9006' bridge='virbr0'/>
      <target dev='vnet4'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
...
</domain>

网络转储的XMLdefault是。

<network connections='1'>
  <name>default</name>
  <uuid>e9f0c964-b736-4c6f-826f-0845a952f8ec</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:16:d4:1a'/>
  <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>

我已经尝试使用 来跟踪该问题journalctl,但没有成功。

答案1

测试网络连接

分配静态地址时测试虚拟机是否具有连接。登录虚拟机控制台并为接口分配一个地址(我假设它名为eth0,但如果不同,请将其替换为适当的地址):

ip addr add 192.168.122.100/24 dev eth0
ip link set eth0 up

确保您使用的地址尚未被其他虚拟机使用。

这显然要求您能够登录虚拟机控制台;如果您之前没有设置允许您这样做的密码,则可以使用多种解决方案(在本地安装文件系统,使用guestfishvirt-customize等工具)。

现在,看看是否可以 ping 通网桥:

ping 192.168.122.1

这行不行?

检查网络是否正常

确保关联的网络已启动。您default在 的输出中看到网络了吗virsh net-list

检查 dnsmasq 是否正在运行

当您启动 libvirt 网络时,libvirtd 会启动一个dnsmasq实例来管理该网络的地址分配。对于default网络,您应该在输出中看到类似以下内容ps -fe

dnsmasq   252591       1  0 Mar29 ?        00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper

如果dnsmaq没有运行,那么您可以尝试重置网络:

  1. 关闭虚拟机。
  2. 跑步virsh net-destroy default
  3. 跑步virsh net-start default
  4. 启动虚拟机

然后看看情况是否有变化。

相关内容