「nslookup」が正常に機能するのに「ping」が名前を解決できないのはなぜですか?


139

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

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ルックアップを試行していないことがわかりました。「ホストが見つかりませんでした」というエラーメッセージを報告しているだけです。


のデフォルトDNSサフィックスを追加できます.company.com
-billc.cn

@ billc.cnすでにそのDNSサフィックスを持っています。
skiphoppy

私が考えているのは、pingがホストのFQDNを検索していないことです。nslookupこれは、search domainDHCPオファー(または静的IP構成に指定したもの)のパラメーターを使用するものとは異なります。これを確認するには、@ SLaksが言ったことを実行し、ホストのFQDNにpingを実行します:)
jackweirdy


実行するとどうなりますping -4 wolfmanか?
デアホッホステープラー

回答:


101

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 再起動が必要)


1
Active Directoryはおそらくアクティブであるに違いありませんが、テスト方法はわかりません。
skiphoppy

11
DNSクライアントサービスを無効にすると、問題は解決したようです。それがまぐれであったかどうかはまだわかりません。サービスを再起動しても問題は再発しませんでした。
skiphoppy

6
サービスを停止して再起動するだけでDNSの問題が解決する場合があります(理由を聞かないでください)。問題は、これがどれくらい続くかです。一部の不運な人々はそれを何度も繰り返す必要があります。
harrymc

1
DNSクライアントサービスシステムファイルが微妙に破損している場合のSFC / scannow?また、ウイルスによって引き起こされる同様の問題を抱えている人々を見てきました。
ジョンクロスケ

1
この回答で私に欠けていたのはipconfig /registerdns(以下の回答で詳しく説明しました)
ミックハルスバンド

31

ホスト名の後にドットを続けてpingを試してください。ping wolfman使用する代わりにping wolfman.

これにより、hostsファイルなどで回避策を実行しなくても解決できます。


うわー、これも私のために働いた。私の推測では、何かが構成されていないドメイン名を予期していると思われます
-user1190

OK、これはうまくいきます...なぜですか?
ダニエルB.

3
これがなぜ機能するのか、末尾のドットなしでローカル名を使用する方法の提案はありますか?
ルベロイド

ありがとう-これは私のために働いたが、これがなぜ働くのか知っているだろう
フランク・フ

2
@Ruberoid これを自動的に行う方法については、私の答えをご覧ください。
フレデリクアーランド

17

ipconfig /displaydnsウルフマンを試してみてください。「名前が存在しない」としてキャッシュされている場合(以前の断続的な検索失敗が原因である可能性があります)、キャッシュをでフラッシュできますipconfig /flushdns

nslookup キャッシュを使用せず、DNSサーバーに直接クエリします。


私が試した:それはキャッシュされていません。また、キャッシュをクリアしても問題は解決しません。
skiphoppy

の出力を投稿できますnslookup -allか?されてnovc記載されていますか?
craig65535

13

.その接続のDNSサフィックスに追加してみてください。すなわち、に行きます:

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

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

これで動作するはずping wolfmanです。

説明

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

対照的に、ping wolfman2つのことを行う必要があります。

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

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

残念ながら、Windowsのpingコマンドは常にDNSルックアップを試行するとは限りません。この動作をトリガーする特定の条件はわかりません。

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

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


これが、私が取り組んでいたマシンで成功した要因であることが判明したと言いたいだけです。どうやら愚かな。また、pingだけでなく、他のアプリケーションにも使用できます。いつ試行されたかについてのあなたの説明がまったく正しいかどうかはわかりません(しかし、あなたはそれについて不確かであることを認めます)。しかし、手動でドットサフィックスが追加されたドメイン名でpingを試みることで、この失敗を簡単に診断できることについて言及する大きなプラスです。
-gwideman

これは意味がありません。「Windowsのpingコマンドは常にDNSルックアップを試行するわけではありません」と仮定していますが、それを解決するためにDNSルックアップの実行方法を変更することをお勧めしますか?ping DNSルックアップを実行している可能性が高いようですが、間違って実行しているため、この修正が機能します。
Twisty Impersonator

@TwistyImpersonatorあなたの混乱を理解しています。ポイントは、Windowsがホスト名解決のいくつかの方法を与えられた場合に試行wolfmanし、DNSルックアップは(明らかに)上記の方法の中で最優先事項ではないということです。ここで、wolfman.代わりに使用する場合、Windowsは(明らかに)DNSルックアップを必要wolfman.とするFQDNであるため、DNSルックアップを他の方法よりも優先します。
フレデリクアーランド

