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 服务器。
-
如果设置有更改,请单击保存,然后单击右上角的刷新按钮。
以下是国外常用的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 DNS | 94.140.14.15 | 853 | family.adguard-dns.com |
AdGuard Family Protection DNS | 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
- 查看未绑定的 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 0
2. 查看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”。
原文地址。