Linux豆知識 176

「/etc/hosts」ファイル

公開日:2015年06月04日

今回は、「/etc/hosts」ファイルについて見てみましょう。

「/etc/hosts」ファイルは、ホスト名とIPアドレスを対応させるためのファイルです。ひとまず実例を見てみましょう。

127.0.0.1   localhost localhost.localdomain 
192.168.0.10  station10  station10.example.net
192.168.0.11  station11  station11.example.net

各行に、IPアドレスと、それに対応するホスト名が記述されています。したがって、たとえば上記のような/etc/hostsがあった場合、たとえば次のように実行すると、IPアドレス192.168.0.11のホストにSSHで接続できます。

$ ssh station11.example.net

さて、DNSのことを学んでいる方であれば、ここで「それはDNSに対応していれば、DNSがやってくれることでは?」と思うことでしょう。その通りです。/etc/hostsの存在を理解するには、その歴史的背景を理解しておく必要があります。

DNSが普及する前、名前解決(ホスト名をIPアドレスに変換すること)はDNSでなく、この/etc/hostsの記述に則って行われていたのです。すなわち、/etc/hostsにインターネット上のホストの一覧がずらりと並んでいたのです。
インターネットというものがまだそれほど大きくなかった時代の話ですので、それでも何とか名前解決というものができたのです。

しかし、インターネットが大きくなり、/etc/hostsに頼る方法では埒があかないという状態になってから、DNSが開発され、/etc/hostsはその役割をDNSに譲ったというわけです。

より詳細な経緯は、以下のページが参考になります。

○Domain Name System (DNS) History
http://www.livinginternet.com/i/iw_dns_history.htm

○DNSの歴史(第1回 「HOSTSファイルの崩壊」)
http://itpro.nikkeibp.co.jp/members/ITPro/ITARTICLE/20010223/1/

では/etc/hostsは無用の長物なのかというと、必ずしもそうとは言い切れません。DNSサーバを構築設定するほどでもない小規模な検証環境などでは、各ホストの/etc/hostsを設定すれば名前解決が行えます。ただし、ほとんどのディストリビューションではDNSよりも/etc/hostsを優先して名前解決を行います。実在するホスト名を/etc/hostsに記述した場合には、想定外のIPアドレスが返ることでホストにアクセスできない(別のIPアドレスに接続しようとする)ことがあるので、注意が必要でしょう。


今回のテーマを含む出題範囲を見てみる

LinuCレベル1102試験1.07.4 クライアント側のDNS設定

ページトップへ