PR

hostsとdns、アクセスルートと改竄

一般的なアクセス手順

Google.com に行きたい

自分は知っているか?hostsファイルを参照 → 知っているなら、そこに行こう

↓ 知らない

DNSは知っているか? → 知っているなら、そこに行こう

↓ 知らない

上位DNSは知っているか? → 知らないなら何処に行けばよいかわからないね

↓ 知っている

そこに行こう!

スポンサードリンク

本番環境と開発環境を同一アドレスで

まずは正しく、便利な利用方法

何かしらの開発を行っているとどこかに内向きDNSがあるだろう。内部にサーバーを立てている場合、外部からのアクセスはルータで転送し、内部からのアクセスは内向きDNSによって内部のサーバーにアドレス解決される。

これは、外部からのアクセスには唯一持っているグローバルアドレスにポート80でアクセスが来たら、内部の192.168.1.2に立てたexample.com:80が受ける。内部からexample.comへアクセスしようとすると、内向きDNSによって192.168.1.2が案内される。これで、内部も外部もexample.com:80というアドレスでアクセスできる。

アドレスを同一にする必要性

ここでは本番環境と同一の環境で開発環境192.168.1.3を持っているとして話をすすめる。(環境が違うとパスなどが変更され、設定ファイルについても触れることになるため)

開発環境の192.168.1.3にhttp://192.168.1.3とアクセスした場合と、192.168.1.3に転送されるように仕掛けてhttp://example.comにアクセスした場合では、ブラウザの送出するヘッダ情報が異なる。後者では192.168.1.3に接続に行くが、Server:example.comというヘッダも送られる。

これは192.168.1.3で複数のドメインを運用していたとしても待機しているウェブサーバー側がどの情報を求められているのか判断できるようにするためだ。前者の場合、デフォルトに設定されたサイトが反応するため、挙動が異なることがある。また、返信されたhtmlのなかにimgタグなどが入っていれば再度それを取得しに行くが、絶対パスで指定されていた場合にはDNSへ問い合わせるため、192.168.1.2へ接続してしまう。

解決手法

これらの状況に容易に対応する方法の一つがhostsファイルだ。内向きDNSは内部ネットワークに影響をおよぼすため、この他にhostsファイルを使用して開発に携わる人だけが意図してhostsファイルを書き換えることで、同一アドレスで開発環境に接続しながら結果を確認することができる。

開発が終わった際には切り替えていることを忘れないようにしたい。オンラインで確認するにはサーバー監視【無料】など、外部ネットワークからアクセスさせることで確認するほか、Firefox DNS一発更新などのツールで確認したい。切り替えツールとしてpc.casey.jp » Firefox hosts切替アドオン-SwitchHostsが便利そう。むしろこれがあればFirefox DNS一発更新は不要になってしまうのか?

違った使い道

一部のユーザにとっては意図的にhostsファイルを書き換えることで認証に必要な情報を送出させないように仕掛けたり、セキュリティの為にインターネットにアクセスさせないように仕掛けたりすることがある。さらに恐ろしいことに、hostsファイルが書き換えられてしまうと、常にURLを確認しているようなユーザでも、偽サイト(フィッシングサイト)に接続していることに気がつけないかもしれない。また、そういった動作をするウィルスも存在する。これらはDNSサーバーを乗っ取っても同様の結果を得られるが、範囲が狭められることと引き換えにハードルが下がる。

参考文献

コメント