由于 OPNsense 中的 Unbound DNS 不直接支持 HTTPS 上的 DNS (DoH),因此需要使用 DNSCrypt-Proxy 插件。该插件也支持 TLS 上的 DNS (DoT)。不过,我在浏览 Reddit 时发现,Unbound 曾经一度原生支持 DoT,这真是太好了。由于内置了对 DoT 的支持,TLS 上的 DNS 配置变得非常简单。
对于新手来说,DNS over TLS 是另一种加密 DNS 请求的方法。DoT 和 DoH 之间的一些区别在于,DoT 使用 UDP 和 853 端口,而 DoH 使用 TCP 和 443 端口。通过 DoH 发送的 DNS 请求会与其他 HTTPS 流量混杂在一起,而 DNS over DoT 在 853 端口上会更加明显。这两种方法应该都能提供类似的安全级别。但是,DoH 选项可能会在隐私方面有所提升。对于想要监控自身网络的用户来说,DoT 可能是一个更好的选择,因为 DoT 的流量与所有其他 HTTPS 网络流量是分开的。
1.将 DoT 服务器添加到 Unbound
要配置 DNS over TLS,请转到“服务 > 非绑定 DNS > DNS over TLS”页面。首次访问时,您会看到一个空白页面。点击“+”按钮添加新的 DNS over TLS 服务器。我将以 Cloudflare 的 DNS 服务器为例,但它应该适用于任何 DoT 服务器。
您会在“DNS over TLS”页面上看到“使用系统名称服务器”选项。您可以取消选中该选项,以确保使用在 DNS over TLS 上配置的 DNS 服务器。请注意,如果您使用的是 DNS over TLS,则无需在“系统 > 设置 > 常规”页面上输入任何 DNS 服务器。

您可以将“域”框留空,除非您希望特定域的查询使用不同的 DNS 服务器。在某些情况下,这可能会有所帮助,但如果将其留空,则所有 DNS 查询都将使用指定的 DNS 服务器。在“服务器 IP”中输入 1.1.1.1 ,在“服务器端口”中输入 853 “验证 CN”选项不是必需的,但强烈建议使用此选项来验证 DoT 服务器证书上的通用名称。它有助于确保您连接到所需的服务器而不是某些“中间人”服务器,从而提高安全性。对于 1.1.1.1 服务器, cloudflare – dns . com 在 OPNsense 论坛帖子上找到了“验证 CN”选项的正确值。

点击“保存”后,您将看到服务器出现在列表中。您需要点击“应用”按钮才能使更改生效。

在应用更改之前,您应该添加辅助 DNS 地址 1.0.0.1,如果您的网络使用的是 IPv6,则还应添加 IPv6 DNS 服务器地址(2606:4700:4700::1111 和 2606:4700:4700::1001)。您可以在下面看到最低配置应该是什么样子,因为您需要为 IPv4 和 IPv6 DNS 服务器指定一个辅助服务器。

Cloudflare 还提供 DNS 服务器,可以拦截恶意软件内容以及成人内容。要使用这些服务器,您只需使用不同的 IP 地址即可。您还需要使用不同的 CN 值。如果您希望使用 Cloudflare 提供的过滤 DNS,请使用下表而不是本例中的值。所有 DoT 服务器的端口均为 853,因此我没有在表中包含该值。
| DNS Filter DNS 过滤器 | Server IP 服务器 IP | Common Name 通用名称 |
|---|---|---|
| Malware 恶意软件 | 1.1.1.2 | security.cloudflare-dns.com security.cloudflare-dns.com |
| Malware 恶意软件 | 1.0.0.2 | security.cloudflare-dns.com security.cloudflare-dns.com |
| Malware 恶意软件 | 2606:4700:4700::1112 | security.cloudflare-dns.com security.cloudflare-dns.com |
| Malware 恶意软件 | 2606:4700:4700::1002 | security.cloudflare-dns.com security.cloudflare-dns.com |
| Malware + Adult 恶意软件 + 成人 | 1.1.1.3 | family.cloudflare-dns.com family.cloudflare-dns.com |
| Malware + Adult 恶意软件 + 成人 | 1.0.0.3 | family.cloudflare-dns.com family.cloudflare-dns.com |
| Malware + Adult 恶意软件 + 成人 | 2606:4700:4700::1113 | family.cloudflare-dns.com family.cloudflare-dns.com |
| Malware + Adult 恶意软件 + 成人 | 2606:4700:4700::1003 | family.cloudflare-dns.com family.cloudflare-dns.com |
2.系统 DNS 配置
为了对包括 OPNsense 系统本身在内的整个网络的所有 DNS 查询仅使用 DNS over TLS,您需要确保在“系统 > 设置 > 常规”页面上没有指定 DNS 服务器,并且未选中“允许 DNS 服务器列表被 WAN 上的 DHCP/PPP 覆盖”和“不要使用本地 DNS 服务作为此系统的名称服务器”。
如果您设置了任何这些选项,您的 OPNsense 盒和/或您的网络将使用 DoT 和列表中的 DNS 服务器或通过 WAN 接口上的 DHCP 提供的 DNS 服务器,这可能是您不希望发生的事情。

3.测试 DoT 配置
Cloudflare 在其 1.1.1.1 网站上有一个网页 ,如果您正在使用 Cloudflare,可以在此测试当前是否正在使用 DoT 或 DoH。我注意到,第一次检查后我必须刷新页面,才能让使用“1.1.1.1”的页面显示“是”,并且“DoT”的页面也显示“是”。有时我需要刷新页面多次。我不确定为什么我必须这样做,但一旦我这样做了,后续刷新就会一直显示“DoT”的页面为“是”。也许测试在完全完成之前就过早地返回了“否”。
此外,该测试页面还会检查浏览器是否启用了自身的 DoT 或 DoH 配置。例如,我在 Chrome 和 Brave 浏览器中的输出都只显示正在使用 DoT:

检查 DNS 查询是否通过 853 端口发送的更好方法是前往“Unbound DNS > Advanced”,并将日志级别更改为 2 或更高。确保“Log Queries”复选框也已选中。然后点击“Save”。请务必点击页面顶部的“Apply Changes”以使更改生效。

您应该会看到来自端口 853 上的 Cloudflare DNS 服务器的一些回复:

如果您希望查看 OPNsense 本身正在使用哪个 DNS 服务器,您可以通过转到“接口 > 诊断 > DNS 查找”并查看正在使用的 DNS 服务器来执行一些 DNS 查找。

4.最后
这就是您需要做的全部!原生支持 DoT 让整个过程变得非常简单。如果您想更进一步,可以将所有通过 53 端口离开您网络的 DNS 请求重定向到您的 Unbound DNS 服务,这样它也会使用 DoT。此外,如果您只想使用 DoT,您可以使用公共 DNS 黑名单,尽可能减少 DNS over HTTPS 流量 (以防您的恶意应用/设备加密所有通过 HTTPS 的 DNS 流量以绕过您的 DNS 过滤器或提供其内置的安全功能) 。

