我们在 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 的主服务器,也可以是从服务器。