我正在家庭网络中使用 Pi-hole DNS 服务器来阻止广告和恶意主机。
这是我的网络配置:
- 我的家庭内部网络是 192.168.34.xxx
- 网络网关路由器(型号 TL-R470T+)位于 192.168.34.1
- Pi-hole DNS 服务器位于 192.168.34.101
在我的 MacBook 上,每当我连接到 Wifi 网络时,DNS 选项卡都会自动显示以下内容:
另外 2 个条目从何而来?我在路由器配置页面中只添加了一个 DNS 条目:
即使跑步scutil --dns给我正在使用的 DNS 服务器。
因此,我认为我的 DNS 请求甚至没有到达我的 192.168.34.101 服务器,而是转到 192.168.34.1。假设 Mac 不从 Apple 进行自己的 DNS 解析(?)
如果我在 mac wifi 设置中明确添加 DNS,DNS 请求就会到达我的 DNS 服务器。如何在不使用 DNS 服务器的情况下阻止网关解析 DNS 请求?
执行上述操作有效,但这不是正确的解决方案。如何让我的 MacBook 使用我的 DNS 服务器而无需明确指定?
答案1
首先:尝试在辅助 DNS 字段中填写一些无效的内容 - 例如 192.168.34.254。如果留空,许多路由器会将自己的地址放入辅助字段中。
但是:许多路由器不允许您完全覆盖 DHCP 服务器发送的 DNS 设置。对于您的 TP-Link 来说可能确实如此(对于许多 ISP 提供的路由器来说,当 ISP 想要出售您的 DNS 历史记录时,这肯定是真的)。
我并没有真正解决这个问题,但一次又一次地用一些蛮力“破解”了这个问题 - 方法如下:
- 将路由器设置为仅通过 DHCP 提供单个 IP(例如范围 192.168.34.50-192.168.34.50)
- 在 PiHole 上添加虚拟 IP 作为 DHCP 客户端
- 这意味着,在重新启动(其他客户端关闭)后,路由器提供的唯一 DHCP 地址将被虚拟接口占用
- 在 PiHole 上运行 DHCP 服务器,提供其余所需范围,例如 192.168.34.51-192.168.34.220。在这里,您可以覆盖所有选项,包括 DNS 选项,并使其仅指向 PiHole。
客户端连接可能需要更长时间,因为 DHCP 过程可能需要几次尝试,但这通常是有效的。
再说一遍:这并不优雅,但在没有真正允许您覆盖 DNS 的路由器上不使用双重 NAT 是最好的办法。
答案2
扩展 Eugen Rieck 提供的解决方案。
一些路由器/DHCP 服务器会允许您将相同的 IP 作为主 DNS 和辅助 DNS,这对于客户端来说可能比虚假地址更好。
看起来可以禁用 TP-Link 上的 DHCP。您可以将该功能移至 PiHole。您必须为 PiHole 设置静态 IP。