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.dot
in/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 [ 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>