我的路由器上运行着一个 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 复制服务器),但假设所有服务器都有相同的答案;如果没有,您有时会得到答案,有时则得不到!
我认为有两种方法可以解决此问题:
明确区分内部/外部。将内部域(由 处理
dnsmasq
)命名为internal.example.com
;外部地址继续由公共 DNS 服务器解析。这样做的好处是您不必担心名称冲突。正如您所指出的,将公共 DNS 条目作为静态记录添加到
dnsmasq
。除了初始工作之外,如果您的公共地址发生变化,您还必须更改记录,因为它们不会被跟踪。
在这两种方法中,我可能会选择第一种方法,因为它使管理更容易,但两种方法都应该可行。