web-dev-qa-db-ja.com

SSHが失敗し、ホストが見つかりませんが、NSLookupはそのホストを検出します

いくつかのサーバーを備えた中小企業のネットワークがあります。簡単にするために、そのうちの1つに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リクエストは成功します。

これは断続的に発生し、ネットワークまたはサーバーの再起動に関連しているようです。すべてが1日か2日稼働した後、おそらくクライアントキャッシュが最終的に問題を把握したため、問題は解決したようです(?)。 MacとWindowsのマシンで見ています。助言がありますか?

3
Chris

ドメイン名を匿名化したので、重要な情報を隠しました。接続しているサービスのドメイン名はたまたま.localで終わりますか?

Nslookupは、ルックアップをDNSサーバーに直接送信します。 SSHはシステムを呼び出して、名前を解決するように要求します。DNSを使用する場合もありますが、hostsファイル、マルチキャストDNS(bonjour)、またはその他の名前解決プロトコルを使用する場合もあります。したがって、他の構成済みの名前解決方法の1つが失敗している可能性があります。

構成された名前解決サービスについては、/etc/nsswitch.confのホスト行を参照してください。

4
Zoredache