Windowsコンピュータ上のhostsファイルは、特定の名前文字列を特定のIPアドレスにバインドして、他の名前解決方法を上書きするために使用されます。
多くの場合、hostsファイルを変更することを決定し、変更が反映されないこと、またはその後hostsファイルの古いエントリでさえ無視されることを発見します。いくつかの「勘違い」の間違いがこれを引き起こす可能性があり、どれが原因かを理解するのはイライラすることがあります。
Windowsがhostsファイルを無視するという問題に直面したとき、従うことができる包括的なトラブルシューティングプロトコルは何ですか?
この質問には、SOで重複があります。たとえば、 HOSTSファイルが無視されます
しかし、これらは特定のケースに対処する傾向があり、OPが行った間違いが判明したら、議論は終わります。同じエラーを偶然起こさなかった場合、そのような議論はあまり役に立ちません。したがって、allケースをカバーするすべてのホスト関連の問題を解決するための一般的なプロトコルを用意するほうが役立つと思いました。
私自身の経験とグーグルでの経験に基づいて、次のことを試してみてください。
ホストへの変更はすぐに有効になりますが、Windowsは名前解決データをキャッシュするため、しばらくの間古いレコードが使用される可能性があります。コマンドラインを開き(Windows + R、cmd
、Enter)、次のように入力します。
ipconfig /flushdns
古いデータを削除します。機能するかどうかを確認するには、次のコマンドを使用します(ホストにwww.example.comのipv4エントリがあるか、またはipv6.example.comのホストにipv6エントリがあると仮定します)。
ping www.example.com -n 1
ping -6 ipv6.example.com -n 1
そして、それが正しいIPを使用しているかどうかを確認します。はいの場合、hostsファイルは問題なく、問題は別の場所にあります。
また、次のコマンドでNetBiosキャッシュをリセットできます(管理者としてコンソールを開くか、失敗します)。
nbtstat -R
DNSキャッシュの現在のデータは次のようにして確認できます。
ipconfig /displaydns | more
hosts
ではなくHost
にする必要があります。hosts.txt
ではなくhosts
)-既知の拡張子を隠すようにウィンドウを構成している場合は注意してください。プロパティを確認して確認してください:正しいホストファイルのタイプは「ファイル"。#
)を誤って行の前に付けましたか?www.example.com
およびexample.com
-両方を追加するのが最も安全)?各行の形式はIP address
、次に水平タブ(エスケープコード\t
、ASCII HT
、hex 0x09
)または単一のスペース(16進数0x20
)、次にホスト名、つまりwww.example.com
、最後にキャリッジリターンとそれに続くラインフィード(エスケープコード\r\n
、ASCII CRLF
、16進数0x0d 0x0a
)。
Unicode制御画像を使用して制御文字を示すサンプルエントリ。 (これらをホストファイルにコピーアンドペーストしないでください!)
192.0.2.1␉www.example.com␍␊
2001:db8:8:4::2␉ipv6.example.com␍␊
個々のバイトは Notepad ++hex editor plugin で表示できます。 Notepad ++は特殊文字も表示するため([表示]-> [記号の表示])、空白文字の数と種類を簡単に検査できます。
どこかからhostsエントリをコピーして貼り付けた場合、複数のスペースが生じる可能性があります。理論的には、ホストは2つの列を区切る複数のスペースをサポートしますが、他に何も機能しない場合に試すこともできます。
安全のために、hostsファイルのすべての行でタブまたはスペースのいずれかを使用してください。両方を使用しないでください。
最後に、ファイルを空白行で終了します。
Hostsファイルの場所を指定するレジストリキーがあります。おそらく、Windowsは実際には他の場所へのhostsファイルの配置をサポートしていませんが、確認したい場合があります。キーは次のとおりです。
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath
エントリは次のようになります。
%SystemRoot%\System32\drivers\etc
ときどき、ファイルのアクセス許可、ファイルの属性などに問題があります。デフォルトの権限でファイルを再作成するには:
hosts
に変更します。%SystemRoot%\System32\drivers\etc
ディレクトリにコピーして(移動しないでください)、古いファイルを上書きします。最後のポイントは重要です。コピーは機能しますが、移動は機能しません。
ローカルUsers
アカウントは、hostsファイルを読み取ることができる必要があります。確認するには(Windows 7の場合):
%SystemRoot%\System32\drivers\etc
に移動します。hosts
ファイルが表示されない場合は、 隠しファイルとシステムファイルが表示されていることを確認してください 。hosts
ファイルを右クリックし、コンテキストメニューからProperties
を選択します。hosts Properties
ウィンドウで、[Security
]タブをクリックします。Group or user names:
ボックス内の名前のリストを調べます。 %COMPUTERNAME%\Users
が存在する場合は、それをクリックして権限を表示します。Users
が存在しない場合、または存在するがRead
権限がない場合は、Edit...
をクリックします。Users
が存在しない場合は、Add...
をクリックし、Users
と入力して、Check Names
をクリックし、[OK]をクリックするか、Enterキーを押します。Users
を選択し、Allow
列でRead & execute
がオンになっていることを確認します。 OKをクリックします。 Windows Security
アラートボックスが表示されたら、Yes
を選択して続行します。hosts Properties
ウィンドウを閉じます。Hostsファイルは、BOMなしのANSIまたはUTF-8でエンコードする必要があります。これは、ファイル->名前を付けて保存で行えます。
プロキシを設定している場合、hostsファイルがバイパスされる可能性があります。解決策は、プロキシを使用しないか、プロキシを使用しないように構成することです。
確認するには、Internet Explorer->インターネットオプション->接続-> LAN設定に移動します。すべてが空白で、[設定を自動的に検出する]がオンになっている場合は、プロキシを使用していません。
プロキシを使用してWebにアクセスしているために無効にしたくない場合は、Internet Explorer->インターネットオプション->接続-> LAN設定->プロキシサーバー/詳細設定に移動して、例外を追加できます。次に、例外を[例外]テキストボックスに追加します。例えば。 localhost;127.0.0.1;*.dev
(これにより、プロキシの問題も解決される場合があります。)
ネットワーク接続のプロパティに移動し、TCP/IP設定に移動して、最初のDNSサーバーを127.0.0.1
(localhost)に変更します。 2番目はおそらく実際のDNSのIPである必要があります。
これは、hostsファイルが機能するために必要ではありませんが、何かが奇妙に設定されている場合に役立つことがあります。
Myhost.localの形式で.localドメインエントリを使用していて、それが無視される場合は、以下を試してください。
x.x.x.x myhost.local www.myhost.local
www.myhost.localが存在しない場合でも。 Windowsはどういうわけか、ワークグループやローカルドメインを追加しません。
最初にipaddressを置き、次に「ドメイン」を次のように置いていることを確認します。
127.0.0.1 bo.dev
127.0.0.1 www.bo.dev
チェックファイルの権限を追加してください。コンピューター、つまりホストに対するローカル管理者権限を持っているにもかかわらず、私はそれを発見しました。ローカルユーザーをホストファイルのアクセス許可に読み取りと読み取りと実行、さらにipconfig/flushdnsで追加するまで、ホストはアクティブになりませんでした。
私の場合、私はWindows 7で作成したファイルC:\ Windows\System32\drivers\etc\hosts.icsを試しました。
hosts.ics:
# This file has been automatically generated for use by Microsoft Internet
# Connection Sharing. It contains the mappings of IP addresses to Host names
# for the home network. Please do not make changes to the HOSTS.ICS file.
# Any changes may result in a loss of connectivity between machines on the
# local network.
その結果、WindowsはC:\ Windows\System32\drivers\etc\hostsの設定を無視し、hosts.icsの設定を使用します。
同じ問題が発生し、hostsファイルのエントリが無視されました。私はこれと他の多くのスレッドですべてを運なしで試しました。他の誰かがこれに遭遇した場合に備えて、私がうまくいったことを投稿すると思いました。
注:単にhostsファイルを開いてコンテンツを削除し、それが0kbであることを確認して再度追加しても機能しませんでした。ファイルの権限の問題だと思います。
上記の説明で見逃された問題の1つは、hostsファイルの非修飾名(ピリオドを含まない名前)です。その時点でネットワーク設定が有効になり、非修飾ドメインの末尾に独自のドメインが自動的に追加される場合があります。その結果、名前が解決されないか、さらに悪いことに、完全に異なるマシンに解決される可能性があります。
IP NAME
ではなく、NAME IP
として値を入力したことを確認してください。
これは、たとえばファイルにエントリが1つしかない場合や、コメントアウトテキストを無視した場合に発生する可能性があります。
これに数時間、おそらく数日を費やしました。
IBM Trusteer Endpoint Rapportのセキュリティがこの問題を引き起こす可能性があります。
Mysite.comを信頼済みサイトのリストに追加しました。
セキュリティの一環として、マルウェアやウイルスが別のサイトに誘導されるのを防ぎます。
Mysiteを信頼済みサイトのリストから取得すると、hostsファイルの宛先変更のチェックと「修正」は行われなくなりました。
誰かが問題を解決するのに役立つことを願っています。
(Windows 7)ラップトップでネットワークに接続するまで、hostsファイルは無視されます。ネットワークに接続すると、すべてが正常に機能します。明らかに、ネットワークがないと、ホストなどにpingを実行できませんが、WindowsがホストファイルからIPアドレスを取得することを期待していました。そうではありません。切断後もアドレスは正常に検索されますが、コンピュータを再起動してから最初にネットワークに接続するまでの間、hostsファイルは無視されます。
(ちなみに、私の知る限り、タブ、スペース、改行は関係ありません)。
私の場合、問題は、暗号化されたディレクトリからホストファイルをコピーし、それでetc/hostsを上書きしていたことでした。私はプロパティを見て、「ファイルを暗号化する」チェックボックスのチェックを外さなければなりませんでした。
Windowsでは、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePathがhostsファイルのディレクトリを指していることを確認します。