Рейтинг:1

Запись CNAME с подстановочным знаком, указанная пространством имен libvirts dnsmasq:options, не работает, работают только определенные поддомены

флаг jp

Начиная с версии 5.6.0, либвирт добавил dnsmasq пространство имен с элемент, что позволяет указывать параметры непосредственно базовому серверу dnsmasq. Я хотел бы создать запись DNS с подстановочными знаками для своих приложений с этой опцией. Так что я использовал вирш сетевое редактирование, измененный <network> к <network xmlns:dnsmasq='http://libvirt.org/schemas/network/dnsmasq/1.0'> и добавил следующие опции:

  <dnsmasq:options>
    <dnsmasq:option value='cname=boards.cnx65-k8s.hobel.internal,cnx65-k8s.hobel.internal'/>
    <dnsmasq:option value='cname=*.app.cnx65-k8s.hobel.internal,cnx65-k8s.hobel.internal'/>
  </dnsmasq:options>

После этого сеть была перезапущена (virsh net-destroy && virsh net-start) и целевая виртуальная машина тоже (вирш уничтожить && вирш начать).

cname=boards.cnx65-k8s.hobel.internal отлично работает:

$ dig +short boards.cnx65-k8s.hobel.internal @192.168.10.1
cnx65-k8s.hobel.внутренний.
192.168.10.136

Но копать +short x.app.cnx65-k8s.hobel.internal @192.168.10.1 не разрешается ни на какой IP-адрес. Сгенерированный файл конфигурации /var/lib/libvirt/dnsmasq/hobel.internal.conf содержит обе записи cname в конце:

строгий порядок
пользователь = libvirt-dnsmasq
местный=/hobel.internal/
домен = hobel.internal
расширить хосты
pid-file=/run/libvirt/network/hobel.internal.pid
кроме интерфейса = вот
связывание-динамический
интерфейс=virbr1
DHCP-диапазон = 192.168.10.10,192.168.10.254,255.255.255.0
DHCP-без переопределения
dhcp-авторитетный
DHCP-аренда-макс = 245
dhcp-hostsfile=/var/lib/libvirt/dnsmasq/hobel.internal.hostsfile
addn-hosts=/var/lib/libvirt/dnsmasq/hobel.internal.addnhosts
cname=boards.cnx65-k8s.hobel.internal,cnx65-k8s.hobel.internal
cname=*.app.cnx65-k8s.hobel.internal,cnx65-k8s.hobel.internal

Согласно этому ответу, Я добавил сервер авторизации и имя-интерфейса к вариантам:

  <dnsmasq:options>
    <dnsmasq:option value='cname=boards.cnx65-k8s.hobel.internal,cnx65-k8s.hobel.internal'/>
    <dnsmasq:option value='cname=*.app.cnx65-k8s.hobel.internal,cnx65-k8s.hobel.internal'/>
    <dnsmasq:option value='auth-server=cnx65-k8s.hobel.internal,virbr1'/>
    <dnsmasq:option value='interface-name=cnx65-k8s.hobel.internal,virbr1'/>
  </dnsmasq:options>

Но x.app.cnx65-k8s.hobel.internal до сих пор не решено:

$ копать x.app.cnx65-k8s.hobel.internal @192.168.10.1

; <<>> DiG 9.16.1-Ubuntu <<>> x.app.cnx65-k8s.hobel.internal @192.168.10.1
;; глобальные параметры: +cmd
;; Получил ответ:
;; ->>HEADER<<- код операции: QUERY, статус: NOERROR, id: 43624
;; флаги: qr rd объявление; ЗАПРОС: 1, ОТВЕТ: 0, АВТОРИЗАЦИЯ: 0, ДОПОЛНИТЕЛЬНО: 1
;; ВНИМАНИЕ: рекурсия запрошена, но недоступна

;; ДОПОЛНИТЕЛЬНЫЙ ПСЕВДОРАЗДЕЛ:
; ЭДНС: версия: 0, флаги:; UDP: 4096
;; РАЗДЕЛ ВОПРОСОВ:
;x.app.cnx65-k8s.hobel.internal. В

;; Время запроса: 0 мс
;; СЕРВЕР: 192.168.10.1#53(192.168.10.1)
;; КОГДА: Сб, 03 июля, 12:14:05 CEST 2021
;; РАЗМЕР MSG rcvd: 59

Почему это не работает? Даже официальный либвирт документация перечисляет подстановочный знак cname в качестве примера:

<dnsmasq:option value="cname=*.foo.example.com,master.example.com"/>
Lion avatar
флаг jp
Почему я получил отрицательный голос за этот вопрос? Просто отрицать любой ответ или хотя бы комментарий очень плохо и неконструктивно!
флаг pt
Вы смотрели на сгенерированный файл конфигурации для сети? Варианты там, как и ожидалось? Если да, то у вас вопрос по dnsmasq, а не по libvirt.
Рейтинг:0
флаг pt

I think you have a dnsmasq configuration problem; maybe the interface name? It looks like you can use a wildcard. Given the following configuration for my default network:

<network xmlns:dnsmasq='http://libvirt.org/schemas/network/dnsmasq/1.0' connections='1'>
  <name>default</name>
  <uuid>34eaa498-ba0f-4762-a0f9-27f53dd07687</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:5d:a7:ff'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
  <dnsmasq:options>
    <dnsmasq:option value='cname=foo.example.com,master.example.com'/>
    <dnsmasq:option value='cname=*.foo.example.com,master.example.com'/>
    <dnsmasq:option value='auth-zone=example.com'/>
    <dnsmasq:option value='auth-server=example.com,*'/>
  </dnsmasq:options>
</network>

I end up with /var/lib/libvirt/dnsmasq/default.conf that looks like:

strict-order
pid-file=/run/libvirt/network/default.pid
except-interface=lo
bind-dynamic
interface=virbr0
dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
dhcp-no-override
dhcp-authoritative
dhcp-lease-max=253
dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
cname=foo.example.com,master.example.com
cname=*.foo.example.com,master.example.com
auth-zone=example.com
auth-server=example.com,*

The following queries work from a vm attached to that network:

[root@example-vm ~]# dig +short foo.example.com
master.example.com.
[root@example-vm ~]# dig +short a.foo.example.com
master.example.com.
[root@example-vm ~]# dig +short b.foo.example.com
master.example.com.

And as expected this fails to return anything:

[root@example-vm ~]# dig +short bar.example.com

(Tests were run on Fedora 34, using libvirt-7.0.0-4.fc34.x86_64 and dnsmasq-2.85-1.fc34.x86_64)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.