web-dev-qa-db-ja.com

nslookupが正常に動作しているのに、なぜpingが名前を解決できないのですか?

私のWindows XPワークステーションでは、nslookupを使ってDNSで接続したいマシンを見つけることができます。

nslookup wolfman
Server: dns.company.com
Address: 192.168.1.38

Name: wolfman.company.com
Address: 192.168.1.178

しかし、そのマシンに接続しようとすると、そのマシンが見つからない(つまり、DNSで検索できない)というエラーが表示されます。

C:\> ping wolfman
Ping request could not find Host wolfman. Please check the name and try again.

IPアドレスを直接使用すれば接続できます。

C:\> ping 192.168.1.178

Pinging 192.168.1.178 with 32 bytes of data:

Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=44ms TTL=126
Reply from 192.168.1.178: bytes=32 time=38ms TTL=126

私はhostsファイルにエントリを追加することでこれを回避することができましたが、なぜこれが起こっているのか知りたいと思います。問題は一時的なもので、ほとんどの場合私はマシンに接続することができます。

これはどのように可能ですか?

ETA:簡潔にするためにこれを省略しましたが、それは求められました:

C:\> ping wolfman.company.com
Ping request could not find Host wolfman.company.com. Please check the name and try again.

ETA:他のアプリケーションでも同じ結果が得られます。単純化するためにpingを試しただけです。 telnetが接続できず、Cygwinアプリが "unknown Host wolfman"メッセージを表示します。

更新:wiresharkを使って、私のワークステーションはDNS検索を試みていないことがわかりました。 「ホストが見つかりませんでした」というエラーメッセージが報告されただけです。

132
skiphoppy

私は、nslookupがDNSポートでWinsock接続を開き、クエリを発行するのに対して、pingはDNSクライアントサービスを使用すると考えています。このサービスを試して停止して、これが違いを生み出すかどうかを確認できます。

さまざまなネットワーク状態を再初期化するコマンドがいくつかあります。

WINSOCKエントリをインストール時のデフォルトにリセットします。netsh winsock reset catalog
TCP/IPスタックをインストール時のデフォルトにリセットします。netsh int ip reset reset.log
DNSリゾルバキャッシュをフラッシュします:ipconfig /flushdns
DNSクライアント登録を更新し、DHCPリースを更新します。ipconfig /registerdns
ルーティングテーブルをフラッシュします:route /f(再起動が必要です)

98
harrymc

ホスト名とそれに続くドットでpingを試してください。 ping wolfmanの代わりにping wolfman.を使用してください

これで、hostsファイルなどを使用して回避策をとらなくても解決できます。

28
Senthil

ipconfig /displaydnsを試して、wolfmanを探してください。 「名前が存在しない」としてキャッシュされている場合(おそらく以前の断続的な失敗した検索が原因で)、キャッシュをipconfig /flushdnsでフラッシュできます。

nslookupはキャッシュを使わず、DNSサーバーに直接問い合わせます。

16
craig65535

その接続のDNSサフィックスに.を追加してみてください。つまり、

  1. イーサネットステータス
  2. プロパティをクリック
  3. インターネットプロトコルバージョン4
  4. プロパティをクリック
  5. 詳細設定をクリックします
  6. これらのDNSサフィックスを(順番に)追加してください
  7. 接尾辞として.を追加してください。

次のスクリーンショットに同じ手順が示されています。

これはping wolfmanを機能させるはずです。

説明

nslookup wolfman(ネームサーバールックアップ:wolfman)はホスト名(wolfman)をDNS(ドメインネームシステム)に送信して対応するIPアドレスを取得します。これがnslookupコマンドの唯一の目的です。これはすでに機能しているので、DNSが機能し、wolfmanが実際にIPアドレスに対応していることを確認しました。

対照的に、ping wolfmanは2つのことをする必要があります:

  1. ホスト名(wolfman)が対応するIPを取得します。
  2. パケットをIPに送信し、応答を待ちます

Windows(Windows 10などの最近のバージョンでさえ)では、最初のステップは簡単に失敗する可能性があります。下位互換性のために、Windowsはホスト名解決のさまざまな方法(hostsファイル、DNS、NetBIOS/WINS、LMHOSTファイル)をサポートしています。

残念ながら、Windowsのpingコマンドは必ずしもDNSルックアップを試みないようです。この動作を引き起こす具体的な条件はわかりません。

幸いなことに、 FQDN (完全修飾ドメイン名)を使用して、WindowsにDNSルックアップを強制することができます。実際には、ホスト名の後ろに.のドットを付けることによってこれを行います:wolfman.ping wolfman.を試して、それが機能することを確認してください。

最後のステップは、Windowsにこのドット自体を追加させることです。この答えの冒頭で、これを行う方法を既に示しました。

