在单个公共 IP 后面运行多个 BIND DNS 服务器的问题

在单个公共 IP 后面运行多个 BIND DNS 服务器的问题

我正在实施一个解决方案,以在多个绑定递归 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;是默认设置,因此您甚至不需要输入它。

相关内容