Windows 7で、windows.csというDNS名でローカルサーバーにアクセスしようとしているユーザーがいます。 2つの内部DNSサーバーがあります。 DHCPサーバーは、2つの内部DNSサーバーをプライマリとセカンダリとしてユーザーに割り当て、次にISPのDNSを3次DNSサーバーとして割り当てます。
ユーザーは時々、windows.csのWebサイトにアクセスできません。 pingを実行すると、ホスト名を解決できないと表示されます。 DNSキャッシュをフラッシュし、DNSキャッシュを表示すると、次のようになります。
windows.cs-名前が存在しません
それでも、デフォルトでプライマリDNSサーバー(内部DNSサーバー)にクエリを実行し、windows.csにクエリを実行するnslookupを使用すると、正しいIPアドレスが返されます。
では、なぜWindowsはpingを使用してホスト名を解決できないのに、nslookupツールを使用すると解決できるのでしょうか。そして、どうすればこれを修正できますか?
あなたの言っていることから、windows.csへのリクエストがISPのDNSサーバーに時々送信されているように見えます。 nxdomainの結果はWindowsのDNSクライアントによってキャッシュされ、Webブラウザーやpingなどでの再試行に使用されます。キャッシュをクリアすると(ipconfig/flushdns)、Windows DNSクライアントはクエリを再試行する必要がありますが、保証はありませんISPのDNSサーバーに再度アクセスすることはありません。
Pingがホスト名を解決できないがnslookupが解決できる理由は、nslookupがWindows DNSクライアントをバイパスする低レベルのツールであるためです。指示したDNSサーバー(デフォルトでは最初のDNSサーバー)を使用し、その場でクエリを実行します。 nslookupプロンプトからserver <Host>
と入力して、クエリするDNSサーバーを変更できます。ここで、HostはIPまたはFQDNです。
ただし、Windows DNSクライアントは、キャッシュにない(または期限切れの)エントリに対してのみクエリを実行します。それ以外の場合は、キャッシュされた結果を返します。
WindowsクライアントがISP DNSサーバーを使用している理由はすぐにはわかりません。 (おそらく別のネットワーク上にあるために)最近ローカルサーバーを解決できなかった可能性があります。ローカルサーバーがエラーを返していた可能性があります。または、「詳細TCP/IP設定」>「DNS」で正しく注文されていない可能性があります。
個人的には、構成を簡素化し、このような問題を回避するために、ワークステーション上のローカルDNSサーバーアドレス(DHCPによって伝達される)のみを使用することを好みます。デスクトップにISPのDNSサーバーを設定する理由について知りたいのですが。有効なパフォーマンス上の理由があるとは思えません。冗長性が2である限り、ほとんどのネットワークで十分です(3番目を追加しない場合)。
DNSレコードを削除してflushdnsコマンドとregisterdnsコマンドを実行することで問題を簡単に解決でき、それを修正しました。 DNS自体のエイジである理由。リースの有効期限が切れた後、DNSはレコードを削除せず、更新されなかったため、名前が古いため、名前を解決できませんでした。私はあなたがあなたの問題を修正するのに役立つことを願っています。
nslookup
の特異性とバグ のため、ping
の結果はnslookup
の結果と異なります。ただし、これらは主な問題には実際には関係ありません。つまり、 フォールバックプロキシDNSサーバーは、DNS名前空間の主要なビューと同じビューを提供する必要があります のルールに違反しています。 ISPのプロキシDNSサーバーは、LAN上の独自のプロキシDNSサーバーと同じDNS名前空間のビューを提供しません。
さらに別のシステム管理者が私のISPが提供して文書化したので、私は使用する必要があります使用する。誤り。 ☺
TL; DRバージョン:IPv6の場合、DNSクエリの問題が発生しました。非アクティブ化すると、DNSクエリの問題が解決しました。
開発マシンでも同じ問題が発生しました。会社のネットワークにログインすると、内部ホスト名を解決できず、すべての外部ホスト名/ URIを解決できました。 VPN接続に割り当てられているDNSサーバーを確認したところ、会社のDNSサーバーがプライマリおよびセカンダリとして構成されていることがわかりました。 nslookup
を使用することもできましたが、DNS解決を取得するにはserver X.X.X.X
を介してサーバーを手動で変更する必要がありました。
最終的に、IPv6が名前解決の問題を引き起こしていることがわかりました。各DNSクエリで、IPv4企業のDNSサーバーではなくIPv6 DNSが照会されました。 IPv6を非アクティブ化した後、ipconfig /flushdns
を実行する必要があります。そうしないと、以前に照会されたアドレスがまだ解決されない可能性があります。