具有 DHCP 和自定义 DNS 设置的路由器如何处理客户端 DNS 设置?

具有 DHCP 和自定义 DNS 设置的路由器如何处理客户端 DNS 设置?

我的网络中有一个自定义 DNS 服务器,我希望所有客户端都使用它(它具有广告过滤器等,类似于 PiHole)。

我已将路由器 (LinkSys Velop) 设置为使用此 DNS 服务器。但是,在 DNS 服务器的管理页面上,我仅看到路由器执行 DNS 查询,而没有看到客户端。我认为路由器(迟早)会告诉客户端使用特定的 DNS 服务器。尽管重新启动了客户端(并执行了其他各种网络重置操作,例如ipconfig /flushdns等),但它们似乎无法直接访问 DNS 服务器:只有路由器可以访问。

到目前为止,让客户端直接访问 DNS 服务器的唯一方法是在客户端网络配置中手动输入 DNS 服务器。

所以问题是:

  • 这是预期的行为吗?
  • 路由器中的 DNS 设置(或者仅限我的?)是否只是让路由器继续“充当”DNS服务器并将请求重定向到设置的IP地址,然后将结果发送回来?
  • 我必须做什么才能让客户端将特定 IP 地址设置为 DNS 服务器?我必须设置自己的 DHCP 服务器吗?
  • 通常的(例如 CentOS 中的 ISC DHCP?)Linux DHCP 服务器会告诉客户端使用哪个 DNS 服务器吗,还是它们也只是转发请求?

谢谢!

答案1

路由器,作为执行 IP 数据包转发的设备+软件,根本不执行 DNS 或 DHCP 的任何操作......

不过既然您提到了通常用作 SOHO/家庭宽带路由器的设备。该设备提供路由、NAT、防火墙、DNS、DHCP 和许多其他服务。

无论如何,当配置为 IPv4 DHCP 且没有任何静态配置的客户端连接到网络时,它将发出 DHCP 请求,该请求将包括对选项 6 数据的请求,该数据是用于 DNS 的 IP 列表。DHCP 服务器可能会提供带有 IP 列表的答案。一旦客户端得到答案,它将继续使用这些 DNS 服务器,直到地址被释放,或更新并提供更新的信息。

因此,如果您想强制客户端从 DHCP 服务器获取更新的 DNS 设置,则需要在客户端上执行更新。不过,重启或断开连接并重新连接网络接口通常也会触发此操作。

SOHO/家庭路由器通常很难通过原厂固件进行配置。使用非标准固件通常可以获得更多控制权。或者只是在网络上的其他设备上运行服务。

答案2

DHCP 服务器(可能在您的路由器上运行)向客户端提供他们可以使用的 DNS 服务器的 IP 地址。

您需要调整这些。

如果不能,那么 SOHO 路由器就很有可能出现这种情况,最有可能的是路由器本身要么向客户端提供 DNS 服务器的 IP 地址(路由器本身用于 DNS 的 IP 地址),要么路由器始终提供自己的 IP 地址作为 DNS 服务器。然后,在路由器上,您通常可以(隐式地)为您的专用网络配置正向和反向 DNS,对于所有其他查询,路由器会将查询转发到自己的外部 DNS 服务器。

在后一个例子中,你会看到所有客户端查询似乎也来自路由器 IP 地址

答案3

我没有该问题的解决方案,但看起来 Linksys Velop (WHW03CFv2) 路由器中有一个错误,它没有将您在管理 UI 中配置的自定义 DNS 服务器发送给客户端。

我可以在 Wireshark 中看到这一点,无论您在 UI 中配置什么,DHCP 选项 6(DNS 服务器)都将设置为路由器的 IP。

配置 WINS 服务器将通过 DHCP 选项 44 成功传输到客户端。

相关内容