hostsファイルではドメイン(ホスト名)とIPアドレス変換を行うことができます。
仕組みとしては単純ですが、意外にうまく認識しないケースも多いようなので、hosts変更の手順と注意点についてまとめました。
hostsファイルとは
ドメインはDNS(ドメインネームサーバ)という仕組みでIPアドレスと紐づけられています。
ブラウザなどでyahoo.co.jpにアクセスするとDNSサーバに問い合わせて、118.151.235.191というようなIPアドレスを取得してそれに対して通信を行います。
hostsファイルはDNSへの問い合わせの前に参照されて、記述があればこちらが優先されます。
どんな使い道があるの?
いろんな用途が考えられますが、有効に活用できるひとつの例はウェブサイト制作の現場などでしょう。
ドメインとIPアドレスを仮想的に割り当てて公開前のウェブサイトを実際にインターネット上で確認したり、移転作業などで本来のIPアドレスとは違うサーバを参照したりすることができます。
DNSよりhostsが優先されるので、悪用すればマルウェアなどウィルスなどで改竄することにより、スパムサイトに誘導したりできるわけです。
基本の追記書式
書式はWindows系やUNIX系も基本的に同様でシンプルなものです。
最後の行に「IPアドレス+半角スペース+ドメイン名」という形で追記します。
118.151.235.191 example.com
Windowsのhosts変更
hostsファイルの場所
現役のWindowsOSではWindows7・Windows8・Windows10で共通で下記の場所にあります。
C:\Windows\System32\drivers\etc\hosts
検索やエクスプローラーのアドレスバーに以下をコピペしても表示できます。
%WinDir%\System32\Drivers\Etc
Windows8のhostsファイル
# Copyright (c) 1993-2006 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 handle within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
118.151.235.191 example.com
上記では例としてyahooのIPアドレスにexample.comというドメインを紐づけています。
変更する場合の注意点は該当ファイルをそのままテキストエディタなどで開くと権限の問題で保存することができません。
アプリケーションを管理者権限で実行するか、デスクトップなどにコピーしてから編集後、書き換えてください。
コピーの際も権限を要求される場合がありますので、適時、実行ください。
※保存したファイルに.txtなどの拡張子が付いている場合はhostsファイルとして認識しませんので、削除ください。
変更したhostsが効かない
指定したドメインで希望のサーバへのアクセスができない場合、まずはPINGを実行してみましょう。
hostsが正常に認識できていれば、example.comへPINGを打つと118.151.235.191から応答が返ってきます。
hostsファイルは本来ブラウザでも即時適用されますが、PINGが正常に返ってきている場合はスーパーリロードを試してください。
正常にPINGが返ってこない場合、コマンドプロンプトでDNSのリフレッシュを試してもよいのですが、おそらく解決しないでしょう。
ipconfig /flushdns
結論として、Windowsでhostsが認識しない原因の多くは文字コードです。
テキストエディタで文字コードチェックして、Shift_JIS(改行コード:CR+LF)であればほとんどの場合は動作するはずです。
しかし、厳密にはWindowsのhostsファイルのデフォルト文字コードはShift_JISにマイクロソフトが独自に拡張を加えたANSI(CP932)というものです。
このため、純正ではないテキストエディタで編集して動作しない場合はメモ帳(NOTEPAD)で開き、文字コードをANSIで保存し直します。
これでほぼ間違いなく動作するでしょう。
Macintoshでのhosts変更
hostsファイルの場所
Macでは/private/etc/に存在しますが、privateは不過視フォルダのため、デスクトッププルダウンメニュー「移動」→「フォルダに移動」にて/etc/とすることで、フォルダを開くことができます。
テキストエディタでの編集
デフォルトのアプリは純正のテキストエディットとなっているはずですが、権限の問題で上書き保存ができません。
このため、あらかじめデスクトップなどにコピーしてから編集するか、別名保存します。
書式はWindowsと同じく、最終行に「IPアドレス+半角スペース+ドメイン名」で追記します。
※hostsファイルをetcフォルダに移動する際にはアカウントのパスワード入力を求められます。
ターミナルでの編集
ターミナルのvimコマンドで書き換えることも可能です。
root権限が必要なため、sudoで実行します。
sudo vim /etc/hosts
パスワードを入力して、aキーでインサートします。
escで編集モードを抜けて「:wq」で保存します。
補足:プロキシーを経由していないか?
どのOSにおいてもプロキシーを使用している環境では実際にアクセスするのはクライアントではなく、プロキシーサーバになります。
このような場合はローカルのhostsファイルではなく、プロキシサーバのhostsファイルを変更する必要があります。
意外に勘違いしやすいため、注意ください。