関連記事
hostsとは?
この記事の動画版はこちら(画像クリックでYoutubeに飛びます)
DNSとは?
hostsを知る前に、まずは「DNS」について復習しておきましょう。
インターネットにつながっているコンピューターには、それぞれ「住所」である「IPアドレス」が割り振られています。
僕たちが普段使うパソコンにも、AmazonやYoutubeなどのシステムが置かれているサーバーにも、IPアドレスが割り振られています。
IPアドレスは、このような数値形式になっていますが、ブラウザからAmazonやYoutubeのWebサイトにアクセスする度にこの番号を毎回入力するのは大変ですよね。
そこで考えられたのが「DNS」という仕組みです。
DNSは、「amazon.co.jp」のような覚えやすい「名前(ホスト名)」と、実際の「IPアドレス」を関連付けてくれます。
世界中の各ドメインには、DNSサーバーというものがあり、それぞれ担当するドメインのIPアドレスを管理しています。
DNSサーバーがあることによって、僕たちは「amazon.co.jp」や「google.com」といった分かりやすいURLで、Webサイトにアクセスすることが出来るという訳ですね。
ちなみに、このホスト名から、実際のIPアドレスを割り出すことを「名前解決」と言います。
DNSについてもっと詳しく学びたい場合は、こちらの記事で説明しているので是非学習してみてください。
hostsとは?
hostsというのは、DNSが登場する以前に使われていた仕組みです。
ホスト名とIPアドレスの対応表を、インターネット上にあるDNSサーバーが集中的に管理するのではなく、個々のコンピューターの中に「hosts」という対応表を作成して名前解決を行う仕組みです。
インターネットが普及し、ドメインの数も膨大になったことで、個々のhostsファイルで全てを管理していくには限界があり、DNSでの名前解決が一般的な方法になりましたが、hostsの仕組みは今でも存在しています。
そして、hostsに書いた設定はDNSサーバーよりも優先されます。
hostsの設定方法
hostsファイルは、皆さんのパソコンの中にも存在しています。
Windowsの場合は、Cドライブの「Windows」フォルダの中の「System32」>「drivers」>「etc」と辿っていくと、その中にある「hosts」という名前のファイルです。
hostsファイルは、管理者権限でないと編集が出来ないため、メモ帳のアイコンを右クリックして「管理者として実行」をクリックし、メモ帳を管理者モードで起動してからhostsファイルを開き、編集しましょう。
MacやLinuxの場合は、「/etc」フォルダの下にある「hosts」というファイルです。
編集する場合は、ターミナルを起動して、このようにsudoコマンドを付けて管理者権限で編集します。
hostsファイルには、このように「IPアドレス」と「ホスト名」の対応を、スペースまたはタブで区切って1行ずつ指定します。
例えば、このように書くと
mysite1.com というURLにアクセスすると、1.2.3.4というIPアドレスのサーバーを参照するようになります。
また、このように書くと
amazon.co.jp にアクセスした場合に、本来のAmazonのサーバーではなく、1.2.3.4というIPアドレスのサーバーを参照させるようにも出来ます。
もちろん、この設定が有効なのは、hostsファイルを編集したこのコンピューターだけです。
つまり「自分だけの優先DNSサーバー」といったイメージですね。
ホスト名とIPアドレスの関連を、全世界的に反映させたい場合は、そのドメイン管轄のDNSサーバーに登録する必要があるため、ドメインの所有者しか行うことは出来ません。
hostsの活用例
このように、hostsは「自分だけの優先DNSサーバー」として使えるため、例えば、まだ一般公開前のWebサイトのドメインをhostsに登録して、事前確認を行うといった使い方が出来ます。
Webサイトのサーバー移設などを行う際も、新サーバーにDNSを切り替えて問題無いかどうか、事前にチェックするといった使い方も出来ますね。
また、「VirtualHost」の仕組みと組み合わせることで、ドメインを取得しなくても、任意のドメインで開発環境を構築することが出来ます。
開発実況では、この方法でローカル環境を構築しているので参考にしてみてください。
あとは、僕がよく使う方法としては、自分だけが使うWebサービスや管理用ツールなどは、あえてDNSサーバーに登録せず、自分のパソコンのhostsにだけホスト名を登録しておくことで、このパソコンからしかアクセス出来ないようにしてセキュリティを高めたりしています。
こんな感じで、hostsを活用するとWeb開発が結構便利になるんです。
まとめ
ということで、今回は「hosts」について解説しましたが、いかがだったでしょうか?
まとめると、
①hostsとは、パソコン毎に設定出来る「自分だけのDNS」
②hostsに書いた設定は、本来のDNSよりも優先される
③hostsファイルの編集は管理者権限で行う
④公開前のサイトやサーバー移設を事前確認出来る
⑤VirtualHostと組み合わせることで開発環境の構築や、自分しかアクセス出来ないサイトを作ることが出来る
ということでした。
hostsは、本来のDNSよりも優先されるため、設定が残ったままになっていると間違ったサーバーを参照してしまうという混乱にも繋がるので、不要になった設定は削除するよう、管理には気を付けましょう。