Bind9 上游解析速度极慢

Bind9 上游解析速度极慢

我有一个bind9docker 容器为我的家庭实验室提供 DNS 服务。它.lan为本地设备提供域名,为我的内部服务提供私有域名。但是,出于某种原因,解析任何外部 DNS 条目都非常慢(即使在同一台设备上也是如此)。DNS 解析耗时 1.2 秒,太荒谬了。我附上了 DNS 基准测试的屏幕截图以及我的配置。除了谷歌之外,我还尝试了其他各种上游解析器,所有解析器都得到了类似的结果。我的内部域解析速度都超快,DNS 的缓存响应也很快。有人有什么想法吗?

命名配置文件

options {
    directory "/var/cache/bind";
    allow-query {any;};
    recursion yes;
    dnssec-validation no;
    allow-transfer { none; };
    forwarders {
        8.8.8.8;
        8.8.4.4;
    };
};

zone "my_internal_domain_hidden" IN {
    type master;
    file "/etc/bind/my_internal_domain_hidden.db";
};

zone "lan" IN {
    type master;
    file "/etc/bind/lan.db";
};

logging {
    category default { null; };
};

my_internal_domain_hidden.db

$TTL 1h;

$ORIGIN my_internal_domain_hidden.

@                   IN      SOA     ns.my_internal_domain_hidden. info.my_internal_domain_hidden. (
                                    18092023 ; serial
                                    12h      ; refresh
                                    15m      ; retry
                                    3w       ; expire
                                    2h       ; minimum ttl
                                    )
    
                    IN      NS      ns.my_internal_domain_hidden.
    
ns                  IN      A       my_dns_ip

; dns records

some_service        IN      A       some_ipv4_add3

局域网数据库

$TTL 1h;

$ORIGIN lan.

@                   IN      SOA     ns.lan. info.lan. (
                                    18092023 ; serial
                                    12h      ; refresh
                                    15m      ; retry
                                    3w       ; expire
                                    2h       ; minimum ttl
                                    )

                    IN      NS      ns.lan.

ns                  IN      A       my_dns_ip

; dns records

some_device         IN      A       some_lan_ipv4

BNS 基准

答案1

这种设置最常见的问题是

    forwarders {
        8.8.8.8;
        8.8.4.4;
    };

很多教程都会建议使用,而不是使用绑定原生分辨率。转发所有查询并不是一个好的做法。

删除这些名称服务器并让 Bind9 完成其工作,若要解决此问题,请删除它们。

  • 使用 TLD-(根)名称服务器将主机名解析为 IP

维基百科对此有很好的解释: https://en.wikipedia.org/wiki/Domain_Name_System

地址解析机制 域名解析器通过从最右边(顶级)域标签开始的一系列查询来确定负责该域名的域名服务器。

实现 RFC 1034 所规定的迭代方法的 DNS 解析器;在这种情况下,解析器会咨询三个名称服务器来解析完全限定域名“www.wikipedia.org”。为了使域名解析器正常运行,网络主机配置了根名称服务器已知地址的初始缓存(提示)。管理员会通过从可靠来源检索数据集来定期更新这些提示。

假设解析器没有缓存记录来加速该过程,解析过程从对其中一个根服务器的查询开始。在典型操作中,根服务器不会直接回答,而是通过转介到更权威的服务器来响应,例如,对“www.wikipedia.org”的查询被转介到 org 服务器。解析器现在查询所引用的服务器,并反复重复此过程,直到收到权威答案。该图说明了由完全合格域名“www.wikipedia.org”命名的主机的此过程。

如果互联网上的每一次解析都需要从根开始,这种机制将给根服务器带来巨大的流量负担。实际上,DNS服务器使用缓存来减轻根服务器的负担,因此,根名称服务器实际上只涉及所有请求的一小部分。

相关内容