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?
źródło
nslookup
. Właśnie próbowałem pingowaćmyMachine.MyDnsSuffix
i to rozwiązało się na mój adres IP w sieci, inaczej127.0.0.1
niż podano w moim pliku HOSTS.ipconfig /flushdns
. I NetBIOS cache też:nbtstat -R
. (Rozróżnianie wielkości liter w systemie Windows - WTF, dlaczego?!?)Wyszukiwania DNS nie używają pliku hosts. Zawsze.
źródło
gethostbyname()
Może przechodzić przez plik hosts lub przez DNS, ale wyszukiwanie specyficzne dla DNS (wykonywane przeznslookup
) nie będzie korzystało z pliku hostsOK, zupełnie nowe podejście. Pozwól nam wyczyścić pamięć podręczną IP i NETBIOS.
ipconfig /flushdns
anbtstat -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.
źródło
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:
źródło
HOSTS
plik, 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”HOSTS
plik.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.
źródło
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ę.
źródło
http://www.tweaksforgeeks.com/windows7/2011/02/windows-7-hosts-file-ignored <- Pracuj dla mnie!
źródło