virsh net-define无法应用dnsmasq配置选项问题排查
Libvirt网络dnsmasq配置段被忽略无法生效的解决方法
在Libvirt中配置网络时,添加的<dnsmasq:options>段始终被忽略,执行virsh net-define或virsh net-edit后,通过virsh net-dumpxml查看不到该配置段,导致通配符DNS解析无法生效。网络其他功能正常,日志显示完整XML已传递给libvirtd,但配置未被保留。
问题根源
原XML的<network>根元素未声明dnsmasq的命名空间,导致Libvirt解析XML时将<dnsmasq:options>及子元素视为无效内容直接丢弃。
修正后的完整XML配置
<network xmlns:dnsmasq="http://libvirt.org/schemas/network/dnsmasq/1.0"> <name>network</name> <uuid>...</uuid> <forward dev='enp0s25' mode='nat'> <nat> <port start='1024' end='65535'/> </nat> <interface dev='enp0s25'/> </forward> <bridge name='virbr1' stp='on' delay='0'/> <mac address='...'/> <domain name='network'/> <ip address='...' netmask='...'> <dhcp> <range start='...128' end='...254'/> <host mac='...' name='px2-test-oc' ip='...'/> </dhcp> </ip> <dnsmasq:options> <dnsmasq:option value='cname=*.px2-test-oc.network,px2-test-oc.network'/> <dnsmasq:option value='auth-zone=network'/> <dnsmasq:option value='auth-server=network,*'/> </dnsmasq:options> </network>
关键修改点
在<network>标签中添加dnsmasq命名空间声明:
xmlns:dnsmasq="http://libvirt.org/schemas/network/dnsmasq/1.0"
操作步骤
- 停止现有网络:
virsh net-destroy network - 重新定义网络:
virsh net-define network.xml - 启动网络:
virsh net-start network - 验证配置是否保留:
virsh net-dumpxml network
执行后应能看到<dnsmasq:options>段已被正确保留。
补充说明
Libvirt 6.0.0版本完全支持dnsmasq命名空间扩展,配置生效后,通配符*.px2-test-oc.network会被解析到px2-test-oc.network对应的IP地址。
内容的提问来源于stack exchange,提问作者Px2
相关产品推荐
相关产品推荐

