dnsmasq(作为 DHCP 服务器)在 KVM+libvirt 环境中不起作用

dnsmasq(作为 DHCP 服务器)在 KVM+libvirt 环境中不起作用

我在 VM 环境中使用 dnsmasq 作为 DHCP 服务器。但它不起作用。我在 libvirt 中禁用了基本 DHCP 功能。

<network>
  <name>default</name>
  <uuid>84da0678-e56d-8fc2-6f8b-e8eba784849a</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0' />
  <mac address='52:54:00:7B:64:0B'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
  </ip>
</network>

正如你所见,我删除了这个标签!

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

我在主机上安装了 dnsmasq。在安装 dnsmasq 的过程中,出现了一个关于 127.0.0.1 的错误消息。(dnsmasq: failed to create listening socket for 127.0.0.1) 所以我注释掉了 listen-address 选项,并添加了 dhcp-range/dhcp-option 选项,如下所示。

listen-address=127.0.0.1
dhcp-range=192.168.122.100,192.168.122.200,24h
dhcp-option=option:router,192.168.122.1

这就是我用 dnsmasq 做的所有事情。但客户虚拟机无法从运行 dnsmasq 服务器的主机获取 IP 地址。

之后,我安装了 isc-dhcp-server 而不是 dnsmasq.... 并且它可以工作!但我仍然想使用 dnsmasq 而不是 isc-dhcp-server。有人能帮忙吗?

  • 我禁用了主机的防火墙。
  • 我听说 libvirt 基本上使用 dnsmasq。这就是为什么我无法在 libvirt 环境中使用 dnsmasq 的原因吗?

答案1

Libvirt 确实使用 DNSMasq 来处理 DHCP。如果您尝试使用 DNSMasq 进行一些高级配置,则需要确保 Libvirt 不会干扰(从您的配置中删除 DHCP 选项即可)。

您的实际问题似乎是由“listen-address”语句引起的。DNSMasq 需要您尝试分配的子网中的有效 IP 地址。您应该将其配置为使用 192.168.122.0/24 范围内的 IP。如果您不这样做,它实际上将无法分配任何 IP 地址。

相关内容