12
Frederik Aalund

Windows上で名前/ IPアドレスを解決する場合、nslookupは他のコマンドとは異なる動作をします。

Windowsでの 通常の解決方法 は次のとおりです。

  1. クライアントは、照会された名前が自分のものかどうかを確認します。
  2. その後、クライアントはローカルのHostsファイル、ローカルコンピュータに保存されているIPアドレスと名前のリストを検索します。
  3. ドメインネームシステム(DNS)サーバーが照会されます。
  4. それでも名前が解決されない場合は、NetBIOS名前解決シーケンスがバックアップとして使用されます。この順序は、クライアントのNetBIOSノードタイプを設定することによって変更できます。

一方nslookupはドメインネームサーバのテストに 使用されます。

10
Bryan

私は同様の問題に苦しんでいて、@ harrymcが提案している解決策を試してみました。私は最終的には(少なくともいくらか)Microsoft technet forumで動作するように見えるものを見つけました( nslookupは動作しますが、スタンドアロンのWin7 PCではDNSがありません

これが引用です:

...以下のコマンドを使用して、テスト用にクライアントリゾルバキャッシュをフラッシュおよびリセットします。

ipconfig/flushdns

ipconfig/registerdns

詳細については、下記のリンクを参照してください。 http://jefferyland.wordpress.com/2011/07/28/quick-review-of-flushdns-registerdns-and-dns-queries/

だから基本的に私にとって欠けていたものはipconfig /registerdnsでした

8
Mick Halsband

今日、私たちは同じ問題を抱えていましたが、解決策は異なっていました。だから私は思った、これが一番上の検索結果であったので私は参考のためにそれを追加すると思います。

  • 問題pingはホスト名を解決しませんが、nslookupは解決できます。 (2つの異なるWindows Server 2012 R2ホストで観察されました。)
  • 原因:(ホストごとに)ホストに接続されているNICが複数あり、があります)複数のデフォルトゲートウェイが設定されている。
  • 解決方法:(各ホスト用)1つを除くすべてのNICの設定からデフォルトゲートウェイを削除します。したがって、残りの1つだけデフォルトゲートウェイ.
6
djlauk

私はWindows 2012R2(= 8.1)システムでも同じ問題を抱えていて、上記のすべての提案を試してみましたが、どれもそれを直すことはできませんでした。
- 完全修飾名でpingを実行しました。
- 非修飾名をpingしてもしませんでした。
- 両方とも、同じOSと明らかに同じ設定を持つ他のいくつかのシステムで動作しました。
- 必要なサフィックス検索文字列はすべてそこにありました。
(マルチラベルクエリの回避策のような、提案された修正のいくつかは、修飾されていない名前には1つの部分しかないため、明らかに無関係です)

それから私は私がpingしようとしていたターゲットシステムがIPv6アドレスを持っていないことに気づきました。だから私は "ping-4を試してみました 非修飾名「そして、ビンゴ!これはうまくいった。
したがって、何らかの理由で、このシステムでのみ、pingは非修飾名 - > IPv6アドレスのみを解決しようとしましたが、非修飾名 - > IPv4は解決しませんでした。
私にとっての修正は、IPv6がまったく必要ないので、IPv6を完全に無効にすることでした。しかし、私は、ping(またはおそらくDNSクライアントサービス)にIPv4アドレスとIPv6アドレスの両方を解決するように指示するためのより穏やかな方法を見つけることに本当に興味があります。

多分wolfman.company.comはC:¥Windows¥system32¥drivers¥etc¥hostsの中にリストされていますか?

nslookupはそのファイルをバイパスして常にDNSを要求しますが、pingやその他のツールはまず「hosts」ファイルを調べ、次にDNSを調べます。

5
Mikhail Kupchik

ファイルc:/windows/system32/drivers/etc/hostsにエントリを追加することで修正できます。

2
Manoj Agarwal

私もこの問題に遭遇しました。私にとってそれを修正するための「最も簡単な」方法は単にホスト名の最後に.を追加することでした。しかし、これはかなり面倒です。ほとんどのネットワークはこれを必要としません。同じリソースにアクセスする必要があるときに、ネットワーク上の他のすべての人にこれを行うように言う必要はありません。

私は考えられる解決策としてFrederik Aalundからの提案を見ていて、彼らがデフォルトの "プライマリと接続固有のDNSサフィックスを追加する"オプションから切り替えることを提案することに気づいた。これは私に多分私のネットワークがわずかに誤って設定されていなかったことを考えさせました。

私のDD-WRT設定を見て、「LANドメイン」は設定されないままにされました。これを任意の文字列に設定すると、各マシンで特別な設定をしなくても、ネットワーク上のすべてのクライアントでこの問題が解決されたようです。 :)

