Как настроить dnsmasq wildcard cnames для доменов, созданных из аренды dhcp?

У меня маршрутизатор OpenWRT с включенным автоматическим dhcp-доменом. Таким образом, для хоста example-host я автоматически получаю запись A для example-host.lan на 192.168.1.2.

Я пытаюсь настроить подстановочное имя для *.example-host.lan. Для этого dnsmasq, похоже, требует быть авторитетным dns-сервером для домена.

Конфигурация до моих попыток приведена ниже. С ней при пинге example-host.lan он разрешается, как и ожидалось, в 192.168.1.2.

dhcp-authoritative
domain-needed
localise-queries
read-ethers
enable-ubus
expand-hosts
bind-dynamic
local-service
domain=lan
server=/lan/
dhcp-leasefile=/tmp/dhcp.leases
resolv-file=/tmp/resolv.conf.auto
dhcp-broadcast=tag:needs-broadcast
addn-hosts=/tmp/hosts
conf-dir=/tmp/dnsmasq.d
user=dnsmasq
group=dnsmasq

dhcp-host=<mac address>,192.168.1.2,example-host,12h


dhcp-ignore-names=tag:dhcp_bogus_hostname
conf-file=/usr/share/dnsmasq/dhcpbogushostname.conf


bogus-priv
conf-file=/usr/share/dnsmasq/rfc6761.conf
dhcp-range=set:lan,192.168.1.100,192.168.1.249,255.255.255.0,12h
no-dhcp-interface=eth1.2
dhcp-range=set:guest,192.168.2.100,192.168.2.249,255.255.255.0,12h

После установки dnsmasq-full (поскольку пакет по умолчанию не имеет необходимых функций), я попробовал добавить эти строки в начало, с различными комбинациями диапазонов ip, eth0 или eth1, и т.д. Что бы я ни пробовал, при добавлении этих строк имя cname не генерируется, и запись A также исчезает.

cname=*.example-host.lan,example-host.lan
auth-server=example-host.lan,eth1
interface-name=example-host.lan,eth1
auth-zone=example-host.lan,192.168.0.0/16,eth1

Я думаю, что эта проблема возникает из-за моего непонимания Dnsmasq, это огромная программа с руководством, которое выглядит так, как будто написано на чужом языке... Есть ли у вас идеи, что я могу делать неправильно? А еще лучше, есть ли простое и понятное объяснение всего этого?

0
задан 7 February 2020 в 16:59
1 ответ

Я считаю, что использование cname требует, чтобы простое имя было определено в /etc/hosts.

--cname=<cname>,[<cname>,]<target>[,<TTL>]
       Return  a  CNAME  record  which indicates that <cname> is really <target>. There are significant limitations on the target; it must be a DNS name which is known to dnsmasq from /etc/hosts (or
       additional hosts files), from DHCP, from --interface-name or from another --cname.  If the target does not satisfy this criteria, the whole cname is ignored. The cname must be unique, but  it
       is permissible to have more than one cname pointing to the same target. Indeed it's possible to declare multiple cnames to a target in a single line, like so: --cname=cname1,cname2,target
-1
ответ дан 6 August 2020 в 14:17

Теги

Похожие вопросы