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

dns networking windows

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

  154  None  2012-10-29


ベストアンサー

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

112  harrymc  2012-11-20


ホスト名の後にドットを続けて ping してみてください。つまり、ping wolfman の代わりに ping wolfman. を使ってみてください

これでhostsファイルなどの回避策をしなくても解決できるはずです

34  Senthil  2014-05-05


その接続のDNSサフィックスに.を追加してみてください。例えば、次のようにします

  1. Ethernet Status
  2. Click Properties
  3. インターネットプロトコルバージョン4
  4. Click Properties
  5. Click Advanced
  6. これらのDNSを追加してください
  7. サフィックスとして.を追加します

以下のスクリーンショットでも同じ手順で説明しています

これでping wolfmanが動くようになるはずです

Explanation

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に強制的に追加させることです。これを行う方法は、この回答の冒頭ですでに示しました

18  Frederik Aalund  2017-10-09


ipconfig /displaydnsを試して、wolfmanを探してみてください。name does not exist “としてキャッシュされている場合(おそらく以前に検索に失敗したため)、ipconfig /flushdnsでキャッシュをフラッシュすることができます

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

17  craig65535  2012-11-19


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

Windowsでの正常な解決方法は以下の通りです

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

nslookup 一方、ドメインネームサーバーをテストするために使用されます

13  Bryan  2012-11-19


私は同じような問題で苦労し、@harrymcによって提案された解決策を試してみました。私は最終的には(少なくとも多少は)microsoft technetフォーラム(nslookup works but nothing else has DNS on standalone Win7 PC)で動作するように見えるものを見つけました

ここで引用します

… テスト用のクライアントリゾルバキャッシュをフラッシュしてリセットするために、以下のコマンドを使用してみてください

ipconfig /flushdns

ipconfig /registerdns

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

だから基本的に私に足りなかったのはipconfig /registerdnsです

9  Mick Halsband  2014-09-22


ちょうど今日も同じ問題がありましたが、解決方法が違っていました。そこで、検索結果の上位だったので参考までに追記しておこうと思いました

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

8  djlauk  2015-04-28


多分 wolfman.company.com is listed in C:\Windowssystem32driversetc\hosts ?

nslookup はそのファイルをバイパスして常に DNS を問い合わせますが、ping や他のツールはまず最初に “hosts” ファイルを調べ、次に DNS を調べます

5  Mikhail Kupchik  2012-11-19


Windows 2012R2 (=8.1) システムで同じ問題があり、上記の提案をすべて試しましたが、どれも解決しませんでした。 – 完全に修飾された名前にpingを打つとうまくいきました。 – 完全修飾された名前へのpingはうまくいきましたが、修飾されていない名前へのpingはうまくいきませんでした。 – 両方とも、同じ OS で、同じ設定の他のいくつかのシステムで動作しました。 – 必要なサフィックス検索文字列はすべて揃っていました。 (マルチラベルクエリの回避策のような、提案されている修正案のいくつかは明らかに無関係であることに注意してください。)

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

5  Jean-François Larvoire  2015-04-09


私は、あるwin 7コンピュータでは動作するping serverを使用でき、他のコンピュータではserverを解決できない理由を理解しようとしていました。しかし、両方とも server.lan を ping することができましたが、これは私には全く理解できませんでした

仕事用VPNを使用している間、FQDNを使用しないように設定(DNSのサフィックス)をいじっていたことが判明しました。両方のコンピュータが同じ動作をするようにするために、これらのサフィックスに自分のローカルの .lan を追加しなければなりませんでした

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

Advanced TCP/IP Settings

3  eresonance  2015-01-01


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

Frederik Aalundの提案を解決策として見ていたら、デフォルトの “Append primary and connection specific DNS suffixes “オプションからの切り替えが提案されていることに気づきました。これは、私のネットワークの設定が少し間違っているのではないかと考えさせられました

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

2  Cameron Tacklind  2018-06-12


ファイル c:/windows/system32/drivers/etc/hosts にエントリを追加すると修正されるかもしれません

1  Manoj Agarwal  2012-11-23


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  2014-03-21


mac os xの場合はDNSキャッシュの問題かもしれません

キャッシュをダンプする

sudo killall -HUP mDNSResponder
sudo dscacheutil -flushcache

1  Christian  2014-08-08


