Chrome neden OS X’te / etc / hosts dosyasını yok sayıyor?


24

OS X 10.8.5 ve Chrome 30 kullanıyorum.

Eklediğim 127.0.0.1 youtube.combenim için /etc/hostsartık bu içerecek şekilde dosyaya:

# 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

Komutu çalıştırdığımda traceroute youtube.combeklenen sonuçları alıyorum (youtube.com 127.0.0.1 olarak çözüldü):

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

Ancak, youtube.com'u Chrome'a ​​yazdığımda tarayıcım 127.0.0.1 ile bir bağlantı kurmuyor, bunun yerine YouTube için "normal" IP adresi ile. Chrome'un youtube.com'u 127.0.0.1 olarak çözmesini beklerdim.

Chrome, sistemimin proxy ayarlarını kullanacak şekilde yapılandırılmış. OS X'te, Sistem Tercihleri> Ağ> "Gelişmiş ..."> Proxy'lere gittiğimde, "Otomatik Proxy Keşfi" ni seçtim.

Chrome neden dosyamı görmezden geliyor /etc/hosts?


3
Www.youtube.com'u değil youtube.com'u çözmeye çalıştığından emin misin? Ayrıca youtube.com'un tarayıcı tarafından önbelleğe alınmış bir 301 yönlendirmesi olabilir, böylece youtube.com ile iletişim kurmaya bile kalmaz (kontrol etmek için bilgisayarımda değil).
user2313067 20:13

@ user2313067 Teşekkürler! Ayrıca / etc / hosts dosyasını da www.youtube.com için 127.0.0.1'e çözüm getiren bir satır olacak şekilde revize ettim ve bu işe yaradı.
Jonathan,

@ user2313067 Yorumunuzu cevap olarak göndermek isteyebilirsiniz.
Blacklight,

Yanıtlar:


8

www.youtube.comHosts dosyasına eklemeyi deneyin . youtube.comkalıcı yönlendirilir www.youtube.comböylece sürece ziyaret etmiş gibi youtube.comkez, tarayıcınız bu yanıtı önbelleğe ve yönlendirir www.youtube.com. Bu adres, ana bilgisayar dosyanızda bulunmuyor, bu nedenle chrome, mantıksal olarak doğru şekilde çözüyor.


1
Yönlendirmelerinizi temizlemek için yapın superuser.com/questions/304589/… ya da sadece geliştirme için gizli kip kullanın
james.c.funk

1
Eklemek wwwbenim için çalışmıyor. Tüm tarayıcı verilerimi temizledikten ve DNS'imi temizledikten sonra bile. Belki de bu Chrome'a ​​yapılan bir kimlik avı koruması önlemi?
f1lt3r

hem çıplak hem de www. hosts dosyasındaki sürümler benim için çalıştı. Ayrıca chrome: // flags / # enable-new-
preconnect öğelerini

9

Google Chrome, ana bilgisayar dosyanızı görmezden gelir ve gerçek DNS aramaları yapar (başkalarının ne düşündüğüne rağmen /etc/hosts, DNS'nin bir parçası değildir, DNS'den önce kullanılmış olandır ). Google Chrome , bu ana bilgisayarların dosya girişlerini onurlandırıyor olsa da yapmaz. DNS'ye alternatif olan hosts dosyası, DNS sunucusu olmadığında okunur (ağ bağlantınızı devre dışı bırakmışsanız gibi).

Bunu ana bilgisayar dosyanıza "127.0.0.1 foobar.dev" ekleyerek, ardından wireshark özelliğini etkinleştirip ağ arayüzünüzde izleyerek test edebilirsiniz. Chrome'u açın ve http://foobar.dev/adres çubuğuna koyun ve gidin. Wireshark'ta bir DNS sorgusu göreceksiniz, şunun gibi:

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

FWIW, Google DNS foobar.dev için 127.0.53.53 değerini döndürür.

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

Çözüm , Chrome'u ana bilgisayarları kullanan daha eski bir Chrome uzantısı olan HostAdmin kullanmak olacaktır . Ancak, Chrome'un daha yeni sürümleri (> 38, görünüşe göre) artık desteklememektedir.


