有很多关于 DNSoverTLS 和不同设置组合的信息,我一直在慢慢地通过不同的组合来为我们找到正确的设置,但这导致了一些我需要帮助澄清的问题。
在开始dnsmasq
之后,systemd-resolved
我们很快(阅读:经过大量工作)意识到,在我们的设置中,我们需要一个支持递归的 DNS 系统,这超出了这两者的范围。我们需要递归的一个非常具体的原因是由于公共解析器没有解析像 Spamhaus 这样的反垃圾邮件/RBL 服务的请求,所以我们需要能够直接与根服务器对话(这就是我的理解)。所以我安顿下来了bind
。
我知道 Bind9 不支持DNSoverTLS
自身,因此使用Stunnel
它来加密它的通信,但是从那里开始的路径让我有点困惑......
- Stunnel 是加密它的下游(客户端请求)还是上游(递归/解析器)请求,或两者兼而有之?
- 我的理解是否正确,递归意味着请求直接发送到根 DNS 服务器,然后递归迭代直到找到权威名称服务器并可以解析请求,而不是像 Quad9/Cloudflare/Google/etc 这样的解析器.?
- 根 DNS 服务器自己支持 DNSoverTLS 还是只支持解析器服务?
我们的服务器是一个独立的服务器,除了来自应用程序的内部请求或通过 VPN 直接连接到服务器的客户端之外,它并不意味着它是一个开放的解析器postfix
,它也不是权威的,它只是一个缓存 DNS 服务器。
我的目标是加密我们的上游/递归请求,我在正确的轨道上吗?
假设您遵循此 ISC BIND 指南,则 stunnel 正在解密传入的 DoT 连接,而 BIND 不会对 stunnel 进行任何递归请求进行加密。
stunnel 在端口 853 上侦听传入的 DoT 连接,然后将任何 DNS 请求传递到端口 53(未加密 DNS 的标准端口)上的 BIND。
从 BIND 转发的传出请求通过端口 1053 传递到 stunnel,然后 stunnel 在端口 853 上发送最终的 DoT 连接。
该
forward only;
指令禁用了标准分辨率的正常回退。“递归”是指服务器尝试自己追踪任何未知域的 IP(而不是依赖其他 DNS 服务器代表它执行此操作)。但是你描述的是典型的过程,是的。
虽然我可能弄错了,但我的理解是根名称服务器不支持 DoT(所以只有配置为处理它的 DNS 服务器,就像你描述的那样)。