web-dev-qa-db-ja.com

/ etc / hostsの目的は何ですか?

私が理解しているように、hostsファイルは、コンピュータネットワーク内のネットワークノードのアドレス指定を支援するいくつかのシステム機能の1つです。しかし、その中に何があるべきでしょうか? Ubuntuをデフォルトでインストールする場合

127.0.0.1 localhost 

そこにあります。どうして?

  • どうやって /etc/hosts CassandraのようなJVMシステムの場合は機能しますか?
  • DNSの代替はいつですか?
23
MikiBelavista

ファイル/etc/hostsは、DARPAの昔、インターネットに接続されたすべてのホストの解決ファイルとして(DNSが存在する前に)開始されました。優先順位は最大です。つまり、このファイルは他のどのネームシステムよりも優先されます。1

ただし、単一のファイルとしては適切にスケーリングされません。ファイルのサイズがすぐに大きくなりすぎます。 DNSシステムが開発されたのはそのためです。つまり、階層型分散ネームシステムです。これにより、任意のホストが他のホストの数値アドレスを効率的に見つけることができます。

very/etc/hostsファイルの古い概念は非常に単純で、アドレスとホスト名のみです。

127.0.0.1      localhost

各行。これは、アドレスとホストのペアの単純なリストです。2

現在の主な用途は、DNS解決をバイパスすることです。 /etc/hostsファイルで見つかった一致は、DNSエントリの前に使用されます。実際、検索された名前(localhostなど)がファイルで見つかった場合、DNS解決はまったく実行されません。


1 名前解決の順序は実際には/etc/nsswitch.confで定義されており、通常は次のエントリがあります。

hosts:          files dns

つまり、「ファイルを試してください(/etc/hosts);そして失敗した場合は、DNSを試してください。」

ただし、その順序は変更または拡張できます。


2 (現在)hostsファイルには、最初のテキストフィールドのIPアドレスとそれに続く1つ以上のホスト名で構成されるテキスト行が含まれています。各フィールドは空白で区切られています。歴史的な理由からタブが好まれますが、スペースも使用されます。コメント行を含めることができます。それらは、そのような行の最初の位置にある八角形(#)で示されます。ファイル内の完全に空白の行は無視されます。たとえば、一般的なホストファイルには次のものが含まれます。

127.0.0.1   localhost loopback
::1         localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local
192.168.0.8 mycomputer.lan
10.0.0.27   mycomputer.lan

この例には、システムのループバックアドレスとそのホスト名のエントリが含まれています。最初の行は、hostsファイルの一般的なデフォルトの内容です。 2行目には、いくつかの追加の名前(おそらくローカルシステムでのみ有効)があります。この例は、IPアドレスに複数のホスト名(localhostとループバック)があり、1行目と2行目にそれぞれ示すように、ホスト名がIPv4とIPv6の両方のIPアドレスにマッピングされていることを示しています。 1つの名前(mycomputer.lan)が複数のアドレス(192.168.0.8 10.0.0.27)に解決される場合があります。ただし、その場合、どちらが使用されるかは、コンピューターに設定されたルート(およびその優先順位)によって異なります。

いくつかの古いOS 方法がありませんでしたアドレスのリスト を指定した名前で報告します。

48
Isaac

/ etc/hostsファイルを使用して、デスクトップ環境内のローカルシステムに人間が読める名前を付けることは、完全に合理的です。 hostsファイルは、ホームネットワークや小規模ビジネス環境での使用に最適です。これはインターネットアドレッシングのようにパブリック側にすることはできません。DNSが必要です。ローカルネットワークが十分に大きい場合、または単に異なるサブネットワークを切断する場合、またはその他の有用な理由がある場合は、DNSが推奨されます。

ローカルホストファイルとDNSは異なる優先度で管理されるため、競合が発生することはありません。

5
francois P

linuxでは、あえて言うと、少なくとも127.0.0.1 localhostは常に/etc/hostsファイル内にあり、対応するIPv6アドレスlocalhost

これは、数値のIPv4またはIPv6アドレスへのホスト名解決です。 (a)unix.stackexchange.comの近くにない可能性が高い地球上のどこか、または(b)myotherpc自宅のローカルエリアネットワークでは、ホストの解決を行っているのは/etc/hostsまたは一部のドメインネームサーバー(DNS)なので、入力するとunix.stackexchage.com人間はあなたが気にかけているものなので、覚えておく必要はありません185.53 .179.7これは、コンピュータが実際に知る必要があるものです。

指摘されたように、Linuxでは通常、ホスト名の解決順序を定義する/etc/nsswitchがあります。つまり、最初にNISを確認する前にDNSを確認し、最後にファイルを確認します/etc/hostsそれ以外の場合Host見つかりません

注文チェックの管理方法と、DNSサービスまたはNISサービスを管理する内容/場所/ユーザーは自由ですが、/ etc/nsswitch/etc/hostsのみをチェックインし、DNSまたはNISでチェックしないでください...

2対Nのような数台のコンピューターのシンプルなホームネットワークの場合、管理者はすべてのコンピューターで/etc/hostsを編集して修正するだけで、ドメインネームサーバーやその他のサービスを設定するよりも簡単、高速、安価になります。 IPアドレスへのホスト名解決を行う1つのマスターロケーションまたは権限があります。

linux Web検索の場合、localhostの履歴と理由を検索します。 Linuxの多くの事柄は、127.0.0.1に解決するlocalhostという名前に依存しており、それが発生しない場合は問題が発生します。このlocalhostの定義は、/ etc/hostsなどのローカルシステムファイルで発生するはずです。

/etc/hostsは、デフォルトでは、通常、Linuxオペレーティングシステムがホスト名の解決にフォールバックするための最後の言い回しであり、最後のものです。 Windows XPおよび7では、対応するファイルはC:\Windows\System32\drivers\etc\lmhostsです。Windows8または10については知りません。

3
ron