在 BIND 中递归转发区域

在 BIND 中递归转发区域

我有一个安装了 BIND 的 VPS。几个月来它运行良好。

最近我想设置另一个 DNS 程序来管理foo.example.org此 VPS 上的子域名。我在 dns.he.net 中设置了这些:

foo.example.org。IN NS vps.exmaple.org。
vps.example.org.IN A xx.xx.xx.xx

由于 BIND 在 53/udp 上监听,我将其配置为在端口 5353 上监听named.conf

区域“foo.example.org”{
 输入前进;
 转发器{ 127.0.0.1 端口 5353; };
};

我认为此配置会将所有查询转发*.foo.example.org到第二个 DNS 程序。但是当我测试它时...

在 VPS 本身上:

dig bar.foo.example.org @127.0.0.1 -p5353效果很好。

dig bar.foo.example.org @127.0.0.1效果很好。

在我的笔记本电脑上:

dig bar.foo.example.org @vps.example.org -p5353效果很好。

dig bar.foo.example.org @vps.example.org效果很好。

dig foo.example.org @8.8.8.8 -t ns效果很好。

dig bar.foo.example.org @8.8.8.8返回SERVFAIL

将 8.8.8.8 替换为其他 DNS 服务器会得到相同的结果,并且 TTL 没有任何问题。

有人知道我的配置有什么问题吗?以下是更多信息:

其他BIND9配置:

选项 {
  目录“/var/cache/bind”;
  通知是;
  允许转移 { xx.xx.xx.xx; };
  dnssec 启用是;
  dnssec 验证自动;
  auth-nxdomain no; # 符合 RFC1035
  监听-on-v6 { 任何; };
  递归是;
  允许递归 { 任何; };
};

具体来说,“第二个 DNS 程序”是 iodine,它通过 DNS 查询隧道传输 IP。我按照此指南在 BIND9 后面进行设置:http://dev.kryo.se/iodine/wiki/TipsAndTricks#RunningiodinebehindBIND9

附言:我尝试了另一台安装了 dnsmasq 的服务器并用它server=/foo.example.org/127.0.0.1#5353来测试。仍然出现错误。

有人能帮忙吗?提前致谢。

答案1

首先,我建议您使用 5353 以外的其他端口作为 DNS 服务器的备用端口。5353 与 zeroconf/mDNS 冲突。

它之所以仅在用作vps.example.org递归解析器时才起作用,是因为这是唯一被告知需要转到端口 5353 上的特殊 DNS 服务器来查找的递归服务器foo.example.org

因为您无法在记录中指定端口号NS,所以通常不可能在 53 以外的端口上拥有权威服务器。世界上所有的递归名称服务器都将查找相关域的 NS 记录,并尝试在端口 53 上联系该服务器。如果您希望它们使用不同的端口,则必须为它们中的每一个配置一个指向端口 5353 的转发区域。

顺便说一句,不清楚为什么您要foo.example.org在不同端口(或 IP 地址)上的单独名称服务器上托管。为什么不将foo.example.org区域添加到提供服务的同一权威名称服务器example.org

相关内容