我的网络中有一个自定义 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 服务器,还是它们也只是转发请求?
谢谢!
路由器,就像只是在进行 IP 数据包转发的设备 + 软件中一样,根本不会对 DNS 或 DHCP 做任何事情......
不过既然你提到了一种常用作SOHO/家庭宽带路由器的设备。这是一个提供路由、NAT、防火墙、DNS、DHCP 和许多其他服务的设备。
无论如何,当为 IPv4 DHCP 配置且没有任何静态配置的客户端连接到网络时,它将发送 DHCP 请求,其中将包括对选项 6 数据的请求,该数据是要使用的 IP 列表域名系统。DHCP 服务器可能会提供带有 IP 列表的答案。一旦客户端得到答案,它将继续使用这些 DNS 服务器,直到地址被释放或更新并提供更新的信息。
因此,如果您想强制客户端从 DHCP 服务器获取更新的 DNS 设置,您需要在客户端上进行更新。尽管重新启动、断开连接并重新连接网络接口通常也会触发这种情况。
SOHO/家庭路由器通常无法使用库存固件进行配置。您通常可以使用非标准固件获得更多控制权。或者只是在网络上的其他设备上运行服务。
DHCP 服务器(可能在您的路由器上运行)为客户端提供他们可以使用的 DNS 服务器的 IP 地址。
你需要调整这些。
如果不能,SOHO 路由器的一个明显可能性是,路由器本身很可能会为客户端提供 DNS 服务器的 IP 地址 路由器本身用于 DNS 的 IP 地址,或者路由器将始终提供自己的 IP 地址作为 DNS 服务器。在路由器上,您通常可以(隐式)为您的专用网络配置正向和反向 DNS,对于所有其他查询,路由器会将查询转发到其自己的外部 DNS 服务器。
在后一个示例中,您将看到所有客户端查询似乎也来自路由器 IP 地址
我没有解决该问题的方法,但看起来 Linksys Velop (WHW03CFv2) 路由器中存在一个错误,它没有将您在管理 UI 中配置的自定义 DNS 服务器发送给客户端。
我可以在 Wireshark 中看到这一点,无论您在 UI 中配置什么,DHCP 选项 6(DNS 服务器)都将设置为路由器的 IP。
配置 WINS 服务器将通过 DHCP 选项 44 成功传输到客户端。