У меня есть маршрутизатор OpenWRT с включенными автоматическими доменами dhcp. Таким образом, для хоста example-host я автоматически получаю запись A для example-host.lan на 192.168.1.2.
Я пытаюсь настроить cname с подстановочным знаком для * .example-host.lan. Для этого dnsmasq, по-видимому, должен быть авторитетным DNS-сервером для домена.
Конфигурация до моих попыток ниже. С его помощью при pinging 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, и это огромная программа с man-страницей, которая выглядит так, как будто она была написана на чужом языке для меня ... Вы хоть представляете, что я здесь делаю неправильно? ? А еще лучше, есть ли простое для понимания объяснение всему этому?
Я считаю, что использование 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