我在路由器后面的 LAN 中有一个运行 Linux 的设备,需要为其提供一个内部 DNS 服务器,以解析其自己的内部应用程序的名称(它基于 OpenWRT)。
这样做的原因是,对于某些查询,DHCP 提供的东西似乎没有按预期工作,并且一些客户端应用程序超时(抱歉缺乏细节,但我很确定这一点,因为 wireshark 捕获证明一些 DNS 查询没有正确响应)。
我不打算在此设备中运行 DHCP 服务器,只运行本地 DNS 服务器。
我对 DHCP、DNS 及其握手有基本的了解,但我不确定这种情况如何工作域名系统:我在设备中配置了 DNS 服务器,并在其服务器列表中添加了一个外部公共名称服务器,期望(也许是错误的,我不知道)它能够覆盖 DHCP/路由器/ISP(在本例中是 DHCP 客户端)提供的名称服务器。
该/etc/resolv.conf
文件只有该nameserver 127.0.0.1
行,并且一切似乎都按我预期的方式工作。
但是,如果任何外部 DNS 发生故障,会发生什么情况?它会回退到 DHCP 握手提供的 DNS 吗?
我认为换句话说,问题是:域名系统有服务器列表,它会使用 DHCP DNS 设置吗?
希望这是清楚的。
答案1
据我所见,域名系统工作原理如下:
- 它将自己作为 DNS 服务器在常规解析文件中使用(例如,在我的 OpenWRT 安装中,它是
/tmp/resolv.conf
); - 它首先选择一个选项来设置一个解析文件(在 OpenWRT 中
--resolv-file
指向/tmp/resolv.conf.auto
),供其内部使用,其中自定义名称服务器和DHCP 服务器提供的地址设置在一个列表中。
简而言之,它会跟踪所有名称服务器。