Я использую dnsmasq в качестве DHCP-сервера в среде виртуальной машины. Но это не сработало. Я отключил базовую функцию DHCP в libvirt.
<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: не удалось создать прослушивающий сокет для 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. Но гостевая виртуальная машина не могла получить IP-адрес от хоста, на котором запущен сервер dnsmasq.
После этого я установил isc-dhcp-server вместо dnsmasq .... и он работает! Но я все еще хочу использовать dnsmasq вместо isc-dhcp-server. Есть ли руки помощи?
Libvirt действительно использует DNSMasq для обработки DHCP. Если вы пытаетесь выполнить некоторые дополнительные настройки с помощью DNSMasq, вам необходимо убедиться, что Libvirt не мешает (удаление параметра DHCP из вашей конфигурации будет работать).
Ваша реальная проблема, по-видимому, вызвана заявлением "адрес-прослушивания". DNSMasq требует действительного IP-адреса в подсети, которую вы пытаетесь назначить. Вы должны настроить его для использования IP в диапазоне 192.168.122.0/24. Если вы этого не сделаете, он не сможет назначать какие-либо IP-адреса.