web-dev-qa-db-ja.com

`/ etc / hosts`とDNSはどのように連携してホスト名をIPアドレスに解決しますか?

Linuxでは、/etc/hostsとDNSが連携してホスト名をIPアドレスに解決する方法を教えてください。

  1. ホスト名を/etc/hostsで解決できる場合、DNSは/etc/hostsの後にホスト名を解決するために適用されますか、または/etc/hostsによって解決されたIPアドレスを「ホスト名」として再帰的に解決しますか?
  2. 私のブラウザー(firefoxとgoogle chrome)で/etc/hostsに追加すると:

    127.0.0.1 google.com www.google.com
    

    ブラウザのアドレスバーにwww.google.comと入力してEnterキーを押しても、ウェブサイトに接続しません。 /etc/hostsからその行を削除すると、Webサイトに接続できます。ホスト名を解決するために/etc/hostsがDNSをオーバーライドするということですか?

    /etc/hostsに行を再度追加した後も、Webページを更新した後でも、Webサイトに接続できます。 /etc/hostsが再度適用されず、Webサイトに接続できないのはなぜですか?

ありがとう。

10
Tim

これは、NSS(ネームサービススイッチ)構成、つまり/etc/nsswitch.confファイルのhostsディレクティブによって決まります。たとえば、私のシステムでは:

hosts:    files mdns4_minimal [NOTFOUND=return] dns

ここで、files/etc/hostsファイルを指し、dnsはDNSシステムを指します。そしてあなたが想像できるようにどちらか先に勝った方が勝つ

また、man 5 nsswitch.confを参照して、これについてさらに理解を深めてください。


余談ですが、NSSホスト解決の順序に従うには、データベースとしてgetenthostsとともに使用します。例:

getent hosts example.com
21
heemayl

ファイル/etc/hostsとDNSは連動しません。それらは名前(ネットワーク名)の独立した解決を提供します。

それらをリンクする接着剤は inside /etc/nsswitch.conf for linux systems です。 AIXサーバーの場合は/etc/netsvc.conf、システムの場合は Windows で、MacOSシステムではlookupd -configuration(LookupOrderの検索:Cache FF DNS NI DS)を使用してリストできます。

実際の順序は複雑になり、通常、各名前解決サービスが他のレベルの解決を調べることができるため(多くの場合そうです)、複雑になります。 dnsmasq(通常127.0.0.1:53、または::1:53(またはその両方)にある軽いDNSサーバー)のように、通常は/etc/hostsファイルの内容を読み取ってインクルードします。または、systemd.resolvermycomputerのようなドットなしの名前のみを解決する基本的なリゾルバー)は、いくつかの条件下でドット付きの名前(mycomputer.here.dev.)のDNS解決を直接呼び出します。

一般に、サービスは順番に呼び出され、失敗しない最初のサービスが勝ち、正しいアドレスとして受け入れられます。一般的な基本的な順序は、/etc/hosts(ファイル)、mDNS(ドットなしの名前)、DNS、NIS、NIS +、LDAPです。一部のLinuxシステムでは、サービス内の コンピュータhostnameの最後の解決策がありますmyhostname

たとえば、このシステムでは(cat /etc/nsswitchから):

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

非常に古い(glibc 2.4以前)orderエントリ /etc/Host.conf として次のように注意してください:

order hosts,bind,nis

ファイル(ファイル/etc/hosts)ネームサービスにのみ適用されます。

NISおよびLDAPに関連するこの(Linux)クライアントコンピュータへの影響は、(通常)使用されるDNSサーバー(バインド、バインド解除など)によって制御されます。

そう:

  1. ホスト名を/ etc/hostsで解決できる場合、DNSは/ etc/hostsの後に適用されてホスト名を解決しますか、または/ etc/hostsによって解決されたIPアドレスを「ホスト名」として扱い、再帰的に解決しますか?

無し。

ホスト名が/etc/hostsで解決できる場合、DNSは適用されません(ファイルがDNSの前にある場合)。

norは、「ホスト名」として扱われる解決されたIPアドレスです。

単に解決されたアドレスです。

ブラウザ

ブラウザは任意の方法を使用して名前を解決できます(解決された名前のキャッシュをチェックした後)。システム提供の方法を使用する場合のみ、上記の順序が適用されます。ブラウザは、他のプログラムと同様に、任意のDNSサーバーに直接接続することを選択できます。

システムの注文でDNSの前に/etc/hostsがある場合、そのファイルのエントリがDNS解決サービスよりも優先されることを意味します。

そう:

  1. ...それは、/ etc/hostsがホスト名を解決するためにDNSをオーバーライドすることを意味しますか?

はい(ブラウザがシステム提供の解像度を使用する場合)。

/etc/hostsが再度適用されず、Webサイトに接続できないのはなぜですか?

その特定の名前についてブラウザの内部キャッシュがクリアされる(またはタイムアウトになる)まで、その名前はブラウザの外で再び検索されます。

ブラウザの名前がキャッシュで解決されている場合、ブラウザはその名前を再び使用します。

これを使用してキャッシュをクリアします

または、ブラウザを閉じて(しばらく待って)再起動します。

6
Isaac