クライアントでの元祖名前解決hostsファイルを便利に使う

ヘッダ画像

もう悩まない!hostsファイルの書き方

ドメインはDNS(ドメインネームサーバ)という仕組みでIPアドレスと紐づけられています。DNSはドメイン(ホスト名)とIPアドレスを相互に変換します。
しかし、hostsファイルがローカル環境にあった場合、DNSへの問い合わせの前に参照されるため、こちらの設定が優先されます。
仕組みとしては単純ですが、意外にうまく認識しないケースも多いようなので、hostsの書き方の手順と注意点についてまとめました。

hostsファイルとは

ブラウザなどでyahoo.co.jpというURLにアクセスするとDNSサーバに問い合わせて、118.151.235.191というようなIPアドレスを取得してそれに対して通信を行います。
hostsファイルが存在し、かつ、該当ドメインに対する記述があった場合、指定通りに名前解決を行うことができるわけです。
つまり、yahoo.co.jpという要求に対して任意のサーバへアクセスさせることできます。
hostsの役割りと意味はWindows PCであれMacであれ同じです。

どんな使い道があるの?

クライアントとしての立場ならサイトや広告のブロックですが、もっとも有効に活用できる例はウェブサイト制作の現場でしょう。
hostsファイルを書き換えることでドメインとIPアドレスを仮想的に割り当てて、公開前のウェブサイトをインターネット上で確認したり、移転作業などで本来のIPアドレスとは違うサーバを参照できます。

DNSよりhostsが優先されるので、悪用すればマルウェアなどウィルスで改竄することにより、特定のスパムサイトに誘導したりできるわけです。

Windows hostsの書き方

書式はWindows系やUNIX系も基本的に同様でシンプルなものです。

118.151.235.191 example.com
  1. IPアドレス+半角スペース+ドメイン名
  2. 文字コードはANSI

※記述する場所はどこでも構いませんが、最後の行が分かりやすいでしょう。

hostsファイルの場所

現役のWindowsでは10も含めて共通で下記の場所にあります。

C:\Windows\System32\drivers\etc\hosts

「プログラムとファイルの検索」やエクスプローラーのアドレスバーに以下をコピペしても表示できます。

%WinDir%\System32\Drivers\Etc

Windows10のhostsファイル

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
118.151.235.191 example.com

上記では例としてyahooのIPアドレスにexample.comというドメインを紐づけています。
変更する場合の注意点は該当ファイルをそのままテキストエディタなどで開くと権限の問題で保存することができません。
アプリケーションを管理者権限で実行するか、デスクトップなどにコピーしてから編集後、書き換えてください。
コピーの際も権限を要求される場合がありますので、適時、実行ください。

※保存したファイルに.txtなどの拡張子が付いている場合はhostsファイルとして認識しませんので、削除ください。

参考:Windowsで拡張子を表示する

変更したhostsが効かない

指定したドメインで希望のサーバへのアクセスができない場合、まずは設定したドメインに対してPINGを実行してみましょう。

ping example.com

設定したドメインにPING送信

hostsが正常に認識できていれば、example.comへPINGを打つと118.151.235.191から応答が返ってきます。
hostsファイルは本来ブラウザでも即時適用されますが、PINGが正常に返ってきている場合はスーパーリロードを試してください。

正常にPINGが返ってこない場合、コマンドプロンプトでDNSのリフレッシュなどを試してもよいのですが、おそらく解決しないでしょう。

ipconfig /flushdns

hostsの文字コード

先に述べたように日本語環境の場合、Windowsのhostsファイルのデフォルト文字コードはShift_JISにマイクロソフトが独自に拡張を加えたANSI(CP932)です。
実際には、Shift_JIS(改行コード:CR+LF)、もしくはUFT-8(改行コード:CR+LF)であれば、ほとんどの場合は問題ないはずです。

TeraPadでの文字コード表示

もし、純正ではないテキストエディタで編集して動作しない場合はメモ帳(Notepad)で開き、文字コードをANSIで保存し直します。
これでほぼ間違いなく動作するでしょう。

メモ帳で文字コードにANSIを選択

Macintoshでのhosts変更

hostsファイルの場所

MacではHosterという定番アプリがよく使われるようですが、結局はオリジナルにオーバーライドする形になるので、ここでは通常のテキストエディタで直接編集してみます。
hostsファイルは/private/etc/に存在しますが、privateは不過視フォルダのため、デスクトッププルダウンメニュー「移動」→「フォルダに移動」にて/etc/とすることで、フォルダを開くことができます。

/private/etc/hosts

Machintoshのhostsファイル

#
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
118.151.235.191 example.com

※最終行はWindowsの例と同じく、example.comというドメインを紐づけています。

テキストエディタでの編集

デフォルトのアプリは純正のテキストエディットとなっているはずですが、権限の問題で上書き保存ができません。
このため、あらかじめデスクトップなどにコピーしてから編集するか、別名保存します。

書き換えはWindowsと同じく、最終行に「IPアドレス+半角スペース+ドメイン名」で追記します。

※hostsファイルをetcフォルダに移動する際にはアカウントのパスワード入力が必要です。

ターミナルでの編集

ターミナルのvimコマンドで書き換えることも可能です。
root権限が必要なため、sudoで実行します。

sudo vim /etc/hosts

vimエディタを実行

パスワードを入力して、aキーでインサートします。

最終行に追記して保存

escで編集モードを抜けて「:wq」で保存します。

Proxy hostsが優先

うまく動作しない場合の注意点として、プロキシーを経由していないか?があります。
どのOSにおいてもproxy(プロキシー)を使用している環境では実際にアクセスするhostsファイルはクライアントのローカル環境ではなく、プロキシーサーバになります。
勘違いしやすいため、注意ください。

コメントを残す

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


The reCAPTCHA verification period has expired. Please reload the page.



関連記事