dnsmasq:不在 dhcp 上时转发本地域

dnsmasq:不在 dhcp 上时转发本地域

我的路由器上运行着一个 dnsmasq 服务器,它负责处理 dhcp 和 dns(缓存、转发)。我配置了我的本地域:domain=example.com

我可以解析本地 dhcp 主机名:

dig +short dhcp1.example.com
10.0.0.53

现在我在 public.example.com 上有一个公共 dns 条目,但它无法被 dnsmasq 解析,因为它不是由 dhcp 提供服务的,也不在 /etc/hosts 中

dig +short public.example.com
NXDOMAIN

现在我的问题是:是否可以告诉 dnsmasq 向上游 dns 服务器询问任何未由 dhcp 提供服务的主机?

作为一种解决方法,我可以将 public.example.com 添加到 /etc/hosts 文件中。但这样我就必须手动为该域上的每个公共 DNS 条目执行此操作。

我读过手册页并注意到以下部分--domain

如果域名以“#”形式给出,那么该域名将从 /etc/resolv.conf(或等效文件)中的第一个“搜索”指令中读取。

因此我尝试添加server=/example.com/#到配置中,但没有达到预期的效果。

谢谢您的回答 :-)

答案1

DNS 服务器不允许在多个服务器之间划分同一域区域中的条目。如果服务器对某个区域具有权威性,则它无法传递请求。您可以添加其他服务器来处理区域(例如,如果它们是主服务器和从服务器,或 AD 复制服务器),但假设所有服务器都有相同的答案;如果没有,您有时会得到答案,有时则得不到!

我认为有两种方法可以解决此问题:

  1. 明确区分内部/外部。将内部域(由 处理dnsmasq)命名为internal.example.com;外部地址继续由公共 DNS 服务器解析。这样做的好处是您不必担心名称冲突。

  2. 正如您所指出的,将公共 DNS 条目作为静态记录添加到dnsmasq。除了初始工作之外,如果您的公共地址发生变化,您还必须更改记录,因为它们不会被跟踪。

在这两种方法中,我可能会选择第一种方法,因为它使管理更容易,但两种方法都应该可行。

相关内容