hostsファイルを使ってDNSに登録していないサーバ名でアクセスする

2013年5月7日

開発あるあるネタ。

テスト環境なのでDNS登録していないサーバ名でアクセスしたい

開発中のテスト環境なので、わざわざDNSにサーバ名を登録したりせず、手元でささっとやってしまいたい。そんな時はアクセスするPCのhostsファイルを設定して使う。

名前解決という仕組み

PCでインターネット接続する際にはサーバ名からIPアドレスに変換した上でIPアドレスのサーバに通信を実施する。その名前解決の順序は、hosts→DNS問合せ の順番で行われる。なので、hostsに書くことでDNSへ問合せしないでも名前解決が出来るようになるという仕組み。

hostsファイルは極々簡単なテキストファイル

ファイルの内容はいたってシンプル。

IPアドレス サーバ名

の羅列。IPアドレスとサーバ名の間に入るスペースは何個でも良い。もちろん半角。#以降はコメントとして無視される。空行も無視。
ルールはこれだけ。

例えば

192.168.100.101 hogehoge.mybenjo.net
192.168.100.102 hogehoge2.mybenjo.net

なんて具合。

最近のWindowsだとちょっと編集が面倒

hostsは、LinuxやMacだと /etc/hosts にある。管理者アカウントで編集する。すごくシンプル。

Windowsは、C:\windows\system32\drivers\etc\hosts にある。Windows95からずっと変わっていない。
Windows7(Vistaからかも?)以降では、スタートメニューでメモ帳を右クリックで選択して「管理者として実行」で開いて、そこからhostsファイルを開いて編集する必要がある。手順が少し厄介。

携帯電話やスマートフォンでは、出来ないと考えた方が良い。

これはセキュリティとあんまり関係ありません

テスト環境などで、広くみんなに見てもらう必要がない場合に簡単に済ませる手段として有効だけれど、この手順を踏まえれば、IPアドレスとサーバ名のペアが分かってしまえば誰でも出来る。なのでこれでセキュリティを確保出来ると考えるのは危険。
「テスト環境ということは、test.mybenjo.net で、www.mybenjo.net と同じIPアドレスで運用しているのでは無いか」という推測は突飛なものでは無いし、実際そういうことをするケースもありえるだろう。
あくまで一つの手法だ。