为什么当我将端口 53 端口转发到我的计算机时,我会捕获来自网络中每个人的所有 DNS 查询?

网络工程 路由器 纳特 dns
2022-02-04 17:39:58

我在 Wireshark 中看到了一些我无法解释的东西。我的设置如下:具有单个全局 IP 的路由器对其后面的设备进行 NAT。我也用我的电脑支持它。我将端口 53 外部端口转发到我的计算机,也在路由器的端口 53 上(作为实验)。

从那时起,网络中的任何人都无法再进行 NS 解析了。连我都没有。但奇怪的是,我看到每个人在 Wireshark 中的 NS 查找查询都到达了我的计算机上

谁能解释一下?我认为端口转发仅适用于来自 NAT 外部的流量。似乎内部流量也正在转发给我。这是路由器的bug吗?这似乎是一个巨大的安全漏洞。

2个回答

您的路由器很可能充当 DNS 中继。因此,当您使用 DHCP 请求 IP 时,它不需要知道外部 DNS 服务器。

所以网络内的所有客户端都认为你的路由器是一个 DNS 服务器,但实际上它只是一个中继客户端。因此,如果网络内的客户端发送 DNS 请求,则 ip 目标字段是您路由器的内部地址。

通过允许转发外部 DNS 请求,您将获得以下信息。带有外部 IP 地址的数据包到达路由器。它看到这是我的 ip,我必须将其转发到内部 PCx。

接下来,内部客户端将 DNS 数据包发送到路由器。同样的事情又发生了。因为这两个数据包都以路由器为目的地。路由器将“哑巴”地看到数据包到达内部接口(ip)或外部接口(ip)。

这并不是一个真正的错误(业界将其称为功能:P)它已存在于许多路由器固件中。只是消费级路由器被编程的问题,他们并没有真正看到流量的差异,他们是目的地。即使数据包到达完全不同的接口。

我希望我的解释有所帮助;)

添加一些术语:

NAT 反射,也称为发夹https://en.wikipedia.org/wiki/Hairpinning

端口转发通常并不意味着仅适用于来自 WAN 接口的流量。

我见过的大多数消费级路由器都默认为 Hairpinning,并且无法禁用它(除非您使用闪存自定义固件)

所以基本上该端口上到您的路由器的任何流量都会根据您的规则转发,无论它来自哪里。