DNS:将特定 TLD 转发到自己的专用 DNS

DNS:将特定 TLD 转发到自己的专用 DNS

我们在 BIND9 上拥有 2 个 DNS,分别作为 1 个主 DNS 和 1 个辅助 DNS,为网络 A 中的客户提供服务。网络 A 与网络 C 对等连接,没有任何拥塞。

还有另一个 ISP,比如说网络 B 的所有者;B 和 C 是对等的,但中间非常拥挤。

A 和 B 不是直接对等的。

因此,如果 A>C,则没有拥堵;如果 A>B,则需要通过上游或通过 C(非常拥堵)

域名 ABC.tld 在网络 B 和 C 上有 2 个不同的 IP,并且托管在两个网络中。

网络 A 目前存在的问题是,来自网络 A 的根的查询将返回网络 B 的 ABC.tld IP,而不是网络 C 的 IP,导致我们的客户到域的路由需要更长的时间或超时。

问题:我们可以为该特定 .tld 设置转发器吗?我们希望将相关 tld 转发到网络 C 中的 DNS。

              *Web Server*
             |            |
             |            |
             |            |
             B============C
             |            |
    Uptream provider ---- A

答案1

这是一个路由问题,而且 DNS 黑客攻击的问题很难解决。

对您来说,“简单”的解决方案是让 ISP B 和 C 修复其对等链路上的拥塞。

真正的解决方案是让客户的 Web 服务器实现多宿主,并在其自己的 BGP4 中运行自治系统独立于提供商IP 地址空间。

然后,他们可以停止在 DNS 中通告“属于”ISP B 和 C 的 IP 地址,而只通告他们自己的地址。

通过 ISP A 连接的客户端将始终经过 C 到 A 的链路,并且不会遍历 B 和 C 之间的对等链路,除非由于某种原因 C 和 A 之间的链路中断。

答案2

尝试将此类查询转发到 Google Public DNS 或 OpenDNS,看看您的问题是否得到解决。

区域“tld”位于 { 类型转发;转发器 { 8.8.8.8;8.8.4.4;};};

答案3

在站点 A 中,您可以在 named.conf 中输入以下内容(用于主绑定和辅助绑定):

zone "ABC.tld" in {
    type forward;
    forwarders { my-server-in-site-C ; my-secondary-server-in-site-C; };
};

所有 DNS 查询将直接发送到 C 服务器。

或者你可以输入以下内容:

zone "ABC.tld" in {
    file "slave/ABC.tld" ;
    type slave;
    masters { my-server-in-site-C ; my-secondary-server-in-site-C; other-servers; };
    allow-notify { my-server-in-site-C ; my-secondary-server-in-site-C; other-servers; };
    forwarders {}; /* just in case */
};

所有 DNS 查询都将在文件中本地缓存,并根据需要从 C 服务器刷新。我推荐这样做,因为它可以更好地处理 A 和 C 之间的连接临时中断。

在这两种情况下,“my-server-in-site-C”本身可以是域 ABC.tld 的主服务器,也可以是从服务器。

相关内容