我有一个安装了 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
?