我有一个小型商业网络,上面有几台服务器。为了简化操作,我在其中一个服务器上添加了一个 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 [email protected]
(after a ~10 second pause)
ssh: Could not resolve hostname vpn.example.com: Name or service not known
# ssh [email protected]
[Connects immediately]
对 vpn.example.com 的 Web 请求成功,来自其他应用程序的连接也成功。
这种情况会间歇性发生,似乎与网络或服务器重启有关。一切恢复正常一两天后,问题似乎消失了,大概是因为客户端缓存终于解决了问题(?)。我在 Mac 和 Windows 机器上都看到了这个问题。有什么建议吗?
答案1
由于您已将域名匿名化,因此隐藏了重要信息。您所连接的服务的域名是否恰好以 结尾.local
?
Nslookup 直接向 DNS 服务器发送查询。SSH 会调用系统,要求其解析名称,这可能使用 DNS,但也可能使用主机文件、多播 DNS(bonjour)或其他名称解析协议。因此,您配置的其他名称解析方法之一很可能出了问题。
请参阅主机行/etc/nsswitch.conf
以了解已配置的名称解析服务。