简介

OPNsense 是一款基于 FreeBSD 的开源路由和防火墙应用程序,它还可以作为所有移动设备和台式机的 DNS 解析器。但是,所有 DNS 查询都以纯文本形式传输。ISP或黑​​客可以通过UDP和TCP 协议53以纯文本形式拦截传输,从而破坏DNS 查询和响应。出于安全目的,有必要加密DNS的查询。

DNS over TLS (DoT) 是一种利用传输层安全性 (TLS) 加密DNS流量的安全协议,也是最常见的DNS 安全解决方案之一。主要目的是增强个人的安全和隐私。DNS over TLS 的一些优点如下:

  • 防止 DNS 操纵
  • 消除中间人攻击
  • 防止间谍活动

DNS over TLS

在 Opnsense 上配置主要分以下三个步骤:

  1. 在 OPNsense上启用DoT
  2. 配置DNS和DHCP服务器
  3. 验证DoT 配置

添加DoT

OPNSense 防火墙使用由 NLnet Labs 开发的 Unbound DNS 作为其默认 DNS 提供程序,该提供程序已预先安装并默认激活。Unbound DNS 是一款全面的 DNS 解析器,能够与互联网上的DNS 根服务器建立直接通信。Unbound DNS 提供验证、递归和缓存 DNS 功能,这些功能优于普通路由器中的标准 DNS 转发器。

要在OPNsense防火墙上配置和启用 DoT ,可以按照以下步骤操作:

1、导航到服务→Unbound DNS → DNS over TLS 

Unbound DNS: DNS over TLS settings

2、单击右下角添加按钮。

3、选中“启用”选项。

4、可以将域字段留空。默认情况下,将此字段留空会将所有查询定向到指定服务器。在此字段中输入域将导致将该特定域的查询定向到所选服务器。

5、输入DNS 服务器的IP 地址,来转发所有请求,例如8.8.8.8。

6、将服务器端口设置为Dot使用的853端口。

7、在“验证 CN”字段中输入 DNS 服务器的通用名称(例如 dns.google.com),以验证其 TLS 证书。除非可以确认证书的真实性,否则 DNS-over-TLS 容易受到中间人攻击。您可以将该字段留空以接受自签名证书,但这可能是欺诈性的。

 Adding DNS over TLS server

8、单击“保存”。

9、如果ISP支持IPv6,还可以添加 IPv6 DNS 服务器作为辅助 DNS 解析器。

10、单击“应用”来激活设置。

DNS over TLS servers list on OPNsense

配置DNS和DHCP

为了强制网络上的所有客户端使用上面定义的 DoT 服务器,还必须正确配置 DNS 和 DHCP 服务器。可以按照以下步骤在 OPNsense 上配置 DNS 和 DHCP 服务:

1、导航至系统→设置→常规。

2、确保DNS 服务器的所有字段都为空。这样做是为了保证 DNS 流量重定向回防火墙。

3、取消允许WAN 上的 DHCP/PPP 覆盖 DNS 服务器列表选项。

DNS servers settings on OPNsense

4、单击“保存”。

5、导航到服务→ ISC DHCPv4 → LAN。

6、确保DNS 服务器字段为空。必须使用系统默认的 DNS 服务器。

7、如果设置有更改,请单击保存,然后单击右上角的刷新按钮。

DHCP server settings on OPNsense

提示:为了提供安全且经过验证的环境,建议在使用 DNS over TLS 时使用防火墙规则禁止端口 53 上的任何传出 DNS 流量。如果客户端选择自行直接查询其他DNS服务器,则可以使用 NAT 重定向规则将这些请求发送到 127.0.0.1:53,即本地 Unbound 服务。这将确保这些请求只通过 TLS 发送。

以下是国外常用的DoT服务器:

DNS提供商服务器 IP端口验证CN
Google8.8.8.8853dns.google
Google8.8.4.4853dns.google
Google2001:4860:4860::8888853dns.google
Google2001:4860:4860::8844853dns.google
Cloudflare1.1.1.1853cloudflare-dns.com
Cloudflare1.0.0.1853cloudflare-dns.com
Cloudflare2606:4700:4700::1111853cloudflare-dns.com
Cloudflare2606:4700:4700::1001853cloudflare-dns.com
Cloudflare Security1.1.1.2853security.cloudflare-dns.com
Cloudflare Security1.0.0.2853security.cloudflare-dns.com
Cloudflare Security2606:4700:4700::1112853security.cloudflare-dns.com
Cloudflare Security2606:4700:4700::1002853security.cloudflare-dns.com
Cloudflare Family1.1.1.3853family.cloudflare-dns.com
Cloudflare Family1.0.0.3853family.cloudflare-dns.com
Cloudflare Family2606:4700:4700::1113853family.cloudflare-dns.com
Cloudflare Family2606:4700:4700::1003853family.cloudflare-dns.com
Quad99.9.9.9853dns.quad9.net
Quad9149.112.112.112853dns.quad9.net
Quad92620:fe::fe853dns.quad9.net
Quad92620:fe::9853dns.quad9.net
AdGuard DNS94.140.14.14853dns.adguard-dns.com
AdGuard DNS94.140.15.15853dns.adguard-dns.com
AdGuard Family Protection DNS94.140.14.15853family.adguard-dns.com
AdGuard Family Protection DNS94.140.15.16853family.adguard-dns.com
CleanBrowsing DNS185.228.168.168853family-filter-dns.cleanbrowsing.org
CleanBrowsing DNS185.228.169.168853family-filter-dns.cleanbrowsing.org

验证DoT配置

可以通过 3 种不同的方式验证 OPNsense 上的 DoT 设置:

  1. 使用 tcpdump
  2. 查看未绑定的 DNS 日志
  3. 连接到 Cloudflare DoT 测试页面

使用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

查看Unbound DNS日志

此外,可以检查 Unbound DNS 日志以查看 DNS 查询是否通过端口853发送。可以按照以下步骤通过查看 Unbound DNS 日志来验证 OPNsense 上的 DoT 配置:

1、导航到服务→Unbound DNS →高级。

2、向下滚动到“日志设置”项。

3、启用日志查询选项。这将为每个查询打印一行到日志中,其中包含日志时间戳和 IP 地址、名称、类型和类别。

4、选择日志级别详细程度Level 2选项将提供详细的操作信息。

Unbound DNS Logging Settings on OPNsense

5、单击页面底部的应用以激活设置。

6、导航到服务→Unbound DNS →日志文件。

7、在搜索框中输入853。应该会看到已配置 DNS 解析器的回复。

Viewing Unbound DNS Logs on OPNsense

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”。

Cloudflare DoT Test Page

  • 无标签

0 评论

你还没有登录。你所做的任何更改会将作者标记为匿名用户。 如果你已经拥有帐户,请登录