hostsファイルのリダイレクトが失敗するのはなぜですか?


12

Macでこの/ etc / hostsファイルを使って楽しく学習するために、google.comをローカルマシンにリダイレクトしようとしています。

127.0.0.1 www.google.com

ただし、MacのChromeでアクセスすると、www.google.comは引き続きGoogleホームページにマッピングされます。どうして?

基本的に、これは私がしたすべてです:

  1. sudo vim /etc/hosts端末を入力します。
  2. 入力され127.0.0.1 www.google.comhostsファイルに。
  3. 保存してvimを終了します。

回答:


10

hostsファイルには、このように動作しません。ホスト名をIPアドレスにマップするためにのみ使用できますlocalhost

たとえば、127.0.0.1 www.google.comwww.google.comを127.0.0.1にマップします。

より多くのホスト名を単一のIPにマップする場合は、それらのホスト名を同じ行に追加するだけです(例:)127.0.0.1 www.a.com www.b.com


1
ありがとうございました。Macの/ etc / hostsファイルをに変更しました127.0.0.1 www.google.com。ただし、google.comは引き続きGoogleホームページにアクセスします。何か更新する必要がありますか?コンピュータを再起動する必要がありますか?
David Faux

あなたがする必要はありません。127.0.0.1 google.comこの行の後に(wwwなしで)追加してみて、機能するかどうかを確認します。
レナン

127.0.0.1 google.comどちらも機能していません。何が起こっているのかわかりません...それ/etc/hosts/private/etc/hostsMacでのソフトリンクですが、それがまったく役に立たないと思います。
David Faux

1
専門性:hostsホスト名をIPアドレスにマップします(その逆ではありません)。
Dennis

1
@Dennis、それは私が言おうとしていたことですが、2つの項目間の関連付けを作成するので、もう一度考えてみると、両方の方法で実際に機能します。
Synetech

9

Webブラウザは、hosts構文が正しいかどうかを確認するための最良の方法ではありません。実行してみてください

ping www.google.com

そしてそれがpingすることを確認し127.0.0.1ます。

Chromeがhostsファイルを無視しているように見える理由はキャッシュです:

Chromeが最近IPをすでに照会している場合(最近の定義はDNSサーバーから返される存続時間(TTL)に依存している可能性が高い)、正しいIPをhostsすでに知っているため、ファイルをバイパスします。これは、Webブラウジングを高速化するために行われます。

Chromeに新しいエントリを尊重させるには、次のようにします。

  1. /etc/hosts@Renanの説明に従って編集します。

  2. に移動しchrome://chrome/settings/clearBrowserDataます。

  3. を選択しsince the beginning of timeます。

  4. をチェックしますがEmpty the cache、その他はすべてオフにします。

  5. クリックClear browsing dataして終了するまで待ちます。

  6. Chromeを再起動します。

これでChromeはhostsファイルを尊重するはずです。


2
私はこれをIE6でずっと前に学びました。IEがまだ開いているときにHOSTSファイルに変更を加えた場合、変更を反映するには、ファイルを特別に閉じて再度実行する必要があります。これはほとんどのプログラムに当てはまります。ただし、一部のプログラム(過去1〜2年のバージョンのChromeなど)は実際にHOSTSファイルを定期的に再読み取りするため、変更を加えた場合は、1〜2分待ってから更新します(キャッシュをクリアする必要はありません)。(この再読み取りポリシーは、このような場合に便利ですが、実際には無駄であり、特にHOSTSファイルが大きい場合は特に悪いため、実際にはかなり悪いです。)
Synetech

@Synetech:hostsエントリがすでにキャッシュされているホスト名でない限り、Chromeは即座に変更を取得します。私は仮定し、それがチェックすることをhostsTTLが過去持っている場合のみ。大きなウェブサイト、それはしばらく時間がかかることができます。
Dennis

異なるバージョンがHOSTSファイルを再読み取りする方法の詳細はわかりませんが、Filemon / ProcMonを使用して、実際の動作を確認できます。chrome.exe時々ファイル全体を読み取ります。
Synetech

2
ChromeのDNSキャッシュのフラッシュの少ない残忍な方法はありsuperuser.com/questions/203674/...
hakunin

@hakunin:きちんと。Chromium 25.0.1364.160 Ubuntu 12.04では、これはもう必要ありません。をチェックインしましたがnet-internals/#dns/etc/hostsが変更されると、ホストキャッシュが自動的にクリアされます。
Dennis

1

私はUbuntu 16.04のFortinet SSL VPNを介してオフィスに接続しているので、上記の組み合わせです。

最初にやらなければならないことは、ターミナルコンソールを起動して次のコマンドを実行することです。

sudo nano /etc/resolvconf/resolv.conf.d/base

次の例を追加しました:

searchdomain domain.local
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

次に、を押してファイルを保存し、を押しCTRL-Oてnanoを閉じましたCTRL-X

それから私は次のことをしました、そしてそれは完全に働きました:

Chromeに新しいエントリを尊重させるには、次のようにします。

/etc/hosts@Renanの説明に従って編集します。

  1. に移動しchrome://chrome/settings/clearBrowserDataます。
  2. 初めから選択してください。
  3. [キャッシュを空にする]をオンにしますが、その他はすべてオフにします。
  4. [閲覧データの消去]をクリックして、完了するまで待ちます。
  5. Chromeを再起動します。

これでChromeはホストファイルを尊重するはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.