Контейнерные разрешения DNS работают только после перезапуска dnsmasq

[Обновление] добавить версии программного обеспечения

У меня есть домашний сервер, на котором работает докер и DNS/ DHCP для моей домашней сети. Все работает довольно хорошо, кроме одной вещи:Контейнеры не могут выполнять разрешение DNS после перезагрузки. Как только я перезапускаю dnsmasq, он сразу начинает работать.

если я загляну в журналctl, я увижу это сообщение:Oct 29 23:56:15 hub.mi.casa dnsmasq[425]: Ignoring query from non-local network

я думаю что докер создает некоторые сетевые интерфейсы, которые dnsmasq не подхватывает после запуска, хотя в документах dnsmasq четко указано...

В системах, которые его поддерживают, dnsmasq связывает групповой адрес, даже если он прослушивает только некоторые интерфейсы. Затем он отбрасывает запросы, на которые не должен отвечать. Это имеет то преимущество, что работает, даже когда интерфейсы приходят и уходят и меняют адрес. [...] (из:--bind-interfaces)

... так что я думаю, что это должно работать.

Конфигурация системы:

  • Debian Bullseye (11.1)
  • Docker v20.10.10 (Репозитории Docker), без специальных настроек (DOCKER_OPTS и т. д.)
  • dnsmasq v2.85 (Репозиторий Debian)
  • systemd-resolvedактивен, но DNSStubListener=noустановлен
  • systemd-networkdобрабатывает сеть (статический IP-адрес)

Я не могу понять, что здесь делать, есть ли у кого-нибудь идеи? Я действительно нашел отчет об ошибке RedHat , в котором почти точно описывается, что я испытываю, хотя предполагается, что проблема решена.

Я действительно не хочу запускать dnsmasq после docker, потому что система и вся моя сеть прекрасно работают без docker, но не без dnsmasq.

Файлы конфигурации

dnsmasq.conf

# MAIN SETTINGS

port=53
domain-needed
expand-hosts
bogus-priv
no-resolv
no-hosts

server=127.0.0.1#8053

# DHCP CONFIGURATION

dhcp-range=192.168.1.150,192.168.1.200,12h
domain=mi.casa
local=/fritz.box/

# set dhcp options ("dnsmasq --help dhcp" for list)
dhcp-option=option:router,192.168.1.1
dhcp-option=option:dns-server,192.168.1.13
dhcp-option=option:domain-search,mi.casa

# static IP address assignments using DHCP (example)
dhcp-host=aa:cc:dd:ff:ee:33,hass.mi.casa,192.168.1.20

# static ip address entries (example)
address=/hub.mi.casa/192.168.1.13

/etc/systemd/network/10-static.network

[Match]
Name=en*

[Network]
Address=192.168.1.13/24
Gateway=192.168.1.1
DNS=192.168.1.13#8053 # that's a pi-hole running on the system
Domains=mi.casa
1
задан 30 October 2021 в 10:26
1 ответ

Святой моли, я нашел решение здесь, в едва двухстрочном комментарии от @mosvy под несколько связанным вопросом. исходя из этого, у меня даже есть два решения сейчас.

Целью, по-видимому, является отключение ограничения на обслуживание только локальных сетей. кажется, что есть два пути.

решение 1

# dnsmasq.conf - add this - thanks @mosvy
except-interface=my_dummy_interface

Да, на самом деле это my_dummy_interface, это имя, которого не существует (вы также можете назвать его «smurfydurfy»). таким образом, dnsmasq связывает и отвечаетна всех интерфейсах автоматически, кроме одного ... который никогда не появляется.

решения 2

# dnsmasq.conf - add this
listen-address=127.0.0.1,192.168.1.13

одно и то же, по-видимому, оно привязывается к этим адресам и отвечает на все запросы независимо от происхождения.

0
ответ дан 30 October 2021 в 11:17

Теги

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