如何强制libvirt使用主机dnsmasq服务?

如何强制libvirt使用主机dnsmasq服务?

Libvirt 有一个定义的网络,用作dnsmasqDHCP/DNS 服务器。但这dnsmasq是一个单独的实例(配置在/var/lib/libvirt/dnsmasq/default.conf),它创建了额外的dnsmasq进程。我已经使用我自己的全局/系统实例一段时间了dnsmasq,我想将它与 libvirt 虚拟机一起使用。但看起来这并不是一件容易实现的任务。

现在,我通过删除以下 ( virsh net-edit default) 禁用了默认网络的 DNS 和 DHCP:

<dhcp>
  <range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>

并添加以下内容:

<dns enable="no"/>

这当然使 libvrt 停止创建额外的 dnsmasq 进程,但是应该将什么添加到系统/etc/dnsmasq.conf配置文件中,以便虚拟机通过 DHCP 获得 IP 地址并能够使用 DNS 名称访问网络?

答案1

我已经设法解决了它。

基本上,问题出在默认网络上——不应该使用它,或者应该更改它。我刚刚创建了另一个网络(在 中/etc/libvirt/qemu/networks/host-bridge.xml),内容如下:

<network>
  <name>host-bridge</name>
  <forward mode="bridge"/>
  <bridge name="virbr0"/>
</network>

然后,在虚拟机中,我将它们使用的网络更改为新创建的网络。

桥也是virbr0使用以下文件创建的/etc/network/interfaces

auto virbr0
iface virbr0 inet static
    bridge_bridgeprio 20
    address 192.168.122.1
    netmask 255.255.255.0
    bridge_ports none
    bridge_stp on
    bridge_waitport 5
    dns-nameservers 127.0.0.1
    dns-search libvirt

看起来效果很好,但我必须稍微尝试一下,看看它是否真的按照我想要的方式工作。

相关内容