私の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検索を試みていないことがわかりました。 「ホストが見つかりませんでした」というエラーメッセージが報告されただけです。
私は、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
(再起動が必要です)
ホスト名とそれに続くドットでpingを試してください。 ping wolfman
の代わりにping wolfman.
を使用してください
これで、hostsファイルなどを使用して回避策をとらなくても解決できます。
ipconfig /displaydns
を試して、wolfmanを探してください。 「名前が存在しない」としてキャッシュされている場合(おそらく以前の断続的な失敗した検索が原因で)、キャッシュをipconfig /flushdns
でフラッシュできます。
nslookup
はキャッシュを使わず、DNSサーバーに直接問い合わせます。
その接続のDNSサフィックスに.
を追加してみてください。つまり、
.
を追加してください。次のスクリーンショットに同じ手順が示されています。
これはping wolfman
を機能させるはずです。
nslookup wolfman
(ネームサーバールックアップ:wolfman)はホスト名(wolfman
)をDNS(ドメインネームシステム)に送信して対応するIPアドレスを取得します。これがnslookup
コマンドの唯一の目的です。これはすでに機能しているので、DNSが機能し、wolfman
が実際にIPアドレスに対応していることを確認しました。
対照的に、ping wolfman
は2つのことをする必要があります:
wolfman
)が対応するIPを取得します。Windows(Windows 10などの最近のバージョンでさえ)では、最初のステップは簡単に失敗する可能性があります。下位互換性のために、Windowsはホスト名解決のさまざまな方法(hostsファイル、DNS、NetBIOS/WINS、LMHOSTファイル)をサポートしています。
残念ながら、Windowsのping
コマンドは必ずしもDNSルックアップを試みないようです。この動作を引き起こす具体的な条件はわかりません。
幸いなことに、 FQDN (完全修飾ドメイン名)を使用して、WindowsにDNSルックアップを強制することができます。実際には、ホスト名の後ろに.
のドットを付けることによってこれを行います:wolfman.
。 ping wolfman.
を試して、それが機能することを確認してください。
最後のステップは、Windowsにこのドット自体を追加させることです。この答えの冒頭で、これを行う方法を既に示しました。
Windows上で名前/ IPアドレスを解決する場合、nslookup
は他のコマンドとは異なる動作をします。
Windowsでの 通常の解決方法 は次のとおりです。
一方nslookup
はドメインネームサーバのテストに 使用されます。
私は同様の問題に苦しんでいて、@ 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
でした
今日、私たちは同じ問題を抱えていましたが、解決策は異なっていました。だから私は思った、これが一番上の検索結果であったので私は参考のためにそれを追加すると思います。
ping
はホスト名を解決しませんが、nslookup
は解決できます。 (2つの異なるWindows Server 2012 R2ホストで観察されました。)私は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を調べます。
ファイルc:/windows/system32/drivers/etc/hosts
にエントリを追加することで修正できます。
私もこの問題に遭遇しました。私にとってそれを修正するための「最も簡単な」方法は単にホスト名の最後に.
を追加することでした。しかし、これはかなり面倒です。ほとんどのネットワークはこれを必要としません。同じリソースにアクセスする必要があるときに、ネットワーク上の他のすべての人にこれを行うように言う必要はありません。
私は考えられる解決策としてFrederik Aalundからの提案を見ていて、彼らがデフォルトの "プライマリと接続固有のDNSサフィックスを追加する"オプションから切り替えることを提案することに気づいた。これは私に多分私のネットワークがわずかに誤って設定されていなかったことを考えさせました。
私のDD-WRT設定を見て、「LANドメイン」は設定されないままにされました。これを任意の文字列に設定すると、各マシンで特別な設定をしなくても、ネットワーク上のすべてのクライアントでこの問題が解決されたようです。 :)
私は、1台のwin 7コンピュータで、うまく機能するping server
を使用でき、もう一方でserver
を解決できないのはなぜかを突き止めようとしました。しかし、どちらもserver.lan
をpingすることができましたが、私はまったく理解できませんでした。
仕事用VPNを使用しているときにFQDNを使用する必要がないように、いくつかの設定(DNSサフィックス)がめちゃくちゃになっていました。両方のコンピュータが同じように動作するようにするには、これらのサフィックスにローカルの.lan
を追加する必要がありました。
[コントロールパネル]、[ネットワークとインターネット]、[ネットワーク接続]の順に選択し、ネットワーク接続を右クリックして[プロパティ]をクリックします。インターネットプロトコルバージョン4をクリックし、プロパティボタンを押してください。次に、この新しいウィンドウの[詳細...]ボタンをクリックします。 [DNS]タブに移動します。ここに仕事用のDNSサフィックスを追加しましたが、通常の自宅接続にも必要です。
これは私の長い間忘れられていたNT4リソースキットの日に基づいているので、私はこれについて間違っているかもしれません。
運賃として私はPINGがNetbios/WINSとDNSを使っていることを思い出すことができます(少なくともFQDNを指定していない場合はこの順序で)。
WINSは何年も前になくなっていますが、あなたはまだあなたのインターフェース上でNetbiosを有効にしているかもしれません、そしてそれ故PINGはあなたに結果を与えないかもしれないnetbiosを使うかもしれません。特にトラフィックがルータのどこかを通過している場合.
Netbiosを無効にすると、Pingは最優先としてDNSを使用し、インターフェイスに登録済みのDNS Surfficをホスト名に追加します。
昨年私を悩ませたので、私はこれを拾っています、そして多分私は回避策を見つけました。
私にとっては、Windowsクライアント内のいくつかのDNSキャッシュシステムが不完全であるように見えた。 Windows 7と8.1はこれの影響を受けます... Windows XPについてはもう言うことができません。 pingは名前を解決しません。重要なのはicmp-partではなく、名前解決部分です。 nslookupはネームサーバーを照会するように設計されており、まさにそれを実行し、ウィンドウの名前階層解決は行いません。
dnscacheサービスを再起動すると、いつでも役に立ちました。しかし、私はIPv6をallのクライアントインターフェイスで無効にしていたので、問題は起こりませんでした。もう起きなかった。
乾杯!
windows XPからWindows 7に移行したときにこの問題が発生しました。この問題はWindows 7のマルチラベルDNSクエリの問題に関連していました。
修飾されていないマルチラベルネームクエリへのDNSサフィックスの追加を許可 - 参照:
お役に立てれば
Mac OS Xの場合、DNSキャッシュの問題である可能性があります。
キャッシュをダンプする
Sudo killall -HUP mDNSResponder
Sudo dscacheutil -flushcache
ここでの解決策のどれも私のために働きませんでした。私にとってうまくいったのは、OpenVPNを使って自分の作品のVPNに再接続することでした。それから切断した後にすべてが働き続けた。
私のコンピュータがopenVPNに接続されている間に電力が消えることに関連していたと私は信じています。私がこれを考え出した唯一の方法はWireSharkを使うことでした。私は、すべての問い合わせの宛先IPが私の仕事の内部ネットワーク上のIPに行くことに気づいた。
私はこの問題を抱えたところで、非常に独特の何かを見つけ、そしてそれをなんとかして解決しましたLol
基本的に、hostsファイルに、pingが解決しようとしているIPと同じエントリがあると、失敗します。
たとえば、DNSに、www.example.com - 10.0.0.20というレコードがある場合、クライアントのhostsファイルに10.0.0.20 somethingelse.comというエントリがあると、wwwをpingできなくなります。 .example.com
奇妙な
私は同じ問題を抱えていて、別のマシンが同じIPアドレスを持っていたことがわかり、それが原因でした。
IPをDHCPに戻し、すべてがうまくいっていました。
私の場合、この問題を解決したのは、 "DNS Suffix Search List"という名前のグループポリシーオプションにpingしようとしていたホストのドメインを追加することでした。
手順は次のとおりです。gpedit.msc
を開き、Computer Configuration -> Administrative Templates -> Network -> DNS Client > DNS Suffix Search List
に移動して「有効」に設定し、ドメイン名をリストに追加します(デフォルトではリストは空です)。
これらのステップのより詳細な説明はここで見つけることができます