OPNsense重定向DNS请求到本地DNS解析器

如果不想让防火墙后面的客户端使用自定义或其他公共DNS,可以通过设置规则,将所有对外部服务器的DNS请求重定向到本地DNS服务器。这不但有助于确保网络设备的正常功能,而且还可以应用DNS的阻止/过滤功能。

创建端口转发规则

进入“防火墙 > NAT > 端口转发”页面,然后单击“添加”按钮。进行以下设置:

选项
接口 IOT
协议 TCP/UDP
目标/反转 选中
目标 IOT net
目标端口范围 DNS
重定向目标IP 127.0.0.1
重定向目标端口 DNS
描述 Redirect DNS requests to internal DNS resolver

NAT 端口转发 DNS 重定向规则

“接口”是你想定义的本地网络接口。“目标”是为接口选择系统生成的网络地址。选择“DNS”作为“目标端口范围”,因为这是要匹配DNS请求的流量。“重定向目标 IP”设置为127.0.0.1 (localhost),是要使用OPNsense中的内部Unbound DNS服务。

这里的选中“Destination/Invert(目标/反转)”非常重要,因为会使规则匹配来自 IOT 网络的任何流量,而不是使用本地IOT接口/网关IP地址来解析DNS查询。这条规则将所有接口地址的DNS查询都重定向到本地Unbound DNS解析器,即127.0.0.1的localhost 地址。

单击“保存”按钮并应用更改后,转到“防火墙 > 规则> IOT”页面。将DNS重定向规则移动到列表顶部,确保它有更高的优先级。

如果防火墙有多个内部接口,可以通过设置“”来创建一系列的规则。

多接口配置

为了将单个规则应用于多个接口,可以创建一个防火墙组。防火墙组允许对多个接口进行分组并创建适用于组中所有接口的规则。组中的规则处理顺序优先于接口规则。

要创建规则组,请转到“防火墙 > 组”页面。然后单击“添加”按钮。

防火墙组页面

输入防火墙组的“名称”,本例中为CommonDNS,然后选中重定向DNS请求的所有接口。单击“保存”来创建组。

创建防火墙组

然后,像前面一样创建重定向规则,除了接口和目标是组以外,其他选项都相同。转到“防火墙 > NAT > 端口转发”页面上,单击“添加”按钮。输入以下值:

选项
接口 CommonDNS
协议 TCP/UDP
目标/反转 选中
目标 CommonDNS
目标端口范围 DNS
重定向目标IP 127.0.0.1
重定向目标端口 DNS
描述 Redirect DNS requests to internal DNS resolver

转到“防火墙 > 规则 > CommonDNS”页面上查看NAT 端口转发的重定向规则是否已自动添加到规则列表中。

CommonDNS 防火墙规则

测试重定向

可以通过添加DNS覆盖的方法来进行测试。DNS 覆盖可用于为给定域设置不同的IP地址,包括 Internet 上的公共域名。

转到“服务 > Unbound DNS > 覆盖”页面。单击“ ”按钮添加一个新的覆盖。输入一个不用于网络上任何内容的知名域名,例如yahoo.com,选择一个随机的本地 IP 地址,例如 192.168.20.200。

DNS 覆盖

保存覆盖后,单击“应用”按钮使更改生效。

DNS 覆盖

如果使用的是Linux,则可以运行host命令来进行 DNS 查找以查看返回的 IP 地址。如下所示,返回的是本地IP地址而不是公共IP地址:

$ host yahoo.com 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases: 

yahoo.com has address 192.168.20.200

Windows下直接打开浏览器访问yahoo.com,除非被浏览器缓存,正常应该是无法访问。

结论

通过设定DNS重定向规则可以将对外部DNS的请求重定向到配置的Unbound DNS、Pi-hole或AdGuardHome,甚至可以使用别名将DNS请求随机重定向到多个 IP 地址,从而提升访问外部网络时的安全性。

原文地址

发表评论

您的电子邮箱地址不会被公开。