在区域处于绑定状态时,是否可以将区域拆分到两个服务器(例如内部和外部)之间,并让内部服务器解析“bar.com”的请求。如果记录不在该服务器区域中,则转发到具有与外部记录相同的“bar.com”区域的外部服务器?
Bind 中的转发选项有“first”和“only”作为选项。“First”与我所寻找的相反。
“如果设置为‘第一个’(默认),它将把查询发送到转发器,如果没有得到答复,则会尝试回答查询。”
我正在寻找一个“最后”选项,其中“如果设置为‘最后’,它将尝试回答查询,否则将查询发送给转发器”
答案1
答案(正如您所怀疑的)是否定的。目前 bind 中没有提供任何功能来执行您所要求的操作。如果您的内部服务器响应为某个区域的权威服务器,则它会假定它拥有该区域的所有知识。
也就是说,可能值得尝试使用 NS 记录来委托外部子域。
内部区域:
$ORIGIN bar.com.
$TTL 14400 ; 4 hours
bar.com. IN SOA ns1-int.bar.com. admin.bar.com. (
2012020206 ; serial
86400 ;refresh (1 day)
600 ;retry (10 minutes)
1814400 ;expire (3 weeks)
60 ;minimum (1 minute)
)
IN NS ns1-int.bar.com.
IN NS ns2-int.bar.com.
; define internal nameservers
ns1-int.bar.com. IN A 10.0.1.1
ns2-int.bar.com. IN A 10.0.1.2
; internal records
www.bar.com. IN A 10.0.0.1
db.bar.com. IN A 10.0.0.2
proxy.bar.com. IN A 10.0.0.3
; define external nameservers
ns1.bar.com. IN A 2.3.4.5
ns2.bar.com. IN A 2.3.5.6
; delegate subdomain foo to external nameservers
foo.bar.com. IN NS ns1.bar.com.
foo.bar.com. IN NS ns2.bar.com.
此时,如果您的内部 DNS 服务器(假设它允许 localnets 递归)收到对 foo.bar.com 的请求,它将转到 ns1.bar.com。
当然,您必须对每个想要引用到外部服务器的子域名都执行此操作,但是在对每个外部子域名进行初始设置之后,无论何时对外部子域名记录进行更改,您都不必再处理内部区域。