Po uaktualnieniu do Mac OSX Lion doszedłem do wniosku, że / etc / hosts nie jest już przeszukiwany na pierwszym miejscu pod kątem rozwiązywania nazw. Prowadzi to do pewnych skutków ubocznych, takich jak:
- Wpisy w / etc / hosts są rozwiązywane boleśnie powoli
- Nie możesz zastąpić istniejących domen, np. 127.0.0.1 www.google.com
- Jeśli otrzymujesz wpisy domeny wyszukiwania z DHCP, powiedzmy .lan, a jakiś zabawny facet skonfigurował localhost.lan na coś innego niż 127.0.0.1 w lokalnym DNS, nie możesz już połączyć się z lokalnym hostem.
Czy to zachowanie jest zamierzone? Czy to ma jakiś sens? A co najważniejsze, jak mogę wrócić do starego zachowania.
macos
dns
osx-lion
hosts-file
Meik
źródło
źródło
Odpowiedzi:
Myślę, że liczy się to, że Lion traktuje .local TLD inaczej, ponieważ jest zarezerwowany dla niektórych funkcji Multicast DNS (używanych przez Bonjour). Jedynym sposobem rozwiązania tego problemu jest użycie innego TLD dla hostów programistycznych (tj.: .Dev). U mnie działa dobrze, mam nadzieję, że pomoże innym!
źródło
http://foo.dev/
; Po tym Chrome zda sobie sprawę, żefoo.dev
jest to domena, a nie zapytanie.Jeśli chodzi o nadpisywanie domen w pliku hosts, odkryłem, że w pewnych okolicznościach Lion pyta o adres IPv6 dla domeny, jeśli wykryje, że domena jest nieosiągalna w sieci IPv4.
Odkryłem to, gdy zauważyłem reklamy, których nigdy wcześniej nie widziałem w Snow Leopard, ponieważ przekierowałem domeny reklam do
127.0.0.1
. Uruchomiłem wireshark i zauważyłemAAAA
(rekordy DNS IPv6) zapytania następujące poA
zapytaniach IPv4 (IPv4). Serwery reklam rzeczywiście mają adresy IPv6 i były w stanie udostępniać mi swoją zawartość.Rozwiązaniem tego jest mieć plik
wejście dla każdego
wpis w pliku hosts.
Co ciekawe, jeśli zdarzy się, że masz uruchomiony lokalny serwer WWW,
127.0.0.1:80
a Twoja przeglądarka otrzyma odpowiedź z serwera WWW (błąd lub inny błąd), nieAAAA
zostanie wysłane żadne zapytanie, ponieważ wydaje się, że jest przekonane, że połączenie TCP było przynajmniej możliwe.W związku z tym, jeśli intensywnie korzystasz z pliku hosts (do blokowania reklam, lokalnego tworzenia stron internetowych itp.), Możesz zajrzeć do uruchomienia własnego lokalnego resolwera DNS. Czytanie
/etc/hosts
każdego żądania powoduje znaczne uszkodzenie dysku / procesora , więc w twoim najlepszym interesie jest, aby ten plik był bardzo lekki.Jedną z zalet uruchamiania czegoś takiego jak
dnsmasq
lokalnie (poza znacznym wzrostem wydajności) jest to, że możesz przekierować całe domeny najwyższego poziomu z powrotem na komputer lokalny. Dzięki temu możesz mieć całą przestrzeń nazw * .dev do programowania (na przykład), bez konieczności indywidualnego wprowadzania każdej domeny, która ma być lokalnie rozwiązana/etc/hosts
źródło
/etc/hosts
- system operacyjny buforuje plik, jeśli jest często używany.Problem polegał na tym, że dałem symboliczny plik / etc / hosts. Jeśli / etc / hosts jest zwykłym plikiem, wszystko jest w porządku.
źródło
Aktualizacja (2): OSX 10.10.5 przynosi powrót
mDNSResponder
.Aktualizacja: OSX 10.10 Yosemite zamieniło mDNSResponder na „discoveryd”. Nie zaktualizowałem, więc nie jestem pewien zachowania discoveryd w / r / t wyszukiwania DNS i
/etc/hosts
.mDNSResponder
Procesem jest systemowy przelicznik DNS w Lion .Możesz pomyśleć „ale mDNSResponder jest respondentem multiemisji DNS”. Masz rację; do tego pierwotnie służył i nadal spełnia tę funkcję. Jednak w nowszych wersjach MacOS wykonuje również standardowe wyszukiwania hostów.
W Lion nie wydaje się, aby automatycznie ponownie czytał,
/etc/hosts
gdy się zmienia, przynajmniej nie zawsze. ZabijaniemDNSResponder
(i pozwalanie na automatyczne ponowne uruchomienie) wydaje się rozwiązywać problem.powinien załatwić sprawę.
poniżej jest moja oryginalna odpowiedź dla potomnych. Przypuszczam, że w niektórych przypadkach może to nadal stanowić problem.
Upewnij się, że
/etc/hosts
plik jest plikiem tekstowym w stylu unixowym, z wysunięciami linii jako zakończeniem, a nie cr.Edycja za pomocą TextWranglera lub uniksowego edytora tekstu powinna zachować plik.
Jeśli plik jest już popsuty, spróbuj to naprawić
zasługa tej poprawki:
http://techpatio.com/2011/guides-how-to/fixed-mac-osx-lion-etc-hosts-bugs-dns
źródło
Przez jakiś czas miałem ten problem, ponieważ pracując z zespołem programistów, konieczne stało się używanie .local zamiast .dev lub .localhost. Ten artykuł okazał się bardzo przydatny.
iTand.me - domeny lokalne Lion i inne hosty.
W podsumowaniu;
Ale jeśli musisz użyć .local, najbardziej eleganckim rozwiązaniem, jakie znalazłem, jest narzędzie dscl. Korzystanie z niego jest bardzo proste. Aby dodać hosta o nazwie mydev.local i skierować go do hosta lokalnego, wykonaj następujące czynności:
Aby zobaczyć wszystkie aktualnie zdefiniowane hosty i ich adresy IP
Aby usunąć hosta:
Ogólnie rzecz biorąc, całkiem proste i działa dobrze. Nadal wolałbym mieć możliwość edycji / etc / hosts, ale jest to lepsza alternatywa dla konieczności zmiany nazw wszystkich naszych serwerów .local.
źródło
Przed przejściem z Snow Leopard do Lion miałem kilka wpisów specyficznych dla aplikacji
/etc/hosts
, na przykład:Po aktualizacji ładowanie lokalnych aplikacji było BARDZO wolne. Zauważyłem, że opóźnienie nastąpiło, zanim żądanie pojawiło się w pliku dziennika, a gdy to się stało, sama aplikacja działała tak szybko, jak zwykle.
Teraz mam dwa wiersze na aplikację, na przykład:
... i znowu wszystko jest szybkie.
Najwyraźniej dodaje to adresy IPv6? Nie do końca rozumiem, ale to działa.
źródło
Moja sytuacja była podobna, ale opóźnienia, wynoszące dokładnie 5 sekund, występowały tylko w przypadku adresów URL kończących się na „.local”. Podczas przeglądania stron, które kończyły się na „.dev”, nie było opóźnienia.
Niektórzy inni programiści w moim biurze mieli ten problem, podczas gdy kilku nie. Liczyłem na prostą poprawkę i nie chciałem zmieniać nazwy witryny na „.local” z powodu innych zależności.
Uruchomiłem następujące polecenie w Terminalu i porównałem wyniki z kilkoma innymi użytkownikami w biurze.
Ta sekcja była jedyną różnicą:
Mój Mac był połączony z moim kontem iCloud i miałem włączoną funkcję Back To My Mac. Po wyłączeniu funkcji Back To My Mac dodatkowy resolver zniknął, a 5-sekundowe opóźnienie zniknęło.
źródło
Wow, co za koszmar. Przeczytałem absolutnie wszystko na ten temat i wszystko, co do tej pory zostało zasugerowane, było kusząco bliskie temu, czego doświadczałem, ale żadne z rozwiązań nie zadziałało.
I zorientowałem się, dlaczego.
W przeciwieństwie do innych nie używałem / etc / hosts do konfigurowania lokalnych domen. Mój plik / etc / hosts był w magazynie i zawierał tylko wpisy potrzebne dla interfejsu sprzężenia zwrotnego i hosta transmisji. Co więcej, był to poprawnie zakodowany plik unixowy, ponieważ jestem osobą, która edytuje go tylko z wiersza poleceń, używając emacsa. I, dzięki Bogu, nie musiałem uciekać się do uruchamiania własnego serwera DNS, takiego jak DNSmasq, aby obejść problem.
(Żeby było jasne, symptomem, który przywiódł mnie tutaj do tego problemu, było to, że emacs uruchamiał się około 10 sekund, ale tylko wtedy, gdy byłem w Wi-Fi. Gdybym wyłączył Wi-Fi, emacs uruchomiłby się natychmiast zgodnie z oczekiwaniami.)
Moje rozwiązanie: mój laptop ma nazwę „terminator”. (Tak, jego błyszcząca aluminiowa obudowa przywodziła mi na myśl postać Arnolda Schwarzeneggera.) Musiałem tylko dodać wpisy do / etc / hosts dla nazwy samej maszyny:
Znalazłem nazwę mojego hosta, uruchamiając proste polecenie w terminalu:
... który wrócił z wyjściem: "terminator". Po zmianie / etc / hosts tak, aby zawierał te dwa wpisy, emacs może teraz szybko rozpoznać nazwę mojego laptopa.
Mam nadzieję, że to komuś pomoże.
źródło
Miałem problemy z szybkością, używając OSX Lion jako narzędzia do tworzenia stron internetowych ... Korzystając z kombinacji sugestii, uciekłem się do wyłączenia sieci ipv6 i routingu ipv6 do localhost6 ... wszystko przyspieszyło trochę ...
/ etc / hosts ...
źródło
Myślę, że było kilka poprawek błędów. Widziałem wiele wspomnianych problemów i żaden z nich nie wydaje się mieć obecnie zastosowania (na przykład umieszczanie wielu aliasów w jednej linii teraz działa dobrze).
W każdym razie wydaje się, że w przypadku Lion Apple dokonał drastycznych zmian w mDNSResponder, który obsługuje wszystkie wyszukiwania DNS i (przynajmniej w przypadku Lion) obsługuje również buforowanie / etc / hosts. Dla mnie wyszukiwanie do przodu również teraz działa. Ale odwrotne wyszukiwania (np. Wyszukiwanie 1.2.3.4 zamiast google.com) nie działają.
Po wielu kłopotach wygląda na to, że mDNSResponder konwertuje to wyszukiwanie do 4.3.2.1.in-addr.arpa i wyszukuje nazwę. Może to być preferowany sposób działania DNS, ale w ogóle nie działa z / etc / hosts.
O ile oczywiście nie dodasz aliasu 4.3.2.1.in-addr.arpa dla każdego hosta, gdzie 4.3.2.1 to adres IP w odwrotnej kolejności, z której zwykłeś go widzieć. To wszystko naprawia dla mnie. Oto przykładowy wpis w / etc / hosts:
1.2.3.4 foo foo.example.com alias.example.com 4.3.2.1.in-addr.arpa
źródło