Назад | Перейти на главную страницу

Как установить -h, --no-hosts для экземпляра dnsmasq KVM

У меня есть виртуальные машины на базе KVM, работающие на моем ноутбуке, а имена виртуальных машин разрешаются через DNS-сервер KVM dnsmasq. Однако DNS-сервер dnsmasq KVM также разрешает имена в файле hosts / etc / hosts, что вызывает у меня некоторые проблемы. Поэтому я хочу изменить конфигурацию, согласно которой файл / etc / hosts KVM-сервера не используется для разрешения имен.

Согласно справке dnsmasq, это должно быть возможно с использованием параметра -h или --no-hosts, однако я не нашел способа правильно настроить dnsmask KVM. virsh net-edit позволяет мне редактировать конфигурационный XML, однако неясно, как установить там параметр -h или --no-hosts.

Способ 1

Самый простой способ решить эту проблему - установить acl на / etc / hosts, который запрещает пользователю dnsmasq доступ к файлу. В debian этот пользователь nobody, в Ubuntu это libvirt-dnsmasq.

Вы можете установить acl следующим образом:

setfacl -m user:nobody:--- /etc/hosts

Способ 2

Однако, если у вас очень новая версия libvirt (еще не доступная в debian buster), теперь для нее есть официальная поддержка:

Libvirt v5.6.0 (05.08.2019) добавлена ​​поддержка передачи пользовательских параметров в dnsmasq.

Из документация:

Для передачи параметров непосредственно в базовый файл конфигурации dnsmasq доступно специальное пространство имен XML. Использование пространств имен XML не требует гарантий поддержки, поэтому используйте их на свой страх и риск.

В этом примере XML передаются строки параметров foo=bar и cname=*.foo.example.com,master.example.com непосредственно к базовому экземпляру dnsmasq.

<network xmlns:dnsmasq='http://libvirt.org/schemas/network/dnsmasq/1.0'>
  ...
  <dnsmasq:options>
    <dnsmasq:option value="foo=bar"/>
    <dnsmasq:option value="cname=*.foo.example.com,master.example.com"/>
  </dnsmasq:options>
</network>

Итак, я бы попробовал это:

<network xmlns:dnsmasq='http://libvirt.org/schemas/network/dnsmasq/1.0'>
  ...
  <dnsmasq:options>
    <dnsmasq:option value="no-hosts"/>
  </dnsmasq:options>
</network>