ホストファイルエントリがあっても、名前解決がDNSにヒットするのはなぜですか?


15

Ubuntu 10.04.2 LTSデスクトップを実行しています。Web開発者であるため、当然、/etc/hostsファイルに「me.com」を作成しました。残念ながら、最初にローカルホストエントリをチェックする前に、名前解決がDNSに送信されるため、その理由がわかりません。

最終結果は、nameserver 127.0.0.1/ etc / resolv.confに最初に含まれている場合、1秒以内にme.com(ローカル)からWebブラウザーに応答が返されます。ただし、そのエントリがない場合、ISPが少し遅いと、応答に5秒もかかることがあります。

問題は非常に面倒だったのでそのエントリをに自動的に挿入する方法について実際にここに質問する必要がありました(そして誰かが解決しました)/etc/resolv.conf。しかし、ここのユーザー(@shellholic)の1人は、この質問を提出することを強く推奨しました(そして、それについて私とやり取りしました)。

/etc/hostsファイルエントリをヒットする前に、ワークステーションの名前解決がDNSサーバーを最初にヒットする必要がある理由を知っていますか?今のところ、私はresolv.confトリックを使用しています。


1
探してみてください/etc/nsswitch.conf。私のシステムのエントリは少し非自明ですがfiles、オプションとしてのみルックアップをテストし、それが違いを生むかどうかを確認できます。
ベラク

はい、cat /etc/nsswitch.confand の出力を教えてくださいcat /etc/host.conf。また、これをどのようにテストしていますか(ping、ブラウザ、パケットスニッフィングなどを使用)?
手配

@arrangeのバージョンを完成させるには、の結果を添付してくださいtime getent hosts me.com; hostname --fqdn; grep 'me.com' /etc/hosts; grep hosts /etc/nsswitch.conf; netstat -uln | grep ':53'; cat /etc/host.conf; wc -l /etc/hosts。合理性を曖昧にすることをheしないでください。
シェルホリック

@shellholic ^合理性^合理的に?へえ。
ベラク

@jgbelacqua:確かに
シェルホリック

回答:


14

このファイル/etc/nsswitch.confを使用すると、名前解決の順序を再構成できます。デフォルトでは、ホストファイルが最初で、次に設定されたDNSです。さらにオプションがあります。

ファイルに/etc/hostsは、IPアドレスとホスト名のみがリストされます(必要に応じて1つのIPに複数の名前が付けられます)。

このファイルに/etc/resolv.confは、デフォルトの検索ドメインがリストされ、使用するネームサーバーも順番にリストされます。


4
また、Linuxボックス上のアプリケーションまたはサービスによって名前が解決されると、TTL(存続時間)と呼ばれる期間キャッシュに残ります。そのため、解決シーケンスを切り替える場合は、システムを再起動するか、キャッシュをクリアすることをお勧めします。
-jfmessier

「キャッシュ」をどのようにクリアしますか?
エリックジョンソン

よくわかりませんが、ifupコマンドとifdownコマンドでネットワーク接続を再起動するとできます。もちろん、再起動するとキャッシュがクリアされますが、Linuxを使用していますよね?
-jfmessier

nscd名前解決クエリをキャッシュできますが、ttlを尊重しません(したがって、ホストのキャッシュはデフォルトで無効になっています)。systemd-resolvedエントリもキャッシュします。これらのいずれも構成されていない場合LinuxホストはDNS応答をキャッシュしません。(ただし、ブラウザはおそらくアプリケーション層で行います)
ゲルト・ヴァン・デン・バーグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.