对我的问题有新的想法和可能的答案吗? 是否可以更改根配置文件(带有 A/B/C/D/E/F/etc.ROOT-SERVERS.NET 的 db.root)并删除原始条目(即:ican ip 地址),并将其替换为我们自己的 4 个 dns 服务器 IP - 从而欺骗我们的 DNS 服务器分散我们服务器的负载。我们指向的 4 个服务器上的根配置当然会有正确的根内容。
我们有两台配置了静态 IP 地址的转发服务器。我们发现 CPU 负载稳步增加。我们想开始考虑如何扩展这两台服务器,并在问题出现之前开始做好准备。
我了解如何使用权威域的名称服务器对 DNS 服务器进行负载平衡。我很难找到有关如何扩展具有 0 个权威域的仅转发服务器的信息。
我的第一个假设是挖掘 google 和 OpenDNS 的服务器 8.8.8.8(尽管我怀疑这会毫无结果)并希望在列表中看到一些服务器,但却得到了其他结果:
Google's 8.8.8.8
----------------
; <<>> DiG 9.8.3-P1 <<>> 8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 47269
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;8.8.8.8. IN A
;; AUTHORITY SECTION:
. 4636 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2014120401 1800 900 604800 86400
;; Query time: 41 msec
;; SERVER: X.X.X.X#53(X.X.X.X) (censored by me)
;; WHEN: Thu Dec 4 20:41:21 2014
;; MSG SIZE rcvd: 100
第二次挖掘
OpenDNS's
; <<>> DiG 9.8.3-P1 <<>> 208.67.222.222
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 60816
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;208.67.222.222. IN A
;; AUTHORITY SECTION:
. 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2014120401 1800 900 604800 86400
;; Query time: 43 msec
;; SERVER: 54.85.249.206#53(54.85.249.206)
;; WHEN: Thu Dec 4 20:44:53 2014
;; MSG SIZE rcvd: 107
上面的内容不多,但我想知道是否可以以某种方式在我的绑定配置中的 a.root-servers 记录中指定一些额外的 IP 地址来分散负载?这可行吗?即:将我的 db.root 配置文件更改为如下所示的内容:
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 1.2.3.4
A.ROOT-SERVERS.NET. 3600000 A 1.2.3.5
A.ROOT-SERVERS.NET. 3600000 A 1.2.3.6
A.ROOT-SERVERS.NET. 3600000 A 1.2.3.7
当然,在列出的服务器上,只需保留默认的 db.root,如下所示:
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
答案1
弄乱 DNS 服务器如何找到根区域是解决这个问题的完全错误的方法。我无法想象它能有什么帮助。我可以想象它会导致很多事情中断。除了您自己的解析器之外的其他解析器的 IP 地址对您的设置并不重要。如果您认为您需要知道这些解析器的 IP 地址,那么您可能做错了什么。
相反,你需要做的是确定你是否真的有足够的合法请求来使现有的 DNS 服务器过载。如果请求不合法,你需要追踪来源并消除它。如果请求合法,你需要更多的服务器。
如果您确实需要更多 DNS 服务器,则需要在它们之间进行负载平衡。最简单的方法是让 DHCP 服务器向不同的客户端分发不同的 IP 地址集。每个客户端应获得三个不同 DNS 服务器的列表。如果您总共有六台 DNS 服务器,则可以决定将它们分组到两个由三台服务器组成的池中,一半的客户端在一个池中获得 IP 地址,另一半的客户端在另一个池中获得 IP 地址。
DNS 服务器之间负载平衡的另一种方法是使用任播,但这更为复杂,并且在您描述的场景中似乎没有任何优势。
答案2
虽然您可以设置负载平衡软件来平衡缓存名称服务器,但最简单的方法是向网络和客户端配置添加更多名称服务器。几乎每个操作系统都会从 DHCP 或 /etc/resolv.conf 文件提供的列表中随机选择一个名称服务器,或者从该特定操作系统用来保持其 DNS 解析器正常的任何其他列表中随机选择一个名称服务器,因此您只需向客户端提供一个巨大的列表,我认为一切都会自行解决。