有没有办法让 bind 回答某些查询,但将所有其他查询(同一域的)转发到另一台服务器,如下所示:
example.com A 127.0.0.1
www.example.com A 127.0.0.1
此列表之外的所有内容(example.com MX、ftp.example.com A 等)- 询问 192.168.0.1(另一个 DNS 服务器)
本质上我想拦截一些(但不是全部)前往(在此示例中)192.168.0.1 的查询并对其进行应答。
example.com A- intercept
www.example.com - intercept
example.com MX - pass trough
ftp.example.com - pass trough
答案1
使用 BIND 来处理这个问题相当棘手。虽然这和您问的不太一样,但您是否考虑过使用其他 DNS 服务器,例如 DNSMasq,这类事情相对简单?
答案2
您的 BIND 服务器将默认使用 DNS 服务器来/etc/resolv.conf
解析它不具备权威性的记录,但仅有的针对 localhost(即其本身)和 localnets(见下文)。您应该确保这些设置正确。
匹配运行 BIND 的服务器的所有 IP 地址和子网掩码。例如,如果服务器有一个接口,其 IP 地址为 192.168.2.3,网络掩码为 255.255.255.0(或 192.168.2.2/24),则 localnets 将匹配 192.168.2.0 到 192.168.2.255 和 127.0.0.1(环回始终存在且具有单个地址,即网络掩码为 255.255.255.255)。某些系统不提供确定本地 IPv6 地址前缀长度的方法。在这种情况下,localnets 仅匹配本地 IP 地址,就像 localhost 一样,尽管在这种情况下它将适用于外部和内部(同一主机)请求。
您还可以像这样明确定义全局转发器,记住要保护您的环境:
options {
recursion yes;
allow-recursion-on {
192.168/24;
};
forwarders {
8.8.8.8;
8.8.4.4;
};
};
如果您想要将特定域的查询定向到特定服务器,可以通过为各个域配置转发器来实现:
zone "myothernet.local" {
type forward;
forwarders {
192.168.50.11;
192.168.50.12;
};
};
进一步阅读:
答案3
我认为你需要子域名委派。。但是,它通常被设置为将区域中的特定子域指向另一台服务器。
就您而言,将区域分配给辅助服务器、在其中设置通配符记录并为指向主服务器的特定子域设置子域委派可能会更容易。