![PfSense 和重定向 DNS 请求](https://linux22.com/image/1621374/PfSense%20%E5%92%8C%E9%87%8D%E5%AE%9A%E5%90%91%20DNS%20%E8%AF%B7%E6%B1%82.png)
我设置DNS解析器作为我的 pfsense v. 2.4.5 中的 DNS 服务,还将 pfsense 本地 IP 地址(127.0.1.1,实际上是 192.168.5.1)设置为我的唯一 DNS 服务器,让解析器直接将 DNS 请求发送到 DNS 根服务器。然后我想知道如果我的 LAN 中的任何客户端在其网卡属性中设置 DNS IP 地址以绕过 pfsense 解析器并将查询发送到外部解析器会发生什么。所以,我设置了以下规则:
https://pfsense-docs.readthedocs.io/en/latest/dns/blocking-dns-queries-to-external-resolvers.html
它们可以工作,但如果客户端设置自己的 DNS 服务器,它们也会阻止客户端访问互联网。
然后我尝试了这个 NAT 规则:
https://pfsense-docs.readthedocs.io/en/latest/dns/redirecting-all-dns-requests-to-pfsense.html
但我不知道它是否像文章中所说的那样有效。在我的电脑网卡属性中设置 dns 服务器(8.8.4.4)后,我运行 pfsense数据包捕获这显然表明 DNS 请求已发送并由 8.8.4.4 直接响应。一些 nslookup 显示相同的结果。我不明白到底发生了什么,以及如何确保上述 NAT 规则正常工作。
答案1
NAT 会自动在两个方向上应用。如果计算机将数据包发送到 8.8.4.4,而 pfSense 将其重定向到另一个地址,则必须对返回计算机的响应应用完全相反的改变——否则计算机将无法识别它属于同一次对话。
因此,即使响应实际上是由您的本地解析器生成的,pfSense 也会将其源重写为“8.8.4.4”以匹配原始请求。
确定 NAT 是否正常工作的最简单方法是捕获两个都LAN 和 WAN 接口。如果响应来自“真实”的 8.8.4.4,那么它们将首先到达 WAN 接口,然后再传到 LAN。但如果您的重定向有效并且它们是由本地解析器生成的,那么数据包将突然出现在 LAN 端没有相应的 WAN 数据包。
或者:告诉计算机使用 DNS 服务器地址不是真正的 DNS 服务器。(例如,192.0.2.x 是通常的“虚拟地址”范围,不可能响应 DNS 查询。)如果计算机在查询不存在的服务器后仍能收到响应,则表明重定向正在工作。