Chrome aslında /etc/hostsOS X'deki dosyayı yok saymıyor. En azından OS X 10.10.3'teki Chrome v43.
Petr Peller

Wireshark farklı bir hikaye anlatıyor.
Karl Wilbur

1
Chrome'un Google DNS’i de sorgulaması gerçeği / etc / hosts anlamına gelmeyebilir. Bu sadece optimizasyon / kayıt / casusluk amaçları için olabilir. / Etc / hosts dosyasını OS X'te çok sık kullanıyorum ve Chrome ile hiçbir sorunum yok.
Petr Peller

3
Ana bilgisayar dosyam '127.0.0.1 foo.dev' olduğunda ve Chrome, foo.dev'i sihirli bir şekilde 127.0.53.53 olarak çözdüğünde, benim ana bilgisayar dosyamı IGNORING yapıyor.
Karl Wilbur

1
Evet, ama üzerinde wifi ile Chrome gereken hosts dosyasını kullanmak ilk bir DNS araması yapmadan önce. O değil. Sorun bu.
Karl Wilbur

3

Bu sorunu şu şekilde düzelttim: Chrome'un Gelişmiş Tercihleri'nde "Sizi ve cihazınızı tehlikeli sitelerden koruyun" seçeneğini KAPATIN.

Chrome'un yerleşik "koruması", bir etki alanını doğrudan kendi DNS'sine karşı kontrol etmeyi ve "şüpheli" olduğunu düşündüğü bazı ana bilgisayar girişlerini veya geçersiz kılınan siteler için olan girişleri atlayarak, çoğu özel ana bilgisayar girişinin yok sayıldığı anlamına gelir. Özellikle * .dev ve * .local gelişiminde kullanılan girdiler.

Bunu kapatmak sorunu benim için zamanın% 100'ünü çözdü. Bu, yerel gelişimde aylarca beni deli ediyordu ve hiçbir yerde listelenen cevabı bulamadım, herkes olamayacağını söyleyip durdu. Gelişmiş ayarlarda basit bir geçiş olduğu ortaya çıktı. Umarım bu da size yardımcı olur, şerefe.


Teşekkürler, geçen hafta çalıştığını biliyordum, birkaç gün önce krom seçeneklerini varsayılan olarak değiştirdim ve artık çalışmadı. İşe yaradı!
98percentmonkey

Teşekkürler, geçen hafta çalıştığını biliyordum, birkaç gün önce krom seçeneklerini varsayılan olarak değiştirdim ve artık çalışmadı. İşe yaradı! Yeni sürümlerde "Güvenli Tarama" denir
98percentmonkey

0

Localhost, tcp / ip için dahili bir adres olan 127.0.0.1 adresi için yapılan bir kongredir, ancak Chrome, adresi çözmek için / etc / hosts dosyasını kullanmaz, bir DNS sunucusu kullanıyor, bu nedenle hiçbir adres sizden gelmiyor / etc / hosts dosyası, ancak bir DNS sunucusundan, / etc / hosts kodunu kullanıyorsa, herhangi bir adresi çözmek için tüm www ana bilgisayar adlarını tutması gerekir.

Bu yardımcı olur umarım.


1
-1. /etc/hostsDNS sunucularını geçersiz kılar. Evet, yalnızca kullanıyorsanız /etc/hosts, tüm etki alanı adlarını içermesi gerekir, ancak çoğu kurulumda DNS sunucuları da bulunur. Krom basitçe, alan adını çözümlemek için OS isterse onu gerektiği gibi , /etc/hostsilk kontrol edilecek ve bir giriş içermiyorsa, o zaman bir DNS sorgu gönderilecektir.
Blacklight,

/etc/hosts DNS isteği geçersiz kılmalı ve DNS isteği bu olmalı ancak Google Chrome'da durum böyle değil. Hosts dosyasında olabileceklere rağmen kendi DNS aramalarını önceden yapar. Bu kolayca gösterilebilir. Bu, özellikle .devTLD kullanarak yerel kalkınma için bir konudur .
Karl Wilbur
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.