我们有一款基于 Python 的内部应用,运行在我们的一对 CentOS 7 应用服务器上。该应用会根据需要提取数据包捕获文件。
我们最近在环境中添加了两个新的 DNS 服务器。当我们禁用“旧”DNS 服务器上的命名服务时,应用程序失败了。在旧 DNS 服务器上启用服务,应用程序就可以正常工作了。顺便说一下,新 DNS 服务器已启用。
应用程序中没有对 DNS 进行硬编码。应用服务器上的 /etc/resolv.conf 指向新的 DNS 服务器,而不是旧的 DNS 服务器。此应用服务器上没有 ncsd 或命名。应用服务器上的 nslookup 发现目标服务器使用正确的“新”DNS 服务器收集 pcap。
旧 DNS 服务器上的 tcpdump 显示应用服务器正在通过端口 53 向其发送 DNS 请求,这正是此处讨论的问题。应该发送到新的 DNS 服务器。
在此次故障排除事件中,该应用程序已被手动重启多次。
nsswitch.conf 具有标准设置:主机:文件 dns myhostname
该问题与浏览器或浏览器缓存无关。
总之:DNS 似乎“卡”在旧的 DNS 解析器上。
想知道是否有人知道如何排除故障,谢谢。
答案1
为了简化,我省略了很大一部分内容。
应用服务器上正在运行 Saltstack 自动化。实际的应用本身将 Saltstack 代码作为 api 调用(尽管您可以将其称为 RPC)。在“上方”运行的是控制 api 和相关代码的进程。它最后一次重新启动是在 DNS 问题开始前三周。打算本周重新启动。它很可能抓住了“旧”DNS 服务器,直到我们重新启动它才会放手。