したがって pingが通常のルックアップワークフローの過程でDNSルックアップを行うようになった場合、それは機能すると言っていると思います。ただし、他のルックアップメソッドが応答を返さない場合、ping DNSを試行することになります。pingが単独で失敗する理由は、DNSが回答を返す前に別のメソッドが試行しているためです。この説明は、pingがホストを見つけられないという事実には適合しません。
Twisty Impersonator

@TwistyImpersonator「だから、pingが通常のルックアップワークフローの過程でDNSルックアップを行うようになった場合、それは機能すると思います」:はい。「ただし、他のルックアップメソッドが回答を返さない場合、pingはDNSを試行することになります。pingが単独で失敗する理由は、DNSが回答を返す前に別のメソッドが試行しているためです」pingは、いくつかの方法を試した後にgivesめただけかもしれません。たぶん、pingはタイムアウト後にafterめます。ホスト名がDNSに似ていないと考えているため、pingはDNSルックアップを試行しません。
フレデリクアーランド

11

nslookup Windowsで名前/ IPアドレスを解決するとき、他のコマンドとは異なります。

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

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

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


3
NetBIOSクエリをそのリストの上位に移動できる設定はありますか?NetBIOSルックアップが何らかの形で関与していると直感していますが、DNSクエリが確実に機能しているため、上記のシーケンスが不変である場合、そのステップにどのように到達するかわかりません。
skiphoppy

8

私は同様の問題に苦労し、@ harrymcが提案する解決策を試しました。最終的に(少なくともある程度)マイクロソフトテクネットフォーラムで動作するように見えるものを見つけました(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


1
@harrymcによる元の回答は、欠落している/registerdnsコマンドを反映するようになりました
ミックハルスバンド

私は約1年間、Win10でこの問題でモグラを叩いてきました。私のラップトップが起動すると、corpサーバーは見つかりませんが、microsoft.comのような外部サイトは機能します。WiFiネットワーク(ホーム/ VPN対オフィス)を変更するときに発生するようです。flushdnsは時々問題を解決しますが、常にではありません。今日、私はregisterdnを試してみたところ、すぐに問題が修正されました。明日はを追加してみます。名前の最後まで(ただし、pingは内部サーバーのFQDNで既に失敗します)。とてもイライラします。そして、それを締めくくります-しばらく待つと問題は解決します。
ripvlan

6

ちょうど今日、私たちは同じ問題を抱えていましたが、解決策は異なっていました。これが検索結果のトップであるため、参考のために追加すると思いました。

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

ああ、これは私のためにそれをしました。パーフェクト。
IAmTheSquidward

短くシンプル
フランクフー

5

たぶんwolfman.company.comはC:\ Windows \ system32 \ drivers \ etc \ hostsにリストされていますか?

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


いいね!しかし、私はチェックしましたが、この問題が発生したマシンはいずれもホストにリストされていません。
skiphoppy

5

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

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


2

ファイルにエントリを追加c:/windows/system32/drivers/etc/hostsすると修正される場合があります。


それはそれを修正しますが、それはそのマシンで彼の問題を解決しませんが、他のマシンで彼を助けません。ホスト> DNSリゾルバー> DNSサーバー> NetBIOS名を覚えておいてください。

2

私は1台のWindows 7コンピューターping serverで動作するコンピューターを使用でき、もう1台のコンピューターでは解決できない理由を把握しようとしていましたserver。しかし、どちらもserver.lan私にはよくわからなかったpingができました。

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

[コントロールパネル]> [ネットワークとインターネット]> [ネットワーク接続]に移動し、ネットワーク接続を右クリックして[プロパティ]をクリックします。[インターネットプロトコルバージョン4]をクリックし、[プロパティ]ボタンをクリックします。次に、この新しいウィンドウの[詳細設定...]ボタンをクリックします。[DNS]タブに移動します。これは、仕事用にDNSサフィックスを追加した場所ですが、通常のホーム接続にも必要です。

高度なTCP / IP設定


静的IPアドレスを持つサーバーで同様の状況に遭遇しました。「これらのDNSサフィックスを追加する」の最初のエントリは空白で、「この接続のDNSサフィックス」は空白でした。それが機能した他のサーバーには、同じ「これらのDNSサフィックスを追加」空白がありましたが、「この接続のDNSサフィックス」が入力されていました。
ティムルイス

2

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

可能な解決策としてフレデリック・アーランドからの提案を見ていましたが、デフォルトの「プライマリおよび接続固有のDNSサフィックスを追加する」オプションから切り替えることを提案していることに気付きました。これにより、おそらく私のネットワークがわずかに誤って設定されていると思うようになりました。

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


1

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

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

http://computerstepbystep.com/allow_dns_suffix_appending_to_unqualified_multi_label_name_queries.html

お役に立てれば


2
スーパーユーザーへようこそ!これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
カナダのルーク14年

1

Mac OS XでDNSキャッシュの問題である可能性がある場合:

キャッシュをダンプする

sudo killall -HUP mDNSResponder
sudo dscacheutil -flushcache

OPはWindows XPについて尋ね、質問にはWindowsというタグが付けられます。
PL

たぶん他の人に役立つでしょう。私はそれを残します、答えは3年以上の間ここにありました。今すぐ削除する理由
クリスチャン

1

去年それが気になり、おそらく回避策を見つけたので、私はこれを取り上げています。

私にとっては、Windowsクライアント内のdns-caching-systemに欠陥があるようです。Windows 7および8.1はこれの影響を受けます... Windows XPについてはもはや語ることはできません。pingは名前を解決しません。重要なのはicmp部分ではなく、名前解決部分です)。nslookupは、ネームサーバーにクエリを実行するように設計されており、Windowsの名前階層解決をまったく行わず、まったく行いません。

