
Я запускаю dnsmasq 2.90 внутри контейнера Docker на базе Debian 11.0 как часть Pi-hole 5.18.2.
Я хотел бы настроить dnsmasq для обслуживания адресов моих локальных имен хостов для нескольких локальных доменов (как .local, так и .subdomain.mydomain.com), поскольку локальное приложение имеет жестко закодированный домен .local. Я могу заставить его работать только для одного домена за раз.
Этот контейнер предоставляет DNS и DHCP-сервисы для моих локальных сетей. Как часть настройки Pi-hole addn-hosts=/etc/pihole/local.list
добавляется в .conf
файл, смонтированный в /etc/dnsmasq.d
. Этот список содержит список из ~30 IP-адресов из локальных и локально доступных подсетей и имен хостов, таких как:
192.168.1.10 server01
192.168.2.20 server02
100.115.x.x server03
dnsmasq обслуживает локальный домен поиска по DHCP, как указано в , так domain=subdomain.mydomain.com
и dhcp-option=option:domain-search.subdomain.mydomain.com
в отдельных файлах конфигурации, смонтированных в /etc/dnsmasq.d
, а также настроенных как локальный домен с local=/subdomain.mydomain.com/
.
Этот поисковый домен, а также IP-адрес DNS-сервера принимаются и реализуются так, как и ожидают мои клиенты:
❯ cat /etc/resolv.conf
…
search subdomain.mydomain.com
nameserver 192.168.2.2
Имя nslookup
хоста работает addn-hosts
, как и ожидалось, добавляя суффикс поиска и возвращая правильный результат:
❯ nslookup
> server01
Server: 192.168.2.2
Address: 192.168.2.2#53
Name: server01.subdomain.mydomain.com
Address: 192.168.1.10
Я хотел бы вернуть тот же IP для server01.local:
> server01.local
Server: 192.168.2.2
Address: 192.168.2.2#53
** server can't find server01.local: NXDOMAIN
Я пробовал добавлять local в файлы .config как local=/subdomain.mydomain.com/local/
с, так и без domain=/subdomain.mydomain.com/local/
и отдельными domain=subdomain.mydomain.com
domain=local
записями. Это либо не меняет поведение, либо (если я добавляю две domain=
записи) nslookup тогда работает для .local
и не работает для .subdomain.mydomain.com
.
Как сделать так, чтобы dnsmasq отвечал IP-адресом хоста для обоих .local
доменов .subdomain.mydomain.com
?
решение1
Для тех, кто в будущем обнаружит это, ответ (как это часто бывает) — я был глуп.
.local зарезервирован для mDNSи поэтому, заставив мое устройство dnsmasq попытаться разрешить .local и объявив о своей способности разрешать .local, я нарушил mDNS. Я также тестировал разрешение с помощью nslookup, который не разрешает запросы mDNS.
После удаления всех ссылок на .local в dnsmasq, перезапуска служб, обновления аренды DHCP и тестирования разрешения .local с помощью ping все заработало.