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


21

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

127.0.0.1 localhost 

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

  • /etc/hostsCassandraのようなJVMシステムの場合、どのように機能しますか?
  • DNSの代替となるのは、1台のコンピューターではないでしょうか?


私は/etc/hosts含ま127.0.0.2 mycouchdb bookmarkdb myothercouchapp127.0.0.3 myapachi website私は私の開発は私のローカルマシン上で実行されていると私を助けるためにこれらを使用しています。ポート80でリッスンしている3つのサービスがあります。それらはローカルのみであるため、DNSに配置したくありません。
ctrl-alt-delor

試しましたman 5 hostsか?
モニカの復職-M.シュレーダー

Linuxには、このためのmanページがありませんが、詳細は説明されていますか?これが最も基本的な質問です。
ロブ

回答:


45

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

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

ファイルの非常に古い概念/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行目には、いくつかの追加の(おそらくローカルシステムでのみ有効な)名前があります。この例は、1行目と2行目にそれぞれ示すように、IPアドレスに複数のホスト名(ローカルホストとループバック)があり、ホスト名がIPv4とIPv6の両方のIPアドレスにマップされることを示しています。1つの名前(mycomputer.lan)が複数のアドレス(192.168.0.8 10.0.0.27)に解決される場合があります。ただし、その場合、どちらが使用されるかは、コンピューターに設定されているルート(およびその優先順位)によって異なります。

一部の古いOSに、特定の名前のアドレスのリストを報告する方法がありませんでした


5

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

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


4
ホストAがグループAごとに古い/etc/hostsエントリを残し、将来的にグループBごとの操作(私のグループ)が失敗するため、競合については意見が異なります。 、と私たちはサニタイズへの内容を、何かを設定することになった/etc/hosts
thrig

ファイル内の競合はコース外に存在する可能性がありますが、それはマシンの所有者自身の障害です:)
francois P

2
また、競合が発生しないことにも同意しません。古いホストエントリがDNSの変更と競合するため、非常に奇妙なエラーをデバッグする必要がありました。
ルイFリベイロ

@thrig:おそらく問題は、グループが大きすぎて/ etc / hostsを効果的に使用できないことです。ホームネットワーク上の5台のマシン(現時点)で完全に動作します。
-jamesqf

システムは、競合があるとは考えていません。物事の優先順位に関する明確な指示があります:p
StarWeaver

3

Linuxでは、少なくとも127.0.0.1 localhostファイル内/etc/hostslocalhostの対応するIPv6アドレス内に常にあるべきだと言い ます。

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

などがありますLinuxでは、指摘された/etc/nsswitchNISをチェックする前に、最初のチェックDNSを意味する定義のホスト名解決の順序は、その後、最後にファイルを確認することを一般的に/etc/hostsそうでないホストが見つかりません。

順序チェックの管理方法とDNS / NISサービスを管理するwhat / where / whoはあなた次第です。または、/ etc / nsswitchを変更/etc/hostsして、DNSまたはNIS のみをチェックインし、チェックインしないようにすべてをオーバーライドすることもできます。

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

Linuxウェブ検索の歴史と理由の背後にありlocalhostます。Linuxの多くのことは、localhostという名前が127.0.0.1に解決されることに依存しており、そうしないと問題が発生し、このlocalhost定義は/ etc / hostsなどのローカルシステムファイルで発生するはずです。

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


特にWindowsでのhostsファイルの一般的な使用法は、プログラムが「ホームに電話」する試みをヌルデバイスにそらすことです。これが合法性のチェックを妨害することであると示唆するのは私には程遠い。
ローレンスペイン

私はまだ/ etc / hostsを編集できるエディタをiPhoneで見つけていないので、LANでDNSを実行しています
-ivanivan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.