去年気になってたから拾ってるんだけど、もしかしたら回避策が見つかったかもしれない

私にとっては、Windows クライアント内の dns-caching-system の一部に障害があるように思えました。ping は名前を解決しません。重要なのは icmp の部分ではなく、名前解決の部分です

dnscacheサービスを再起動すると、毎回解決しました。しかし、すべてのクライアントインターフェースでIPv6を無効にしてからは、問題は発生しなくなりました

Cheers!

1  grim  2014-11-03


これは私の懐かしいNT4のソースキット時代をベースにしているので、間違っているかもしれません

料金としては、PINGはNetbios/WINSとDNSを使っていることが思い浮かびます(少なくともFQDNを指定しない場合はこの順番)

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

Netbiosを無効にするだけで、PingはDNSを最優先で使用し、インターフェースに登録されているDNSのトラフィックをホスト名に追加します

1  MrCalvin  2018-07-05


ここにある解決策のどれも私には効きませんでした。私のために機能したのは、OpenVPNを使って仕事場のVPNに再接続することでした。その後、切断した後、すべてのものが動作し続けました

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

1  Bela  2019-04-06


Windows 7クライアントでこの問題が発生し、レジストリのDirectAccessの設定が間違っていることが判明しました

以下のキーの内容をクリアしてみてください

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DnsClient\DnsPolicyConfig

をクリックして、「DNS Cache」サービスを再起動します

Example of OpenVPN entry not cleaned up causing the issue

役に立つ場合は、グループポリシー管理コンソールで「DirectAccessクライアント設定」と「DirectAccessサーバー設定」という2つのポリシーを確認します。これらが正しく構成されているか、シナリオで必要なものかどうかを確認します。これらのポリシーは、サーバー上のルーティングおよびリモートアクセスロールの特定の設定で自動的に作成されることがあり、これが問題の原因となっていました

Manually remove Direct Access from a client
So why would I even want to do this, isn’t Direct Access is great? Well yes, when Direct Access is working it is great, unless you are using Citrix without a Ci...

1  Minkus  2019-10-22


私はちょうどこの問題を持っていたし、非常に奇妙な何かを発見し、それを修正することができましたLol

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

例えば、DNS に www.example.com – 10.0.0.0.20 のレコードがあるが、クライアントの hosts ファイルに 10.0.0.0.20 somethingelse.com というエントリがある場合、www.example.com に ping することはできません

Strange huh

0  Just Lucky Really  2015-01-14


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

手順を簡単に言うとこんな感じです。gpedit.mscを開いてComputer Configuration -> Administrative Templates -> Network -> DNS Client > DNS Suffix Search Listに移動し、”Enabled “に設定してドメイン名をリストに追加する(リストはデフォルトでは空です)

これらの手順の詳細な説明は、こちらを参照してください

0  ndemou  2019-02-13


私は同じ問題を抱えていたし、別のマシンが同じIPアドレスを持っていたことが判明し、それがそれを引き起こしていた

IPをDHCPに戻して、すべて正常に動作していました

0  Klaus  2015-04-09


私はWindows 10で同じ発行者を持っています。レジストリフォルダを削除した。ComputerHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscacheを削除し、dnscacheサービス(DNSクライアント)が正常に動作する別のコンピュータからバックアップで復元します

0  Batiskaf  2020-03-28


Microsoftからのpingコマンドにバグがあります

ホスト名にルートを設定せずに ping を行おうとすると、コマンドはホストの IP アドレスへの ping の失敗を表示するのではなく、”Ping request could not find host” を返します

例192.168.1.1のアドレスを持つDNSサーバーを設定します。192.168.1.1.2を指すHOST1というAレコードを作成し、10.0.0.0.1を指すHOST2というAレコードを作成します

Windows クライアントを IP アドレス 192.168.1.1.10、デフォルトゲートウェイなし、DNS 192.168.1.1 で構成します

HOST1をPingすると、IPアドレスが解決されます。HOST2をPingすると、”Ping request could not find host “という結果になります

0  Paulo Pinho  2020-08-14


ping は ICMP プロトコル、具体的には ‘Echo Request’ と ‘Echo Reply’ を使用します

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

ICMPについてはこちらをご覧ください

Internet Control Message Protocol - Wikipedia

-1  Johnnie  2012-11-22


タイトルとURLをコピーしました