windows でhosts の設定変更が読み込まれない。そんな時に試してみたこと。
windows7 でローカルのhosts を更新しているのに反映されず、くっそはまったのでメモ。
その時に調べた結果、ローカルのhosts が読み込まれないパターンがいくつかあるようなので、実際に解決に至るまで行った手順を残しておく。
環境と問題
1.DNSキャッシュのクリア
まず、読み込まれていないのは設定更新前のキャッシュが残っているからではと考えた。そこで、DNSのキャッシュをクリアする方法を調べて、クリアしてみた。
DNSのキャッシュをクリアするには、コマンドプロンプトで下記コマンドを実行する
ipconfig /flushdns
すると、「DNS リゾルバーキャッシュは正常にフラッシュされました。」と表示されるはず。
そのあと、本当に削除されたかどうかは下記コマンドで確認する。
ipconfig /displaydns
すると、「DNSリゾルバーキャッシュを表示できませんでした。」と表示されるはず。この後、再度ブラウザ上で設定したドメインをたたけば、hosts ファイルが読み込まれるはず。この時、「F5」等での更新ではなく、新たにたたくほうが良さそう。今回ではないのですが更新だと、意図したとおりの動きにならないこともあったので。まぁ、今回読み込まれない原因はこれではなかったんだけど。。
2.windowsのメモ帳で編集しないとだめ?
どうも、権限の問題で読み込まれなくなってしまう場合があるらしい。
参考:hostsファイルが読み込まれない!? - 飽きやすいプログラマの所感
実際にhosts ファイルを書き換えたとき、使用していたのはサクラエディタで、windows のメモ帳じゃあなかった。そのため、今回は参考元の記事を参考に新しいファイルの作成でメモ帳を使用してhosts ファイルの内容を丸っとコピペして作成、元のhosts ファイルに上書き保存をした。
これでいけると思いきや、これだけではだめだった。。
3.実行権限を持つユーザの設定
またしても参考:hostsファイルの書換えが反映されない。 - マイクロソフト コミュニティ
どうにも、SYSTEMが権限を持っていればよいのかと思えばそうではないらしい。
参考元の「最も役に立った返信」では、
「Users」と「Power Users」を追加しないとWindowsがhostsファイルを読んでくれないようです。
とあります。回答者の方の環境はwindows xp だったようで、windows7 環境にも当てはまる問題なのかどうかはわかりませんでしたが、実際に試してみました。
hosts ファイルを右クリックしてプロパティを表示し、「セキュリティ」タブを開き[編集]→[追加]でオブジェクト名に「Power Users」を指定し、作成後実行権限を付与しました。
ここまでくればいけるだろうと思いました。が、だめでした。
4.プロキシの設定
きっと、ここにたどり着くまでのいずれも必要なことだったんだと思います。が、僕の場合最終的な原因はこれでした。
参考:hostsファイルについて、名前解決やりたいことはブラウザのア... - Yahoo!知恵袋
今回、この問題にはまったときは業務の都合上プロキシを介してサーバに接続していたため、ブラウザにプロキシ設定をしていました。
ブラウザにプロキシ設定をしている場合、ローカルのhosts で名前解決を図るのではなく、プロキシサーバで名前解決を行うため、ローカルのhosts の内容は関係なしって感じになっちゃうみたいですね。。
最終的にプロキシの問題に気づいたのは、それまで確認に使用ししていたブラウザとは別のブラウザで試してみたところ意図したとおりの名前解決ができていたため、このブラウザ観の違いは何だろう?と調べてみたら、名前解決できているほうではプロキシ設定がされていなかった、ということでググってみたらそういうことだったという感じです。
と、いうことで
未来の自分と、そして同じような問題にぶち当たった方の参考にもなれば幸いです。。
この辺の知識が本当薄いので、今回は何とか解決できてよかったですが、これからも勉強していかないとな。。と思いました、まる