OPNsense 配置 DNS over TLS (DoT) 教程
OPNsense 是一款基于 FreeBSD 的开源路由和防火墙应用程序,它还可以作为所有移动设备和台式机的 DNS 解析器。但是,所有 DNS 查询都以纯文本形式传输。ISP 或黑客可以通过 UDP 和 TCP 协议 53 以纯文本形式拦截传输,从而破坏 DNS 查询和响应。出于安全目的,有必要加密 DNS 的查询。DNS over TLS (DoT) 是一种利用传输层安全性 (TLS) 加密 DNS 流量的安全协议,也是最常见的 DNS 安全解决方案之一。主要目的是增强个人的安全和隐私。DNS over TLS 的一些优点如下:
- 防止 DNS 操纵。
- 消除中间人攻击。
- 防止间谍活动。

本教程将教您如何配置 OPNsense DNS 解析器来加密所有的 DNS 查询,以防止被监视并增强在线隐私和安全性。主要分以下三个步骤:
- 在 OPNsense 上启用 DoT
- 配置 DNS 和 DHCP 服务器
- 验证 DoT 配置
添加 DoT
OPNSense 防火墙使用由 NLnet Labs 开发的 Unbound DNS 作为其默认 DNS 提供程序,该提供程序已预先安装并默认激活。Unbound DNS 是一款全面的 DNS 解析器,能够与互联网上的 DNS 根服务器建立直接通信。Unbound DNS 提供验证、递归和缓存 DNS 功能,这些功能优于普通路由器中的标准 DNS 转发器。
要在 OPNsense 防火墙上配置和启用 DoT,可以按照以下步骤操作:
导航到 服务 → Unbound DNS → DNS over TLS。

- 单击右下角添加按钮。
- 选中 “启用” 选项。
- 可以将域字段留空。默认情况下,将此字段留空会将所有查询定向到指定服务器。在此字段中输入域将导致将该特定域的查询定向到所选服务器。
- 输入 DNS 服务器的 IP 地址,来转发所有请求,例如
8.8.8.8。 - 将服务器端口设置为 Dot 使用的
853端口。 在 “验证 CN” 字段中输入 DNS 服务器的通用名称(例如
dns.google.com),以验证其 TLS 证书。除非可以确认证书的真实性,否则 DNS-over-TLS 容易受到中间人攻击。您可以将该字段留空以接受自签名证书,但这可能是欺诈性的。
- 单击 “保存”。
- 如果 ISP 支持 IPv6,还可以添加 IPv6 DNS 服务器作为辅助 DNS 解析器。
单击 “应用” 来激活设置。

配置 DNS 和 DHCP
为了强制网络上的所有客户端使用上面定义的 DoT 服务器,还必须正确配置 DNS 和 DHCP 服务器。可以按照以下步骤在 OPNsense 上配置 DNS 和 DHCP 服务:
- 导航至 系统 → 设置 → 常规。
- 确保 DNS 服务器 的所有字段都为空。这样做是为了保证 DNS 流量重定向回防火墙。
取消 允许 WAN 上的 DHCP/PPP 覆盖 DNS 服务器列表 选项。

- 单击 “保存”。
- 导航到 服务 → ISC DHCPv4 → LAN。
- 确保 DNS 服务器 字段为空。必须使用系统默认的 DNS 服务器。
如果设置有更改,请单击保存,然后单击右上角的刷新按钮。