2

私は、1台のwin 7コンピュータで、うまく機能するping serverを使用でき、もう一方でserverを解決できないのはなぜかを突き止めようとしました。しかし、どちらもserver.lanをpingすることができましたが、私はまったく理解できませんでした。

仕事用VPNを使用しているときにFQDNを使用する必要がないように、いくつかの設定(DNSサフィックス)がめちゃくちゃになっていました。両方のコンピュータが同じように動作するようにするには、これらのサフィックスにローカルの.lanを追加する必要がありました。

[コントロールパネル]、[ネットワークとインターネット]、[ネットワーク接続]の順に選択し、ネットワーク接続を右クリックして[プロパティ]をクリックします。インターネットプロトコルバージョン4をクリックし、プロパティボタンを押してください。次に、この新しいウィンドウの[詳細...]ボタンをクリックします。 [DNS]タブに移動します。ここに仕事用のDNSサフィックスを追加しましたが、通常の自宅接続にも必要です。

Advanced TCP/IP Settings

2
eresonance

これは私の長い間忘れられていたNT4リソースキットの日に基づいているので、私はこれについて間違っているかもしれません。

運賃として私はPINGがNetbios/WINSとDNSを使っていることを思い出すことができます(少なくともFQDNを指定していない場合はこの順序で)。

WINSは何年も前になくなっていますが、あなたはまだあなたのインターフェース上でNetbiosを有効にしているかもしれません、そしてそれ故PINGはあなたに結果を与えないかもしれないnetbiosを使うかもしれません。特にトラフィックがルータのどこかを通過している場合.

Netbiosを無効にすると、Pingは最優先としてDNSを使用し、インターフェイスに登録済みのDNS Surfficをホスト名に追加します。

1
MrCalvin

昨年私を悩ませたので、私はこれを拾っています、そして多分私は回避策を見つけました。

私にとっては、Windowsクライアント内のいくつかのDNSキャッシュシステムが不完全であるように見えた。 Windows 7と8.1はこれの影響を受けます... Windows XPについてはもう言うことができません。 pingは名前を解決しません。重要なのはicmp-partではなく、名前解決部分です。 nslookupはネームサーバーを照会するように設計されており、まさにそれを実行し、ウィンドウの名前階層解決は行いません。

dnscacheサービスを再起動すると、いつでも役に立ちました。しかし、私はIPv6allのクライアントインターフェイスで無効にしていたので、問題は起こりませんでした。もう起きなかった。

乾杯!

1
grim

windows XPからWindows 7に移行したときにこの問題が発生しました。この問題はWindows 7のマルチラベルDNSクエリの問題に関連していました。

修飾されていないマルチラベルネームクエリへのDNSサフィックスの追加を許可 - 参照:

http://computerstepbystep.com/allow_dns_suffix_appending_to_unqualified_multi_label_name_queries.html

お役に立てれば

1
Sony NS

Mac OS Xの場合、DNSキャッシュの問題である可能性があります。

キャッシュをダンプする

Sudo killall -HUP mDNSResponder
Sudo dscacheutil -flushcache
1
Christian

ここでの解決策のどれも私のために働きませんでした。私にとってうまくいったのは、OpenVPNを使って自分の作品のVPNに再接続することでした。それから切断した後にすべてが働き続けた。

私のコンピュータがopenVPNに接続されている間に電力が消えることに関連していたと私は信じています。私がこれを考え出した唯一の方法はWireSharkを使うことでした。私は、すべての問い合わせの宛先IPが私の仕事の内部ネットワーク上のIPに行くことに気づいた。

0
Bela

私はこの問題を抱えたところで、非常に独特の何かを見つけ、そしてそれをなんとかして解決しましたLol

基本的に、hostsファイルに、pingが解決しようとしているIPと同じエントリがあると、失敗します。

たとえば、DNSに、www.example.com - 10.0.0.20というレコードがある場合、クライアントのhostsファイルに10.0.0.20 somethingelse.comというエントリがあると、wwwをpingできなくなります。 .example.com

奇妙な

0

私は同じ問題を抱えていて、別のマシンが同じIPアドレスを持っていたことがわかり、それが原因でした。

IPをDHCPに戻し、すべてがうまくいっていました。

0
Klaus

私の場合、この問題を解決したのは、 "DNS Suffix Search List"という名前のグループポリシーオプションにpingしようとしていたホストのドメインを追加することでした。

手順は次のとおりです。gpedit.mscを開き、Computer Configuration -> Administrative Templates -> Network -> DNS Client > DNS Suffix Search Listに移動して「有効」に設定し、ドメイン名をリストに追加します(デフォルトではリストは空です)。

これらのステップのより詳細な説明はここで見つけることができます

0
ndemou