如何将 DNS-over-TLS 与 BIND9 转发器结合使用

如何将 DNS-over-TLS 与 BIND9 转发器结合使用

BIND9 v9.18 改进了对 DNS-over-TLS (DoT) 和 DNS-over-HTTPS (DoH) 的支持。然而,虽然文档解释如何在服务器部分使用 TLS,但没有透露如何启用 DNS-over-TLS 进行查询转发。 BIND9 v9.18 支持吗?

需要如何调整配置片段才能将 DoT 用于转发器?

options {
        […]
        forwarders {
                // Forward to Cloudflare public DNS resolver
                1.1.1.1;
                1.0.0.1;
        };
        […]
}

仅仅添加port 853并期待一些魔法的发生似乎还不够。

答案1

由于这是 Google 上最热门的配置 BIND9 通过 DNS-over-TLS 转发的文章,因此我在 BIND 9.19.13 上配置和测试连接到 OpenDNS 的方法如下。

我创建了一个named.conf.dotin/etc/bind/并通过包含引用它,但是您可以轻松地将其直接添加到named.conf

tls OpenDNS-DoT {
    ca-file "/etc/ssl/certs/IdenTrust_Commercial_Root_CA_1.pem";
    remote-hostname "dns.opendns.com";
};

    options {

    forwarders port 853 tls OpenDNS-DoT {

            // OpenDNS public
            208.67.222.222;
            208.67.220.220;
    };

};

根据 ISC 的 Aram 的说法,此功能将包含在下一个稳定版本 9.20 中。

答案2

文档表示forwarders语句语法已被扩展到:

forwarders [ port <integer> ] [ tls <string> ] { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ] [ tls <string> ]; ... };

请注意,该tls <string>部分指的是单独的tls语句块。

我还没有对此进行测试,但根据文档,您可能需要这样的代码片段:

tls cloudflare-DoT {
    ca-file "/some/where/ca-certs-applicable-for-cloudflare.pem";
    // currently Cloudflare uses "DigiCert TLS Hybrid ECC SHA384 2020 CA1" as CA
    dhparam-file "/some/where/dhparam.pem";
    remote-hostname "one.one.one.one";
    ciphers "HIGH:!kRSA:!aNULL:!eNULL:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!SHA1:!SHA256:!SHA384"; // or whatever you consider acceptable
    prefer-server-ciphers yes;
    session-tickets no;
};
options {
    forwarders port 853 tls cloudflare-DoT {
        1.1.1.1;
        1.0.0.1; //yes, this also returns a certificate with hostname "one.one.one.one".
    };
};

dhparam.pem文件可以通过以下方式创建:

openssl dhparam -out /path/to/dhparam.pem <3072_or_4096>

相关内容