[更新] 增加软件版本
我有一台家用服务器,它为我的家庭网络运行 docker 和 DNS/DHCP。除了一件事之外,一切都运行良好:容器在重启后无法进行 DNS 解析。一旦我重新启动 dnsmasq,它就会立即开始工作。
如果我查看 journalctl,我会看到以下消息:Oct 29 23:56:15 hub.mi.casa dnsmasq[425]: Ignoring query from non-local network
我思考docker 创建了一些网络接口,但 dnsmasq 在启动后无法获取这些接口,尽管 dnsmasq 文档明确说明了这一点……
在支持它的系统上,dnsmasq 会绑定通配符地址,即使它只监听某些接口。然后它会丢弃它不应该回复的请求。这样做的好处是,即使接口来来去去并更改地址,它也能正常工作。[...](来自
--bind-interfaces
:)
...所以我猜这个应该工作。
系统配置:
- Debian Bullseye(11.1)
- Docker v20.10.10(Docker repos),无特殊设置(DOCKER_OPTS 等)
- dnsmasq v2.85(Debian 存储库)
systemd-resolved
处于活动状态但DNSStubListener=no
已设置systemd-networkd
处理网络(静态 IP 地址)
我不知道该怎么做,有人有什么想法吗?我做过发现RedHat 错误报告它几乎准确地描述了我所经历的事情,但它应该得到解决。
我不太想在 docker 之后启动 dnsmasq,因为系统和整个网络在没有 docker 的情况下也能正常工作,但没有 dnsmasq 就不行。
配置文件
dnsmasq配置文件
# 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
我的天,我在这里找到了解决方案,在@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
显然是同样的事情,它绑定在这些地址上并回答所有请求,无论来源如何。