OS XでChromeが/ etc / hostsを無視するのはなぜですか?


27

OS X 10.8.5とChrome 30を使用しています。

ファイルに次のように追加127.0.0.1 youtube.comしました/etc/hosts

# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0     localhost

127.0.0.1       youtube.com

コマンドを実行するtraceroute youtube.comと、予想される結果を受け取ります(youtube.comは127.0.0.1に解決されます):

traceroute to youtube.com (127.0.0.1), 64 hops max, 52 byte packets
1  localhost (127.0.0.1)  0.272 ms  0.118 ms  0.063 ms

ただし、Chromeでyoutube.comと入力すると、ブラウザーは127.0.0.1との接続を確立せず、YouTubeの「通常の」IPアドレスとの接続を確立します。Chromeがyoutube.comを127.0.0.1に解決すると予想していました。

システムのプロキシ設定を使用するようにChromeを構成しています。OS Xでは、[システム環境設定]> [ネットワーク]> [詳細設定...]> [プロキシ]に移動すると、[自動プロキシ検出]が選択されています。

Chromeが/etc/hostsファイルを無視しているように見えるのはなぜですか?


4
www.youtube.comではなくyoutube.comを解決しようとしているのは確かですか?また、youtube.comには301リダイレクトがあり、ブラウザによってキャッシュされているため、youtube.comに接続しようとすることさえありません(チェックするためにコンピューター上にない)。
user2313067

@ user2313067ありがとう!/ etc / hostsを修正して、www.youtube.comの行が127.0.0.1に解決されるようにしました。これでうまくいきました。
ジョナサン

@ user2313067コメントとして回答を投稿することもできます。
ブラックライトシャイニング


あなたはおそらく、VPNまたはChromeの拡張機能を使用していることを変える何らかの方法であなたの接続
user1735921

回答:


8

www.youtube.comhostsファイルに追加してみてください。youtube.comはに永続的にリダイレクトされるためwww.youtube.comyoutube.com一度アクセスした限り、ブラウザはこの応答をキャッシュしてにリダイレクトしますwww.youtube.com。このアドレスはホストファイルにないため、chromeは論理的に正しく解決します。


1
あなたのリダイレクトクリアするには、これを行うsuperuser.com/questions/304589/...を、または単に開発のためのシークレットモードを使用
james.c.funk

1
追加wwwしても機能しません。すべてのブラウザデータを消去し、DNSをフラッシュした後でも。おそらくこれはChromeに焼き付けられたフィッシング対策ですか?
f1lt3r

裸とwwwの両方を追加します。hostsファイルのバージョンは私のために働いた。また、Chromeでchrome:// flags /#enable-new-preconnectを無効にしました
-LyK

10

Google Chromeはホストファイルを無視し、実際のDNSルックアップを行います(他の人が考えるかもしれないが、/etc/hostsDNSの一部ではなく、DNS より前に使用れていたものです)。Google Chrome これらのホストファイルエントリを尊重する必要がありますが、そうではありません。DNSに代わる hostsファイルは、DNSサーバーが利用できないときに読み込まれます(ネットワーク接続を無効にした場合など)。

これをテストするには、「127.0.0.1 foobar.dev」をホストファイルに追加し、wiresharkを有効にしてネットワークインターフェースで監視します。Chromeを開きhttp://foobar.dev/、アドレスバーに入力してください。Wiresharkには、次のようなDNSクエリが表示されます。

2   1.668727000 192.168.32.104  8.8.8.8 DNS 75  Standard query 0x663a  A foobar.dev

FWIW、Google DNSはfoobar.devに対して127.0.53.53を返します。

3   1.706484000 8.8.8.8 192.168.32.104  DNS 91  Standard query response 0x663a  A 127.0.53.53

回避策は、Chromeがホストを使用するようにする古いChrome拡張機能であるHostAdminを使用することです。ただし、Chromeの新しいバージョン(> 38、明らかに)はサポートしていません。


実際、Chromeは/etc/hostsOS X上のファイルを無視していません。少なくとも、OS X 10.10.3上のChrome v43 は無視していません。
ペトルペラー

Wiresharkは別の話をします。
カールウィルバー

1
ChromeがGoogle DNSを照会するという事実は、/ etc / hostsが無視されることを意味しないかもしれません。これは、単に最適化/ロギング/スパイの目的で使用できます。OS Xでは/ etc / hostsファイルを頻繁に使用しますが、Chromeでは問題ありません。
ペトルペラー

3
ホストファイルに「127.0.0.1 foo.dev」があり、Chromeがfoo.devを127.0.53.53に魔法のように解決すると、hostsファイルは無視されます。
カールウィルバー

1
はい。ただし、Wi-Fiをオンにすると、Chrome DNSルックアップを行う前に最初にhostsファイル使用する必要があります。ありません。それが問題だ。
カールウィルバー

5

この問題を解決するには: Chromeの[詳細設定]で[危険なサイトからあなたとデバイスを保護する]をオフにします。

Chromeに組み込まれた「保護」には、独自のDNSに対してドメインを直接チェックし、「疑わしい」と見なされる特定のタイプのホストエントリまたはオーバーライドされているサイトのエントリをバイパスします。つまり、ほとんどのカスタムホストエントリは無視されます。特に、開発に使用される* .devおよび* .localエントリ。

これをオフにすることで、時間の100%を解決しました。これは、ローカル開発を行っているときに数ヶ月間私を怒らせ、私はどこにもリストされた答えを見つけることができませんでした。高度な設定での簡単な切り替えでした。これもあなたのお役に立てば幸いです。


おかげで、私はそれが先週動作することを知っていた、私は数日前にデフォルトにクロムオプションを変更し、それはもう動作しませんでした。動いた!
98%monkey

ありがとう 動いた!新しいバージョンでは「セーフブラウジング」と呼ばれています
98percentmonkey

0

Localhostは、tcp / ipの内部アドレスである127.0.0.1アドレスの規則ですが、Chromeは/ etc / hostsを使用してアドレスを解決するのではなく、DNSサーバーを使用しているため、アドレスは/ etc / hosts、ただしDNSサーバーから、/ etc / hostsを使用していた場合、アドレスを解決するためにwwwホスト名全体を保持する必要があります。

お役に立てれば。


1
-1。/etc/hostsDNSサーバーをオーバーライドします。はい、のみ を使用している場合は/etc/hosts、すべてのドメイン名を含める必要がありますが、ほとんどのセットアップにはDNSサーバーも含まれます。クロームは、単にドメイン名を解決するためにOSを要求する場合、それはすべきであるように/etc/hosts最初にチェックされ、そしてそれは、エントリが含まれていない場合は、DNSクエリが送信されます。
ブラックライトシャイニング

/etc/hosts DNSリクエストオーバーライドする必要がありますが、これはGoogle Chromeには当てはまりません。hostsファイルに何があっても、独自のDNSルックアップを実行します。これは簡単に証明できます。これは、特に.devTLD を使用したローカル開発の問題です。
カールウィルバー

0

この質問に出くわしたのは、hostsChrome for macOSで、.dev開発に使用している偽のドメインのファイルが機能しなかったからです。

実際にはない、少なくともクロム77で、仕事を。

問題は、ドメインが見つからないということではなく、すべての.devがhttpsに自動的にリダイレクトされることです:

このサイトにアクセスできません-Chrome

ドメイン名をダブルクリックすると、原因がわかります。

https

Googleが.devソリューションとしてGoogleを破った今、上記のリンクは、.testまたはなどの開発のために別のTLDに移動することを提案してい.localhostます。

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