Web Technology

hostsファイルとは何か?どうやって編集するのか?DNSとの関係性は?

hostsファイルとは何か?どうやって編集するのか?DNSとの関係性は?

今回は、hostsファイルについて解説します。

初心者にも分かるよう丁寧に説明するので、参考にして頂けると幸いです。

 

※「hostsファイルの編集方法」だけ知りたい方は、以下の目次から「2」へ飛んで下さい。

hostsファイルとは何か?

hostsファイルとは一言でいうと、IPアドレスとURL(ドメイン名)を対応させるためのファイルです。

分かりやすさのため、URLとドメイン名の違いは曖昧にしています。しかし、厳密にはURLとドメイン名の定義は異なります。気になる方はこちらの記事を読んで下さい。

 

URLは分かりますよね?ブラウザの上部に表示されている、こんなやつです。

google.com

私のサイトの場合だと、engilaboo.comというURLを使っています。

 

実は、このURLには別名があります。それが「IPアドレス」です。

 

全てのURLには、一つの対応するIPアドレスが割り当てられています。

例えば、GoogleトップページのIPアドレスは「172.217.31.142」です。つまり、「google.com=172.217.31.142」ということです。

 

そのため、URLの代わりにIPアドレスを使って検索しても、URLで検索した場合と同様にGoogleのトップページを表示させることができます。

 

試しに「172.217.31.142」で検索してみて下さい。

「172.217.31.142」で検索

 

Googleのトップページが表示されるはずです。

Googleのトップページが表示される

 

なぜ、IPアドレスにこのような別名(URL)が付けられているのでしょうか?

 

それは、単純にIPアドレスが人間にとって分かりにくいからです。

 

例えば、急に「GoogleのIPアドレス(172.217.31.142)を覚えろ!」と言われても難しいですよね?

当然です。私も覚えていませんし、覚えたくもありません。

 

しかし、URL(google.com)なら簡単に覚えることができます。

 

つまり、人間がインターネットを使ってリソースの管理をするときに、URLを使った方が格段に管理がしやすいのです。

 

 

では、このURLとIPアドレスの対応付けは、誰がどのように行っているのでしょうか?

 

実は、これを行っているのが、DNSサーバー、そして今回紹介するhostsファイルです。

この二つは、名前こそ違いますが、だいたい同じことをやっています。まずはDNSサーバーから説明しましょう。

 

DNSサーバーの動き

ブラウザにリソース(Webサイトの画面)を表示させるには、サーバーにリクエストを送って、リソースを返してもらう(レスポンスしてもらう)必要があります。

 

ここでのポイントは、サーバーにアクセスするには、IPアドレスを指定する必要があるということです。

なぜなら、サーバーに置かれてあるリソース自体は、URLではなくIPアドレスで指定されるからです。(URLでリクエストしても認識されない)

 

ここで疑問に思いますよね?あれ、でも私たちって普段IPアドレスじゃなくてURLを打ち込んでるよね?なんでサーバーはリソースを返してくれるの??と。

 

確かにそうです。私たちは普段IPアドレスの存在を意識していません。

しかし、実際にはIPアドレスでアクセスして、その結果Webページを表示することができています。

ということは、以下のことが言えると思います。

URLを打ち込んでからサーバーがレスポンスを返すまでに、URL(ドメイン名)をIPアドレスに変換する仕組みがある

 

では、何がURL(ドメイン)をIPアドレスに変換しているのでしょうか?

 

ここで登場するのが、DNSサーバーです。

つまり、DNSサーバーは、URLをIPアドレスに変換して、それをクライアントに返す役割をしているのです。

 

 

言葉で説明してもイメージが掴みにくいと思うので、図を描きました。

要はこういうことです。

DNSサーバを使って名前解決を行う

 

まず、ユーザーがURLをブラウザに打ち込みます。すると、ブラウザからDNSサーバーに対してリクエストが送られます。そして、DNSサーバーは送られてきたURLに対応するIPアドレスを探してユーザーに返します。

 

以上の処理を、ネーム・リゾリューションもしくは名前解決と言います。これにより、クライアントはURLに対応するIPアドレスを知ることができます。

 

あとはサーバーに対してIPアドレスを使ってアクセスするだけです(ここは自動でやってくれる)。

サーバーが必要なレスポンスを返してくれるでしょう。

 

hostsファイルはローカルのDNSサーバー(的なイメージ)

hostsファイルも、DNSサーバーとやっていることはほとんど同じです。

単に、DNSサーバーは外部にあるけど、hostsファイルは自分のPCの中にあるというだけです。基本的には同じようなものと思っていいでしょう。

 

図解するとこんな感じです。DNSサーバーが自分のマシン内にあるイメージです。