dnscacheサービスを再起動すると、毎回役に立ちました。私は以来、しかし、IPv6を無効すべてのクライアント・インタフェースの問題はもう発生しませんでした。

乾杯!


IPv6を無効にすることは、誰にとっても実行可能な解決策ではないかもしれません(とにかく、せいぜい逸話に聞こえます)。あなたが言う他のすべては、このスレッドで既に述べられているようです(たとえば、2年前にharrymcのコメント「サービスを停止して再起動すると、DNSの問題が修正されることがあります」)。
Gマン14年

1

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

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

WINSは何年も前になくなっていますが、インターフェイスでNetbiosが有効になっている可能性があるため、PINGは結果をもたらさないNetBIOSを使用する可能性があります。特に、トラフィックがどこかでルーターを通過している場合。

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


0

私はちょうどこの問題を抱えていて、非常に独特なものを見つけて、それをなんとか修正しましたLol

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

たとえば、DNSにwww.example.com-10.0.0.20のレコードがあるが、クライアントのホストファイル10.0.0.20 somethingelse.comにエントリがある場合、wwwにpingすることはできません。 .example.com

奇妙なハァッ


0

私の場合、この問題を解決したのは、pingしようとしていたホストのドメインを「DNSサフィックス検索リスト」というグループポリシーオプションに追加することでした。

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

これらの手順の詳細については、こちらをご覧ください


0

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

IPをDHCPに戻し、すべてが正常に機能していました。


nslookupは、他のホストと通信する必要がないため機能しました。pingは通信する必要があり、明らかに壊れています。
ndemou

@ndemou:その説明は意味をなしません。はい、他のホストと通信しようとするのはpingの仕事ですが、そのプロセスの最初のステップは、他のホストのIPアドレスを取得することです。それは場合に  取得する他のホストのIPアドレスを、それはとてもわかります。その後、他のホストと通信できない場合、最終的に「100%の損失」を報告します。しかし、質問では、pingはアドレスを取得することさえできません。(試しping bbbbbbb.comて  ping bbbbbb.com、比較してください  。)
スコット

あなたは正しい@Scottです。私はクラウスの答えを編集していましたが、問題の彼の説明を読んいたときに、この質問にpingに関する特定の問題は解決しないということを忘れていました。確かではありませんが、クラウスが単に返事を受け取っていないことは間違いないでしょう。
ndemou

0

ここでの解決策はどれも役に立たなかった。私にとっては、OpenVPNを使用して仕事のVPNに再接続することができました。その後、切断後もすべてが機能し続けました。

この問題は、コンピューターがopenVPNに接続されているときに電源が切れたことに関連していると思います。私がこれを理解した唯一の方法は、WireSharkを使用することでした。すべてのクエリの宛先IPが、仕事の内部ネットワーク上のIPに送られていることに気付きました。


-1

pingはICMPプロトコル、特に「エコー要求」と「エコー応答」を使用します。

多くのネットワークは、攻撃または基本的なネットワークスキャンを防ぐためにICMPユーティリティを無効にします。購入した多くのルーターには、pingを無効にする設定と、デフォルトで有効になっているユーティリティが付属していることがわかりました。

ICMPの詳細については、こちらをご覧ください。

http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol


8
はい。ただし、ICMPを使用する前に、通常どおりドメインをIPアドレスに解決する必要があります。したがって、これはここの問題ではありません。
マイケル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.