Ubuntu Server 24.04下使用WiFi接口创建KVM虚拟网络失败求助
Ubuntu Server 24.04下使用WiFi接口创建KVM虚拟网络失败求助
嗨,我来帮你捋捋这个问题~你遇到的错误本质是libvirt自带的dnsmasq实例启动失败,和你之前为了Pi-Hole修改的DNS设置直接相关,下面给你两种解决思路,你可以根据自己的需求选:
思路一:用桥接模式绕开dnsmasq(最适合你的需求)
因为你只需要虚拟机连家庭网络,不需要主机和虚拟机通信,那直接把虚拟机网卡桥接到WiFi接口是最省事的,完全不用碰libvirt的dnsmasq:
- 先确认主机WiFi接口的名字,比如用
ip link show看,一般是wlan0或者wlp2s0 - 编辑Ubuntu的netplan配置文件(默认路径是
/etc/netplan/00-installer-config.yaml),改成桥接配置:network: version: 2 ethernets: wlan0: # 这里换成你的WiFi接口名 dhcp4: no optional: true bridges: br0: interfaces: [wlan0] dhcp4: yes # 让桥接设备自动获取家庭路由器的IP optional: true - 应用配置:
sudo netplan apply - 之后创建/修改KVM虚拟机时,把网络接口直接选成
br0,虚拟机就能直接获取家庭路由器分配的IP,完全融入家庭网络,再也不会有dnsmasq的冲突问题了。
思路二:修改libvirt虚拟网络配置,解决dnsmasq冲突
如果你非要用libvirt默认的NAT虚拟网络,那得调整它的dnsmasq设置,避免和Pi-Hole抢端口:
- 先停止当前的默认虚拟网络:
sudo virsh net-destroy default - 编辑虚拟网络的XML配置:
sudo virsh net-edit default - 在配置里添加一行
<dns enable="no"/>,直接禁用libvirt的DNS服务(反正你用Pi-Hole当DNS),修改后的配置大概是这样:<network> <name>default</name> <uuid>xxxxxx-xxxx-xxxx-xxxx-xxxxxx</uuid> <forward mode="nat" dev="wlan0"/> <!-- 这里指定用WiFi接口做转发 --> <bridge name="virbr0" stp="on" delay="0"/> <dns enable="no"/> <!-- 关键:禁用自带DNS --> <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> - 保存后启动虚拟网络:
sudo virsh net-start default - 最后记得给虚拟机手动指定DNS服务器为Pi-Hole的IP,不然虚拟机没法解析域名。
另外要提一句:有些消费级WiFi网卡不支持桥接模式,如果用思路一遇到问题,就换思路二试试~
备注:内容来源于stack exchange,提问作者Asem Khen
相关产品推荐
相关产品推荐

