我正在建立一个Pi孔在我的家庭网络上。我的路由器有两个位置列出了设置 DNS 的选项。默认情况下,其中一个位置填充了路由器本身的地址(192.168.1.1
),另一个位置设置为我的 ISP 的上游 DNS(79.79.79.79
)。我被告知,我应该将第一个更改为我的 Pi-hole 的 IP,另一个保持原样。
如果我的理解正确,这是否意味着当发出请求时,Pi-hole 会接收该请求,如果它是本地的(即我想要访问主机名为“Foo”的 NAS),那么它会将请求交给路由器的 DHCP 服务器,该服务器会知道分配给该主机名的 IP 是什么,因为它有自己的 DNS?
但是,如果请求是外部的,那么我的 Pi-hole 将使用 PiHole 本身内配置的上游 DNS,并跳过路由器中指定的 DNS(79.79.79.79
)。
从理论上看这似乎是可行的,但是我的问题是,为什么我能够在任何 Windows 计算机上从 CMD 通过主机名 ping 设备,如果从理论上讲 Pi-hole 应该停止这项工作,因为 DHCP 服务器在路由器本身上运行,并在 Pi-hole 上被禁用?
DHCP 如何以及在何处参与其中,以及我的网络的哪个部分负责说明 IPx.x.x.x
属于主机名“Foo”?
答案1
使用 Pi-hole 时,路由器是否使用单独的 DNS 来处理 DHCP 请求?
不 ...
DHCP 的工作方式如下:
需要 IP 地址的系统会发送播送从 NIC 中。
监听 DHCP 服务器接收广播并做出响应。
进行一些握手后,需要 IP 地址的系统会获得租约以及称为选项的附加信息。
有很多 DHCP“选项” - 其中之一是可用的 DNS 服务器的 IP 地址。
因此,直到上述第 4 点为止,除了 DHCP 服务器之外,没有其他任何服务器可以通信。系统从 DHCP 服务器获取 DNS IP 后,然后它可以谈论 DNS。
这是否意味着当发出请求时,Pi-hole 会接收该请求,如果它是本地的(即我想要访问主机名为“Foo”的 NAS),那么它会将请求交给路由器的 DHCP 服务器,该服务器会知道分配给该主机名的 IP 是什么,因为它有自己的 DNS?
我认为 Pi-Hole 的用途是dnsmasq
- 这是一个回答 DNS 请求的小程序 - 它可以直接配置并响应本地系统(如 NAS)的自定义 IP 到域映射,并且可以将其他 DNS 请求交给其他任何东西。
那个“其他任何东西”可能是处理所有过滤器的东西,然后如果某些东西没有被阻止,它会将其转发到您的 ISP DNS 或您指定的其他外部 DNS(如 Google 等)。
为什么我可以在任意 Windows 电脑上使用 CMD 通过主机名 ping 设备
Windows 可以使用网络基本输入输出系统解析计算机名称以及 DNS。这是 80 年代末/90 年代初较旧的对等协议,是在 TCP/IP 尚未自动在 PC 上提供的时代出现的。此协议可以在有或没有中央 WINS 服务器的情况下运行。这不应该逃离您的 LAN。