このファイル/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には、特定の名前のアドレスのリストを報告する方法がありませんでした。