私の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サフィックスに.
を追加してみてください。例えば、次のようにします
- Ethernet Status
- Click Properties
- インターネットプロトコルバージョン4
- Click Properties
- Click Advanced
- これらのDNSを追加してください
- サフィックスとして
.
を追加します
以下のスクリーンショットでも同じ手順で説明しています
これでping wolfman
が動くようになるはずです
Explanation
nslookup wolfman
(ネームサーバールックアップ: wolfman)は、ホスト名(wolfman
)をDNS(ドメインネームシステム)に送り、対応するIPアドレスを取得します。これがnslookup
コマンドの唯一の目的です。これは既に動作しているので、DNSが動作し、wolfman
が実際にIPアドレスに対応していることを確認しています
これに対して、ping wolfman
は2つのことをする必要があります
- ホスト名(
wolfman
)が対応するIPを取得します - 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での正常な解決方法は以下の通りです
- クライアントは、照会された名前が自分自身のものであるかどうかを確認します
- 次に、クライアントは、ローカルコンピュータに保存されているIPアドレスと名前のリストであるローカルホストファイルを検索します
- ドメインネームシステム(DNS)サーバーを照会します
- それでも解決されない場合は、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サフィックスが必要でした
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 サフィックスの追加を修飾されていないマルチラベル名クエリに許可する – 参照
これが助けになることを願っています
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」サービスを再起動します
役に立つ場合は、グループポリシー管理コンソールで「DirectAccessクライアント設定」と「DirectAccessサーバー設定」という2つのポリシーを確認します。これらが正しく構成されているか、シナリオで必要なものかどうかを確認します。これらのポリシーは、サーバー上のルーティングおよびリモートアクセスロールの特定の設定で自動的に作成されることがあり、これが問題の原因となっていました
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についてはこちらをご覧ください
-1 Johnnie 2012-11-22