我在我的 pfsense v. 2.4.5 中将DNS Resolver设置为我的 DNS 服务,还将 pfsense 本地 IP 地址(127.0.1.1,实际上是 192.168.5.1)设置为我唯一的 dns 服务器,让 Resolver 将 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
但我不知道它是否像文章中所说的那样有效。在我的 pc 网卡属性(8.8.4.4)中设置 dns 服务器后,我运行 pfsense Packet Capture,它显然显示 dns 请求已发送并由 8.8.4.4 直接响应。一些 nslookup 显示相同,我不明白到底发生了什么,以及如何确保上面的 NAT 规则正常工作。
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 查询。)如果计算机即使在查询不存在的服务器后仍以某种方式收到响应,则表明重定向工作正常。