在分割水平 DNS 的情况下,当 DNS 服务器查询其无法控制的域时,其行为是否正确?

在分割水平 DNS 的情况下,当 DNS 服务器查询其无法控制的域时,其行为是否正确?

因此,我们的一家云提供商在虚拟机之间提供低延迟、零费率的“内部网络”选项。内部网络上的接口位于 10.xxx IP 空间中。当我们的一台服务器查询内部网络上另一台服务器的主机名时,我们希望它解析为内部网络上的地址,而不是公共可路由地址,因为后者会产生传输计费。

我们已经实现了一个小型服务器,它就是用来做这件事的,当源 IP 是 10.xxx IP 时,它会返回内部地址。

我们不想让内部服务器成为虚拟机的唯一主 DNS 服务器。我们希望它成为客户端列表中的第一个服务器,然后是公共 DNS 服务,如 1.1.1.1。

那么,如果内部 DNS 查询 google.com(我们不拥有该网站),我们应该返回给客户端的正确响应是什么?我们应该直接忽略该请求,还是应该返回 NxDomain 响应?

感谢您的任何建议!

答案1

如果您使用递归服务器,它应该响应从权威基础架构解析的正确答复。如果您返回NXDOMAIN,DNS客户端将信任该答案并且不会继续使用其他服务器。如果您不回复任何内容,那只会导致不必要的超时延迟。

此外,DNS客户端通常不具备理解此类条件解析的功能,但DNS服务器却具备。因此,可以考虑的一种选择是在每台服务器上安装本地DNS服务器,以执行有条件转发。在这种情况下,您要配置的唯一 DNS 服务器resolv.conflocalhost127.0.0.1

这些示例采用 BIND 配置格式,因为您没有在问题中指定您的风格。

options {
    forwarders { 1.1.1.1; };
}

zone "example.com" {
    type forward;
    forward only;
    forwarders { 10.8.8.8; };
};

或者,如果与内部 DNS 服务器的连接不稳定,服务器也可以通过区域传输托管内部区域的副本:

zone "example.com" { 
    type slave; 
    file "/etc/bind/db/example.com"; 
    masters { 10.8.8.8; }; 
};

当然,主服务器也应该允许传输。

相关内容