我正在实施一个解决方案,以在多个绑定递归 DNS 服务器之间平衡 DNS 查询负载,从而增加 QPS 限制
每个 centos VM 都有一个命名空间 gi,其中 ns 的环回设置为单个 DNS 公共 IP
每个 DNS 服务器都会通过我在 Quagga 路由器上配置的 BGP 对等连接向我的网络通告相同的 DNS IP
所有传入查询都使用 bgp 最大路径功能通过网络核心进行负载平衡
但是只有 1 个绑定 DNS 服务器会查询 DNS IP,另一个只会返回 servfail(这不是静态的,如果我终止与 Server1 的 bgp 对等,查询会成功,如果我终止与 Server2 的对等,也会发生同样的情况)但是它们不会协同工作。
我注意到的一件事是,如果我做了
ip netns exec gi dig @DNSIP +trace
ip netns exec gi dig @DNSIP cloudflare.com +trace
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @DNSIP cloudflare.com +trace
; (1 server found)
;; global options: +cmd
. 509520 IN NS e.root-servers.net.
. 509520 IN NS c.root-servers.net.
. 509520 IN NS f.root-servers.net.
. 509520 IN NS j.root-servers.net.
. 509520 IN NS b.root-servers.net.
. 509520 IN NS i.root-servers.net.
. 509520 IN NS h.root-servers.net.
. 509520 IN NS m.root-servers.net.
. 509520 IN NS k.root-servers.net.
. 509520 IN NS a.root-servers.net.
. 509520 IN NS l.root-servers.net.
. 509520 IN NS d.root-servers.net.
. 509520 IN NS g.root-servers.net.
. 509520 IN RRSIG NS 8 0 (didn't include the key)
尽管两个 named.conf 文件都具有 dnssec-enable yes 和 dnssec-validation yes,但 Server2 并未返回 RRSIG
ip netns exec gi dig @DNSIP cloudflare.com +trace
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @DNSIP cloudflare.com +trace
; (1 server found)
;; global options: +cmd
. 518400 IN NS c.root-servers.net.
. 518400 IN NS k.root-servers.net.
. 518400 IN NS g.root-servers.net.
. 518400 IN NS d.root-servers.net.
. 518400 IN NS a.root-servers.net.
. 518400 IN NS j.root-servers.net.
. 518400 IN NS e.root-servers.net.
. 518400 IN NS h.root-servers.net.
. 518400 IN NS f.root-servers.net.
. 518400 IN NS i.root-servers.net.
. 518400 IN NS m.root-servers.net.
. 518400 IN NS b.root-servers.net.
. 518400 IN NS l.root-servers.net.
我的dnssec配置如下:
dnssec-enable no;
dnssec-validation no;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
如果我在 named.conf 文件中禁用 dnssec,DNS 服务器将协同工作,我可以实现 20,000 QPS 的目标,但是启用 dnssec 后它不起作用。
以前有人遇到过这样的问题吗?这是 BIND 在单个 PublicIP 后面的限制吗?或者我怀疑是 DNSSEC 设置的问题
答案1
在所有 DNS 解析器上尝试此 DNSsec 配置:
options {
//dnssec-enable no; - remove the line, the option has been obsoleted
dnssec-validation auto;
}
该选项dnssec-enable
已被弃用(请参阅 ARM,第 156 页),DNSsec 后备验证 (DLV) 也已被弃用(请参阅 ARM,第 156 页)。
对于递归解析器,我不相信你还需要其他东西。
请注意,这dnssec-validation auto;
是默认设置,因此您甚至不需要输入它。