我在VM环境中使用dnsmasq作为DHCP服务器。 但它没有工作。 我禁用了libvirt中的基本DHCPfunction。
<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创build监听套接字)所以我将注释掉了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。 但guest虚拟机无法获得dnsmasq服务器正在运行的主机的IP地址。
之后,我安装了isc-dhcp-server而不是dnsmasq ….并且它可以正常工作! 但我仍然想使用dnsmasq而不是isc-dhcp-server。 有帮助吗?
Libvirt确实使用DNSMasq来处理DHCP。 如果您正在尝试使用DNSMasq进行一些高级configuration,则需要确保Libvirt不会干扰(从您的configuration中删除DHCP选项将会起作用)。
您的实际问题似乎是由“监听地址”声明造成的。 DNSMasq需要您要分配到的子网中的有效IP地址。 您应该将其configuration为使用192.168.122.0/24范围内的IP。 如果你不这样做,它实际上不能分配任何IP地址。