如何通过 ARP 中毒强制我的 LAN 上的用户使用特定的 DNS 服务器?

网络工程 局域网 ARP dns
2022-02-14 03:51:31

我试图强制我局域网上的所有主机使用特定的 DNS 服务器来过滤某些材料,但是我遇到了问题。

过去我在尝试配置路由器的 DHCP 以将所需的 DNS 服务器分配给主机时遇到过问题,因为一些用户只是学会了在计算机上设置自己的 DNS 服务器(例如 Google 的 8.8.8.8)。

目前,我有一个 ARP 中毒脚本,可以将所有流量从网关路由器重定向到我的机器。同时,我有第二个 python 脚本侦听端口 53 流量,因此我可以拦截 DNS 查找数据包,将目标 IP 从原始 DNS 服务器修改为所需的 DNS 服务器,然后将它们发送到新的 DNS 服务器。

我是否以正确的方式思考这个问题?

有没有更简单的方法可以强制用户使用某个 DNS 服务器?

似乎我什至没有在我的机器上获得端口 53 的任何流量,即使该端口的防火墙是打开的,所以当用户尝试解析时我什至没有机会查看 DNS 请求数据包dns查找,更不用说修改数据包了。

这不像在路由器上设置端口规则那么简单,因为这可能在 LANS 上实现,路由器没有非常复杂的防火墙设置,而且我不想总是强制所有主机使用指定的 DNS 服务器-- 我想要一个将某些设备列入白名单的选项。

我非常感谢任何反馈或帮助。谢谢!

注意:这最初是在 Security Stack Exchange 上发布的,但是建议我也在这里询问。

2个回答

您不会使用 ARP 中毒,只需在防火墙中创建一条规则以允许流量到白名单的 DNS 服务器,然后创建一条规则来拒绝 DNS 流量。

它不起作用的原因正如 Zac67 在评论中所回答的那样,ARP 仅在 LAN 上使用。DNS 位于公共网络上。

如果您想通过您的机器将所有流量重新路由到默认网关,那么首先将您的机器设置为默认网关会更加可靠。除非您完全停止(过滤)正常的 ARP,否则 ARP 中毒将无法欺骗 100% 的节点。

即便如此,如果您的用户能够更改他们的 DNS 设置,他们也可能能够解决中毒问题——他们只需要为原始网关设置静态 ARP。ARP 中毒更多是一种攻击方法或最后的手段,而不是常规的操作模式。

此外,如果您不希望您的用户使用随机 DNS 服务器,只需保留默认网关并配置防火墙以过滤该流量并仅允许您想要的服务器。在受控环境中,无论如何你都会这样做。