重新启动 Linux 客户端时,DNS 一段时间内不起作用

重新启动 Linux 客户端时,DNS 一段时间内不起作用

我有一个 Linux 客户端,当我重新启动它时,它不会响应我对其 DNS 名称的 ping 请求,但会响应其 IP。假设我有一个主机名为“Linux”,IP 为“192.168.1.100”。我的路由器用作 DNS 网关,另一个客户端(我的 PC)设置为使用它。Linux 客户端也是如此。

当 Linux 客户端在线时,我可以使用 PC 上的 IP 和 DNS 来 ping 它。如果我重新启动 Linux 客户端,并继续从 PC 上 ping 它的 IP 地址和 DNS,我当然会在重新启动时停止获取响应,但是当它重新启动时,我会开始获取响应,但只能从 IP 地址获取响应,而不是从 DNS 获取响应。这是为什么?Linux 机器离线的短暂时间不应该改变任何 DNS 记录,对吧?

我将长时间无法从其 DNS 名称获得回复,除非我ipconfig /flushdns在 PC 上执行此操作,然后我会立即开始从 DNS ping 请求获得回复。但是我不明白为什么刷新是必要的,因为 Linux 客户端 IP 没有改变。

有办法解决这个问题吗?我是否需要在 Linux 设备上进行某种配置?

答案1

这可能是由发出动态 DNS 更新的 DHCP 守护程序引起的。关闭 Linux 计算机时,它可能会释放其 DHCP 租约,从而导致 DHCP 服务器删除其 DNS 记录。

当 Linux 系统重新启动时,您的 Windows 客户端会收到负面的 DNS 响应。

当 Linux 系统返回时,它会获取新的 DHCP 租约,DHCP 守护进程会添加新的 DNS 记录,但 Windows 客户端仍然缓存了其负面响应。

可能的解决方案是降低 DNS 的默认/负缓存 TTL,提高 DHCP 守护进程创建的动态 DNS 资源的 TTL,或者放弃 DHCP 而采用静态 IP 和 DNS 记录。

答案2

另外,您可能还想在 /etc/rc.d/rc3.d 中检查启动时启用的服务的字母顺序(以“S”开头的所有内容)。如果您启动了许多服务,而有些服务需要一段时间,那么您可以将启动 bind(命名)的服务移动/重命名为较低的数字(但不要太低),这样它应该会启动得更快。您还可以检查 /etc/resolv.conf 是什么。直接转到 Google 的查找(ip 8.8.8.8 和 8.8.4.4)服务可能会获得更好的查找效果。

相关内容