提示:为了提供安全且经过验证的环境,建议在使用 DNS over TLS 时使用防火墙规则禁止端口 53 上的任何传出 DNS 流量。如果客户端选择自行直接查询其他 DNS 服务器,则可以使用 NAT 重定向规则将这些请求发送到 127.0.0.1:53,即本地 Unbound 服务。这将确保这些请求只通过 TLS 发送。以下是国外常用的 DoT 服务器:
| DNS 提供商 | 服务器 IP | 端口 | 验证 CN |
|---|---|---|---|
| 8.8.8.8 | 853 | dns.google | |
| 8.8.4.4 | 853 | dns.google | |
| 2001:4860:4860::8888 | 853 | dns.google | |
| 2001:4860:4860::8844 | 853 | dns.google | |
| Cloudflare | 1.1.1.1 | 853 | cloudflare-dns.com |
| Cloudflare | 1.0.0.1 | 853 | cloudflare-dns.com |
| Cloudflare | 2606:4700:4700::1111 | 853 | cloudflare-dns.com |
| Cloudflare | 2606:4700:4700::1001 | 853 | cloudflare-dns.com |
| Cloudflare Security | 1.1.1.2 | 853 | security.cloudflare-dns.com |
| Cloudflare Security | 1.0.0.2 | 853 | security.cloudflare-dns.com |
| Cloudflare Security | 2606:4700:4700::1112 | 853 | security.cloudflare-dns.com |
| Cloudflare Security | 2606:4700:4700::1002 | 853 | security.cloudflare-dns.com |
| Cloudflare Family | 1.1.1.3 | 853 | family.cloudflare-dns.com |
| Cloudflare Family | 1.0.0.3 | 853 | family.cloudflare-dns.com |
| Cloudflare Family | 2606:4700:4700::1113 | 853 | family.cloudflare-dns.com |
| Cloudflare Family | 2606:4700:4700::1003 | 853 | family.cloudflare-dns.com |
| Quad9 | 9.9.9.9 | 853 | dns.quad9.net |
| Quad9 | 149.112.112.112 | 853 | dns.quad9.net |
| Quad9 | 2620:fe::fe | 853 | dns.quad9.net |
| Quad9 | 2620:fe::9 | 853 | dns.quad9.net |
| AdGuard DNS | 94.140.14.14 | 853 | dns.adguard-dns.com |
| AdGuard DNS | 94.140.15.15 | 853 | dns.adguard-dns.com |
| AdGuard Family Protection | 94.140.14.15 | 853 | family.adguard-dns.com |
| AdGuard Family Protection | 94.140.15.16 | 853 | family.adguard-dns.com |
| CleanBrowsing DNS | 185.228.168.168 | 853 | family-filter-dns.cleanbrowsing.org |
| CleanBrowsing DNS | 185.228.169.168 | 853 | family-filter-dns.cleanbrowsing.org |
验证 DoT 配置
可以通过 3 种不同的方式验证 OPNsense 上的 DoT 设置:
- 使用 tcpdump
- 查看 Unbound DNS 日志
- 连接到 Cloudflare DoT 测试页面
1. 使用 tcpdump
要验证 OPNsense 是否正在使用 DNS over TLS 进行查询,可以通过 OPNsense 命令行执行数据包捕获:
tcpdump -i vtnet0 port 853应该看到类似以下内容的输出:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vtnet0, link-type EN10MB (Ethernet), capture size 262144 bytes
12:11:49.725590 IP 192.168.0.31.61795 > dns.google.domain-s: Flags [P.], seq 462163878:462164030, ack 4235244077, win 519, options [nop,nop,TS val 2361809916 ecr 3152845993], length 152
12:11:49.756681 IP dns.google.domain-s > 192.168.0.31.61795: Flags [.], ack 152, win 1045, options [nop,nop,TS val 3152863341 ecr 2361809916], length 0
12:11:49.756697 IP 192.168.0.31.61795 > dns.google.domain-s: Flags [P.], seq 152:304, ack 1, win 519, options [nop,nop,TS val 2361809946 ecr 3152863341], length 152
12:11:49.787748 IP dns.google.domain-s > 192.168.0.31.61795: Flags [.], ack 304, win 1045, options [nop,nop,TS val 3152863373 ecr 2361809946], length 0
12:11:49.790739 IP dns.google.domain-s > 192.168.0.31.61795: Flags [P.], seq 1:493, ack 304, win 1045, options [nop,nop,TS val 3152863376 ecr 2361809946], length 492
12:11:49.790757 IP 192.168.0.31.61795 > dns.google.domain-s: Flags [.], ack 493, win 516, options [nop,nop,TS val 2361809986 ecr 3152863376], length 0
12:11:49.815496 IP dns.google.domain-s > 192.168.0.31.61795: Flags [P.], seq 493:985, ack 304, win 1045, options [nop,nop,TS val 3152863400 ecr 2361809946], length 492
12:11:49.815511 IP 192.168.0.31.61795 > dns.google.domain-s: Flags [.], ack 985, win 515, options [nop,nop,TS val 2361810006 ecr 3152863400], length 02. 查看 Unbound DNS 日志
此外,可以检查 Unbound DNS 日志以查看 DNS 查询是否通过端口 853 发送。可以按照以下步骤通过查看 Unbound DNS 日志来验证 OPNsense 上的 DoT 配置:
- 导航到 服务 → Unbound DNS → 高级。
- 向下滚动到 “日志设置” 项。
- 启用 日志查询 选项。这将为每个查询打印一行到日志中,其中包含日志时间戳和 IP 地址、名称、类型和类别。
选择 日志级别详细程度 Level 2 选项将提供详细的操作信息。

- 单击页面底部的 应用 以激活设置。
- 导航到 服务 → Unbound DNS → 日志文件。
在搜索框中输入
853。应该会看到已配置 DNS 解析器的回复。
3. Cloudflare DoT 测试页面
Cloudflare 在其 https://1.1.1.1/help 网站上提供了一个查询页面,允许 Cloudflare 用户验证他们当前使用的是 DNS over TLS (DoT) 还是 DNS over HTTPS (DoH)。如果使用的是 Cloudflare DoT 服务器,您可以连接测试网站,然后应该会看到类似于下面的页面。在调试信息表中,使用 DNS over TLS (DoT) 选项应该是 “Yes”。

原文地址:https://www.zenarmor.com/docs/network-security-tutorials/how-to-configure-dot-on-opnsense
觉得内容不错?我要