/etc/hostsファイルとは?
Hostsファイルはドメイン名とIPアドレスの紐づけ対応表で名前解決に利用されるファイルです。
名前解決とはgoogle.comという名前のサイトを訪れるのに必要なIPアドレスを取得することです。以下を参考にしてください。
名前解決の流れは、まずはサーバ内にあるhostsファイルを見てから、なければ外部のDNSサーバに問い合わせてIPアドレスを取得します。
- hostsファイルを参照する
- 外部のDNSサーバに問い合わせる
Hostsファイルの場所
Linuxでは「/etc/hosts」にあります。
(windowsの場合:C:\Windows\System32\drivers\etc)
実際にviで/etc/hostsの内容を見てみましょう。
HostsにはIPアドレスとドメイン名がタブスペースで区切られて記載されています。
名前解決では、フルリゾルバによる権威DNSサーバーへの問い合わせよりも前にHostsファイルの参照が行われます。
インターネット初期ではHostファイルで名前解決を行っていたようですが、ドメインの数が無数にある現代ではローカルのHostsファイルではなくDNSを使っています。
Hostsファイルの書き方
Hostsファイルの編集はrootユーザーで行います。
# vi /etc/hosts
エディタで開いてみるとループバックアドレス 127.0.0.1がlocalhostとして登録されていると思います。
Hostsファイルの書式の基本は「IPアドレス ドメイン名」です。
172.163.252.52 www.example.com
スペースを空けてドメイン名を2つ以上入れることも可能
172.163.252.52 www.example.com sub.example.com
実際に設定するとHostsファイルに基づいて名前解決を行っている様子はこちらのリンクから。
上のリンクのGIFアニメでは、ループバックアドレス127.0.0.1のホスト名としてnetdekagakuをHostsファイルに指定しています。設定する前はnetdekagakuをアドレスバーに入れても検索ページが出てきますが、設定後(#を消して有効化)は名前解決が行われて127.0.0.1のページに飛んでいます。127.0.0.1はApacheで立ち上げたwebページ(index.html)が設定されています。
localhost.localdomainの意味とは?
localhostは自分自身を表すホスト名、localdomainは自分自身のドメイン名です。
localhost.localdomainは自分自身を表すFQDNになります。
localhostは特別なドメインとして予約されていています(RFC 6761)。このドメインはループバックアドレス127.0.0.1に名前解決されます。
localdomainも同様に特別なドメイン名です。
Hostファイルには「127.0.0.1」とlocalhost.localdomainが書いてあります
まず、先程書いたように127.0.0.1はループバックアドレスといって、自分自身を表す特殊なIPアドレスです。
また、別行には「::1」というものも設定されています。これもループバックアドレスです。省略表記されていて、元に戻すと0:0:0:0:0:0:0:1です。このアドレスはIPv6のループバックアドレスです。127.0.0.1はIPv4のループバックアドレスです。
また、localhostの他にlocalhost4とlocalhost6があります。これもIPv4とIPv6のループバックアドレスがあるのと同じく、IPv4のホスト名にはlocalhost4と区別する必要がある場合に利用するホスト名です。
そのため、localhost, localhost4, localhost6のホスト名がそれぞれのループバックアドレスに紐づけられています。
Hostsファイルに1つのIPアドレスに対して複数のホスト名を指定できますが、最初のホスト名は正式なホスト名でそれ以降はエイリアス(別名)の扱いになります。
172.0.0.1 (正式ホスト名)(別名ホスト名)…