我就是这么知道的。
无论您使用独立的 DHCP 服务器还是嵌入在 SOHO 路由器中的 DHCP 服务器,DHCP 服务器如何获取传递给客户端的典型 2 个 DNS IP?
我的想法是,当 SOHO 路由器从 ISP DHCP 获取其 IP 地址、默认网关等时,它还会获取 DNS 服务器 IP,并将它们传递给 SOHO 路由器的 DHCP 服务器,以便将其传递给客户端。但我肯定是错的,因为如果 DHCP 服务器是一台独立机器,它如何获取 DNS 服务器的 IP?它会查询 ISP 吗?我不这么认为,它必须连接到调制解调器才能发送 DORA 消息,对吗?还是您必须手动将它们输入到服务器中?
任何见解均值得赞赏。
答案1
维基百科在其文章中解释了这些概念 动态主机配置协议 (DHCP)。
路由器是 ISP 创建的互联网网络上的互联网客户端。它也是本地网络的服务器。该过程完全取决于 DHCP 请求,其中路由器是外部网络上的 DHCP 客户端,而内部网络上的 DHCP 服务器。
一般来说,DHCP 请求的工作方式如下:
在哪里 :
- DHCPDISCOVER:客户端广播寻找 DHCP 服务器。
- DHCPOFFER:DHCP 服务器为客户端提供 IP 地址,同时指定子网掩码和 DHCP 服务器本身的 IP 地址。
- DHCPREQUEST :客户端通过 ARP 请求验证该地址可以自由使用后,以广播消息进行回复,请求提供的地址。
- DHCPACK:服务器完成协商并发送所需的所有信息,包括一些 DNS 服务器。
路由器首先使用该协议作为客户端,最后接收自己的外部 IP、ISP 的 DHCP 服务器的 IP、互联网网关和 DNS 服务器(通常由 ISP 在其网络中维护)。
本地网络中的任何计算机也将使用相同的协议。但此处路由器是服务器,因此它会为计算机返回本地网络 IP,其自己的 IP 作为 DHCP 服务器和网关。对于 DNS,路由器通常会传递从 ISP 收到的服务器,但有时也会返回自己的 IP。
答案2
无论使用独立 DHCP 服务器
独立的 DHCP 服务器通常启动时是“空”的 – 您必须配置它可供地址池提供,并且您必须将其配置为 DHCP 租约选项以与地址一起包含。(“DNS 服务器”是选项 6,它通常与“域后缀”选项 15 一起出现。)
例如,dhcpd
Linux 上广泛使用的 ISC DHCP 服务器的配置如下:
subnet 10.147.112.0 netmask 255.255.255.0 {
range 10.147.112.2 10.147.112.254;
option routers 10.147.112.1;
option domain-name-servers 10.147.10.53;
option domain-name "internal.example.org";
}
(请注意,甚至“默认网关”也必须明确指定!)
DHCP服务器dnsmasq
专为家庭使用而设计(有时也可在 SOHO 路由器内找到),可以自动提供主机操作系统配置使用的 DNS 服务器(通过读取 /etc/resolv.conf),但也可以明确列出它们:
dhcp-range = 10.147.112.2, 10.147.112.254, 255.255.255.0
dhcp-option = option:domain-name, lan.example.org
dhcp-option = option:dns-server, 10.147.10.53
但顾名思义,DNS 服务器 IP 地址在技术上是选修的信息和地址租约可以在没有它们的情况下发布——例如,如果设置不需要 DNS 的独立网络,你可以不是在 DHCP 租约中完全发送选项 6。
另请注意 DNS 服务器信息不一定非要从 ISP 获得 – 任何公共 DNS 服务器都可以访问与任何其他公共 DNS 服务器相同的域信息,因此您可以选择使用第三方解析器(例如 Google 的 8.8.8.8)甚至可以自己运行一个。
在上面的(真实)示例中,10.147.10.53 是运行 ISC BIND 的本地 DNS 服务器(在同一网络的另一个子网中),它无需 ISP 解析器或任何其他解析器的帮助即可解析域名 - 它直接与每个域的权威服务器对话。
解析域名需要从“DNS 根”名称服务器开始追踪引荐(指向另一台服务器的指针)。根服务器列表极少发生变化,大多数 DNS“递归解析器”软件都内置了列表,这意味着它们可以完成这项工作没有需要检测或提供任何服务器信息。
因此,即使您不知道要使用任何 DNS 服务器地址,您只需要在同一系统上安装任何递归解析器软件,例如 Unbound 或 ISC BIND(并让 DHCP 服务器公布其本地 IP 地址) – 您便拥有完全正常运行的 DNS 服务。