我正在尝试在 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
确保您使用的地址尚未被其他虚拟机使用。
这显然要求您能够登录虚拟机控制台;如果您之前没有设置允许您这样做的密码,则可以使用多种解决方案(在本地安装文件系统,使用guestfish
或virt-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
没有运行,那么您可以尝试重置网络:
- 关闭虚拟机。
- 跑步
virsh net-destroy default
- 跑步
virsh net-start default
- 启动虚拟机
然后看看情况是否有变化。