考虑一个跨多个站点的私有网络,每个站点都有自己的 DNS 服务器,用于解析内部私有 IP/主机。无需 DHCP。
任何服务器已运行 dnsmasq,将 127.0.0.1 设置为 DNS(在 内resolv.conf
),并且 dnsmasq 配置指向本地 DNS 服务器。基本上,dnsmasq 似乎仅充当 DNS 代理。
与通常的将每台服务器直接指向本地 DNS 服务器的配置相比,此配置有什么好处?我预计在这种情况下主机名/IP 也会被缓存,不是吗?
答案1
dnsmasq
可能是一种选择。如果您启用缓存,您可能会获得一些性能,您可以添加一些自定义配置(例如将“本地”查询发送到您的站点 DNS 并将“公共”查询发送到 google 的 8.8.8.8)并更好地监控 DNS 活动。但我个人会评估其他替代方案,例如 Power DNS Recursor(https://www.powerdns.com/recursor.html)或结解析器(https://www.knot-resolver.cz/)
这些 DNS 解析器具有更多功能dnsmasq
(例如支持 RPZ),因此如果您对本地解析器感兴趣,则应该对它们进行评估。
答案2
许多最近的 Linux 发行版都依赖dnsmasq
于其名称解析,请参阅解释。主要原因是:
这样做是为了更好地支持 VPN 用户的拆分 DNS,并更好地处理 DNS 故障和回退。出于安全原因,此 dnsmasq 服务器不是缓存服务器,以避免与本地缓存中毒和用户在多用户系统上窃听其他 DNS 查询相关的风险。
我也发现它相当烦人,因为我觉得我失去了对 DNS 管理的一些控制,而且发现它不像它想象的那么方便,更多的缓存,在复杂设置的情况下更多的调试等等。
幸运的是,通过注释掉下面这一行就可以很容易地摆脱这种行为:
dns=dnsmasq
并/etc/NetworkManager/NetworkManager.conf
重新启动网络管理器:
启用 systemd 的操作系统
# sudo systemctl 重启网络管理器
SysV / upstart
# sudo 服务网络管理器重启