Używam OS X 10.8.5 i Chrome 30.
Dodałem 127.0.0.1 youtube.com
do mojego /etc/hosts
pliku taki, że teraz zawiera on:
# 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
Po uruchomieniu polecenia traceroute youtube.com
otrzymuję oczekiwane wyniki (youtube.com jest rozwiązywany do 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
Jednak gdy piszę youtube.com w Chrome, moja przeglądarka nie nawiązuje połączenia z 127.0.0.1, ale zamiast „normalnego” adresu IP YouTube. Spodziewałbym się, że Chrome rozwiąże youtube.com do 127.0.0.1.
Skonfigurowałem Chrome do korzystania z ustawień proxy mojego systemu. W OS X, kiedy idę do Preferencji systemowych> Sieć> „Zaawansowane ...”> Proxy, wybrałem „Automatyczne wykrywanie proxy”.
Dlaczego Chrome pozornie ignoruje mój /etc/hosts
plik?
macos
networking
google-chrome
dns
Jonathan
źródło
źródło
Odpowiedzi:
Spróbuj dodać
www.youtube.com
do pliku hosts.youtube.com
jest trwale przekierowywany nawww.youtube.com
, więc tak długo, jakyoutube.com
raz odwiedziłeś , Twoja przeglądarka buforuje tę odpowiedź i przekierowuje cięwww.youtube.com
. Tego adresu nie ma w pliku hosts, więc chrome logicznie rozwiązuje go poprawnie.źródło
www
nie działa dla mnie. Nawet po wyczyszczeniu wszystkich danych przeglądarki i wyczyszczeniu DNS. Być może jest to środek antyphishingowy wprowadzony do Chrome?Google Chrome ignoruje plik hosts i dokonuje rzeczywistych wyszukiwań DNS (pomimo tego, co inni mogą myśleć,
/etc/hosts
nie jest częścią DNS, to było to, co było używane przed DNS). Chociaż Google Chrome powinien honorować wpisy plików hostów, nie robi tego. Plik hosts, będący alternatywą dla systemu DNS, zostanie odczytany, gdy nie będzie dostępny żaden serwer DNS (na przykład po wyłączeniu połączenia sieciowego).Możesz to przetestować, dodając „127.0.0.1 foobar.dev” do pliku hosts, a następnie włączając Wireshark i oglądając interfejs sieciowy. Otwórz Chrome, włóż
http://foobar.dev/
pasek adresu i idź. Zobaczysz zapytanie DNS w Wireshark, coś w stylu:FWIW, Google DNS zwraca wartość 127.0.53.53 dla foobar.dev.
Obejściem może być użycie HostAdmin, który jest starszym rozszerzeniem Chrome, które sprawia, że Chrome korzysta z hostów. Jednak nowsze wersje Chrome (> 38, odpowiednio) już go nie obsługują.
źródło
/etc/hosts
pliku w OS X. Przynajmniej nie Chrome v43 w OS X 10.10.3.Rozwiązałem ten problem: WYŁĄCZ „Ochrona Ciebie i Twojego urządzenia przed niebezpiecznymi witrynami” w Zaawansowanych preferencjach Chrome.
Wbudowana „ochrona” Chrome obejmuje bezpośrednie sprawdzanie domeny pod własnym DNSem i pomijanie niektórych typów wpisów hosta, które uważa za „podejrzane” lub wpisów dla witryn, które są zastępowane, co oznacza, że większość niestandardowych wpisów hosta jest ignorowana. W szczególności * .dev i * .local wpisy używane do programowania.
Wyłączenie to rozwiązało problem w 100% dla mnie. Doprowadzało mnie to do szału przez wiele miesięcy, kiedy zajmowałem się rozwojem lokalnym i nie mogłem znaleźć nigdzie wymienionej odpowiedzi, wszyscy po prostu mówili, że to się nie dzieje. Okazuje się, że było to proste przełączanie w ustawieniach zaawansowanych. Mam nadzieję, że to wam również pomoże, na zdrowie.
źródło
Localhost to konwencja dla adresu 127.0.0.1, który jest wewnętrznym adresem dla tcp / ip, jednak Chrome nie używa / etc / hosts do rozwiązania adresu, używa serwera DNS, dlatego żaden adres nie pochodzi od twojego / etc / hosts, ale z serwera DNS, jeśli używałby / etc / hosts, będzie musiał przechowywać całą nazwę hosta www, aby rozwiązać dowolny adres.
Mam nadzieję że to pomoże.
źródło
/etc/hosts
zastępuje wszelkie serwery DNS. Tak, jeśli używasz tylko/etc/hosts
, musiałoby zawierać wszystkie nazwy domen, ale większość konfiguracji obejmuje również serwery DNS. Jeśli Chrome po prostu poprosi system operacyjny o rozpoznanie nazwy domeny, tak jak powinna ,/etc/hosts
najpierw zostanie sprawdzona, a jeśli nie zawiera wpisu, zostanie wysłane zapytanie DNS./etc/hosts
powinien zastąpić i żądanie DNS, ale nie jest tak w przypadku Google Chrome. Wykonuje własne wyszukiwania DNS, pomimo tego, co może znajdować się w pliku hosts. Jest to łatwe do wykazania. Jest to szczególnie problem dla rozwoju lokalnego za pomocą.dev
TLD.Natknąłem się na to pytanie, myśląc, że
hosts
plik nie działa w Chrome na macOS dla.dev
fałszywych domen, których używam do programowania.Właściwie to nie praca, przynajmniej w Chrome 77.
Problemem nie jest to, że domena nie została znaleziona, ale że wszystkie pliki .dev są teraz automatycznie przekierowywane na https :
Po dwukrotnym kliknięciu nazwy domeny możesz zobaczyć winowajcę:
Teraz, gdy Google złamał nasz
.dev
, jako rozwiązanie, powyższy link sugeruje przejście do innej TLD w celu rozwoju, takiego jak.test
lub.localhost
.źródło