hostsファイルを使って名前解決を行う

 

まず、URLを検索窓に打ち込みます。すると、その情報がPC内のhostsファイルに渡ります。hostsファイルはファイルの中で同じURLを探して、そのURLに対応するIPアドレスをクライアントに返します。

ここまでの流れが、要は先ほどのDNSサーバによる名前解決の部分と同じです。単にDNSサーバーを使う代わりにhostsファイルを使っているというだけです。

 

あとは、手に入れたIPアドレスを使ってWebサーバにアクセスします。

Webサーバが必要なリソースをResponseとして返してくれるでしょう。

 

以上がhostsファイルを使った名前解決の流れです。

基本的な流れはDNSサーバーと同じですね。

 

hostsファイルの編集方法を解説【/etc/hosts】

「hostsファイルとは何か」が分かったところで、次に、hostsファイルの編集方法をご紹介します。

なんだか難しそうな感じがしますが、実際はとても簡単なので、図を交えつつサクッと解説していきます。

 

結論から言うと、hostsファイルは、Macの場合/private/etc/hostsにあります。

ここを書き換えるだけで、IPアドレスとURL(ドメイン名)の対応付けを行うことができるのです。

 

では、ターミナルを開いて下さい。どのディレクトリにいても構いません。

UNIXシステムフォルダ(/usr・/var・/etc)は MacOS上では非表示です。

そのため、ls(現在のディレクトリの下にあるファイルを表示するコマンド)等を打っても、hostsファイルの存在を確認することはできません。

しかし、ファイル自体は存在しているので、安心して次の作業に進んで下さい。

 

ターミナルを開いたら、さっそくhostsファイルを編集していきます。以下のコマンドを打って下さい。

sudo vim /private/etc/hosts

 

ここでのポイントは、sudoコマンドを先頭に付けて、管理者(スーパーユーザー・rootユーザー)権限を付与している点です。

 

なぜこのようなことをしているのか。

それは、hostsファイルを編集するには管理者権限が必要だからです。

そのため、単にvimコマンドだけでファイルを開いて編集しようとしても、以下のようなエラーが出て編集できません。注意しましょう。

sudoを付けないとhostsファイルを書き換えることはできない

 

sudoの後の「vim」は、Vim(ターミナルで使えるテキストエディタ)を開くコマンドです。このコマンドの後にファイル名を指定することで、そのファイルを編集する画面を開くことができます。

 

また、上記のコマンドを打つとパスワードの入力を求められる場合があるかと思います。Macにログインするときのパスワードを入力して下さい。

 

パスワードが通ると、hostsファイルが開かれます。

あとはこのファイルを編集するだけです。

IPアドレスに対応するURL(ドメイン)を定義して下さい。今回は、適当な値を設定しています。

IPアドレスの横に、対応するドメイン名を記述しましょう。(http://とかは入れないで下さい)

vimでhostsファイルを開いて編集する

 

編集したらesc(もしくはcontrol+[)を押してvimのコマンドモードに切り替えた後に、:wqで編集した内容を保存(w)+vimから抜けましょう(q)。

 

以上で、hostsファイルを定義することによるIPアドレスとURLの対応付けは完了です。

 

 

このように、hostsファイルを開いてドメイン名とIPアドレスの対応関係を定義するだけで、簡単にURLの名前解決を行うことができます。

 

補足1:今回、hostsファイルを開くときにsudo vim /private/etc/hostsを使いましたが、実は/private/etcには、/etcを参照するシンボリックリンク(別名的なものです)が貼られてあるため、上記のコマンドの代わりに、以下のコマンドでもhostsファイルにアクセスすることができます。どちらでも好きな方を使いましょう。

sudo vim /etc/hosts

 

補足2:windowsの場合

すみません。私がMacを使っているため、今回のコマンドはMac用となっております。とはいえ、hostsファイルの考え方やコマンド等はほとんど同じだと思うので、以下の記事等を参考に読み替えて頂けますと幸いです。

【Windows】hostsファイルとは、hostsファイルの場所、hostsファイルの編集・書き換え方法

 

hostsファイル・DNSまとめ

長々と解説してきましたが、今回押さえて欲しいことは以下の3つだけです。

  • DNSは、URL(ドメイン名)をIPアドレスに変換してクライアントに返すサーバー
  • hostsファイルとは、IPアドレスとURL(ドメイン名)の対応付けを行うためのファイル
  • (Macの場合)hostsファイルを編集するには、ターミナルでsudo vim /etc/hosts を打つ

 

今回は以上となります。

少しでもあなたがhostsファイルについて理解するための手助けができていたら幸いです。

参考書籍

参考資料

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA