SSH 失败,未找到主机,但 NSLookup 找到该主机

Chr*_*ris 7 domain-name-system ssh bind

我有一个小型企业网络,上面有几台服务器。为了简化操作,我在其中一台上添加了一个 BIND9 DNS 服务器,其中包含每台本地计算机的条目,即 vpn.example.com、web.example.com、storage.example.com 等。这些条目仅提供给本地网络。当我在 vpn.example.com 上进行 nslookup 时,我总是会得到预期的有效响应。然而,尝试通过 SSH 连接到该服务器常常会失败,如下所示:

# nslookup vpn.example.com
Server: 192.168.1.13
Address: 192.168.1.13#53

Non-authoritative answer:
Name: vpn.example.com
Address: 192.168.1.14

# ssh user@vpn.example.com
(after a ~10 second pause)
ssh: Could not resolve hostname vpn.example.com: Name or service not known

# ssh user@192.168.1.14
[Connects immediately]
Run Code Online (Sandbox Code Playgroud)

对 vpn.example.com 的 Web 请求成功,来自其他应用程序的连接也成功。

这种情况间歇性地发生,似乎与网络或服务器重新启动有关。一切正常一两天后,问题似乎就消失了,大概是客户端缓存最终解决了问题(?)。我在我的 Mac 和 Windows 机器上看到了它。有什么建议么?

Zor*_*che 4

由于您已对域名进行匿名化,因此您隐藏了重要信息。您连接的服务的域名是否恰好以 结尾.local

Nslookup 直接将查找发送到 DNS 服务器。SSH 向系统发出调用,要求其解析名称,这可以使用 DNS,但也可以使用主机文件、多播 DNS(bonjour) 或其他名称解析协议。因此,很可能您的其他配置的名称解析方法之一被搞砸了。

请参阅您的主机行/etc/nsswitch.conf以了解配置的名称解析服务。