Co może powodować, że wyszukiwanie DNS ignoruje wpis pliku hosta?

13

Mam problem z rozwiązaniem DNS, który wpływa na wydajność mojej lokalnie hostowanej witryny podczas przeglądania jej na moim komputerze lokalnym. Jeśli dołączam sufiks DNS mojej sieci do nazwy mojego komputera lokalnego, kiedy przechodzę do adresu URL w przeglądarce, witryna ma straszne czasy ładowania (ponad 100 razy wolniejsze) niż bez sufiksu DNS.

Pomyślałem, że mogę to naprawić, używając mojego pliku hosts, aby uniknąć konieczności wyszukiwania. Dodałem wpis do mojego pliku hosts w ten sposób

127.0.0.1    myMachine.MyDnsSuffix

Ale to nie zmieniło czasów ładowania, nawet po ponownym uruchomieniu. Chociaż rozwiązanie tego konkretnego problemu nie jest ważne, naprawdę chciałbym wiedzieć, dlaczego tak się dzieje.

Ponadto, kiedy uruchamiam nslookup w domenie myMachine.MyDnsSuffix, zauważam, że używa on serwera DNS mojej sieci do znalezienia adresu IP. Czy może to być związane z moim problemem, czy po prostu źle rozumiem, jak działa nslookup?

Dan Herbert
źródło

Odpowiedzi:

20

Uważam, że nslookup służy do testowania samego serwera DNS, a nie wykorzystywania pliku HOSTS. http://support.microsoft.com/kb/200525 wydaje się wskazywać tyle samo.

Spróbuj po prostu ping. Czy ping myMachine.MyDnsSuffixrozwiązuje problem z adresem pętli zwrotnej podanym w pliku HOSTS?

Christopher Karel
źródło
Masz rację nslookup. Właśnie próbowałem pingować myMachine.MyDnsSuffixi to rozwiązało się na mój adres IP w sieci, inaczej 127.0.0.1niż podano w moim pliku HOSTS.
Dan Herbert,
Jaki masz system operacyjny? Myślę, że Windows7 i prawdopodobnie Vista ma dziwne zabezpieczenia UAC w pliku HOSTS. Czy na pewno Twoje zmiany są zapisywane poprawnie?
Christopher Karel,
Mój system operacyjny to Windows XP. Wygląda na to, że zmiany zostały poprawnie zapisane.
Dan Herbert,
Hmm ... na początku wpisu HOSTS nie ma znaku skrótu, prawda? (to by był komentarz) I jesteś pewien, że jest w C: \ Windows \ System32 \ drivers \ etc \ hosts? Czy możesz dodać tam fikcyjny wpis i sprawdzić, czy to rozwiąże się tak, jak określono?
Christopher Karel
3
Och, i nie zapomnij wyczyścić pamięci podręcznej nazwisk. ipconfig /flushdns. I NetBIOS cache też: nbtstat -R. (Rozróżnianie wielkości liter w systemie Windows - WTF, dlaczego?!?)
Christopher Karel
8

Wyszukiwania DNS nie używają pliku hosts. Zawsze.

adapttr
źródło
2
@BartDeVos nie, to nie jest źle. Ogólne wyszukiwanie hosta (tzn. gethostbyname()Może przechodzić przez plik hosts lub przez DNS, ale wyszukiwanie specyficzne dla DNS (wykonywane przez nslookup) nie będzie korzystało z pliku hosts
Alnitak
To powiedziawszy, gethostinfo / getaddrinfo (nowoczesne wersje gethostbyname) to POSIX, i niekoniecznie to, czego używa Windows.
adapttr
2

OK, zupełnie nowe podejście. Pozwól nam wyczyścić pamięć podręczną IP i NETBIOS. ipconfig /flushdnsa nbtstat -R. Następnie uruchom sniffer pakietów, taki jak Wireshark, i wykonaj ping podczas jego działania.

Z przechwytywania pakietów chcemy sprawdzić, czy: A) wychodzi żądanie DNS, a jeśli tak, o jaką nazwę żąda. B) Jeśli pojawi się żądanie NETBIOS. Możliwe, że ta nazwa jest rozpoznawana przez NETBIOS zamiast prawidłowego DNS.

Jeśli nie zobaczymy żadnego z powyższych pomimo opróżnienia pamięci podręcznej, prawdopodobnie nazwa jest pobierana z hostów lub lmhostów.

Christopher Karel
źródło
1

Niektóre osoby na forach internetowych twierdzą, że utworzenie nowego pliku hosts i ponowne uruchomienie usługi klienta DNS rozwiązuje problem, ale nie jestem pewien, dlaczego miałoby to działać, jeśli już próbowałeś zrestartować komputer.

Zdaję sobie sprawę, że jest to długi strzał, ale nie ma żadnych słów związanych z Microsoftem, takich jak MSDN, Microsoft lub MSN we wpisie pliku hosta, prawda? Microsoft napisał dnsapi.dll, aby zignorować wpisy plików hostów pasujące do niektórych nazw. Na przykład, jeśli dodam następujący wpis, system Windows pominie go i rozwiąże oba nazwy hostów we wpisie za pomocą DNS:

127.0.0.1 www.microsoft.com www.mysite.com
jlupolt
źródło
W moim pliku HOSTS nie mam żadnych rzeczy związanych z Microsoft. Mam przypisanych tylko kilka wewnętrznych domen testowych. Mój plik HOSTS jest dość prosty.
Dan Herbert,
Hmm interesujące. Wiedziałem, że mają zakodowane na stałe domeny MS, aby zignorować HOSTSplik, ale nawet domena inna niż MS zostaje zignorowana, jeśli dzieli wpis z domeną MS? To po prostu kiepskie programowanie z ich strony. Jest to zdecydowanie coś, na co należy zwrócić uwagę, jeśli „minimalizuje” HOSTSplik.
Synetech
0

Podczas korzystania z pełnej nazwy DNS przeglądarka próbuje przejść przez serwer proxy - kliknięcie w przypadku IE .

Kolejność rozpoznawania plików hostów lub nazw nie ma nic wspólnego z tym problemem, a ropiejący ból z tyłu ludzkości, czyli plik hostów, powinien zostać usunięty i głośno zastrzelony.

Maximus Minimus
źródło
Nie jestem jednak podłączony do serwera proxy.
Dan Herbert,
1
@mh: Zgodziłbym się z tobą w sprawie strzelania do hostów, o ile serwery root pozwalają mi dodawać / usuwać / edytować rekordy.
Ian Boyd,
0

http://geekswithblogs.net/JanS/archive/2009/06/17/beware-of-spacing-in-windows7-hosts-file.aspx

To wydaje się być faktyczną przyczyną. Pozostaw to firmie Microsoft, aby nagle i bez ostrzeżenia zignorować 25-letnią konwencję.

Michael McNally
źródło
2
W odpowiedzi podaj treść odpowiedzi / przyczyny. Jest o wiele ładniejszy niż tylko link.
Jakub
Oto zasadnicza część połączonego adresu URL Jednak nic nie działało. Dopóki nie zobaczyłem innych przykładów hostujących pliki, które zostały sformatowane jako <adres ip> <pojedyncza spacja> <wartość>
Tun