我有一个小型企业networking上有几个服务器。 为了简化,我在其中一台DNS服务器上添加了一个BIND9 DNS服务器,每个本地计算机都有条目,例如vpn.example.com,web.example.com,storage.example.com等等。 这些条目仅供本地networking使用。 当我做了一个nslookup,比如说vpn.example.com,我总是得到预期的,有效的回应。 但是,通常情况下,尝试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请求成功,与来自其他应用程序的连接也成功。
这种情况是间歇性的,似乎与networking或服务器重启有关。 在所有事情发生一两天之后,这个问题似乎就消失了,大概是因为客户端caching最终会把事情弄清楚(?)。 我在我的Mac和Windows机器上看到它。 有什么build议么?
由于您匿名的域名,您有隐藏的重要信息。 您连接的服务的域名是否恰好以.local结尾?
Nslookup直接向DNS服务器发送查询。 SSH对系统进行调用,要求它parsing可能使用DNS的名称,但也可能使用hosts文件,multicast-DNS(bonjour)或其他名称parsing协议。 所以很可能你的其他configuration名称parsing方法之一是搞砸了。
请参阅/etc/nsswitch.conf的主机行以获取已configuration的名称parsing服务。