plik hosts ignorowany, jak rozwiązać problem?

148

Plik hosts na komputerach z systemem Windows służy do wiązania określonych ciągów nazw z określonymi adresami IP w celu zastąpienia innych metod rozpoznawania nazw.

Często decyduje się na zmianę pliku hosts i odkrywa, że ​​zmiany nie działają, lub że później nawet stare wpisy w pliku hosts są ignorowane. Może to powodować wiele błędów „gotcha”, a ustalenie, które z nich może być frustrujące.

W obliczu problemu ignorowania pliku hosts przez system Windows, jaki jest kompleksowy protokół rozwiązywania problemów, którego można przestrzegać?


To pytanie ma duplikaty w SO, takie jak ignorowanie pliku HOSTS

Jednak mają one zazwyczaj do czynienia z konkretnym przypadkiem, a gdy jakikolwiek błąd popełniony przez PO zostanie znaleziony, dyskusja jest zakończona. Jeśli nie popełniłeś tego samego błędu, taka dyskusja nie jest zbyt przydatna. Pomyślałem więc, że bardziej przydatny byłby ogólny protokół rozwiązywania wszystkich problemów związanych z hostami, który obejmowałby wszystkie przypadki.

Superbest
źródło
11
Ponadto, jak ktoś napisał w innym miejscu, nie używaj „nslookup” do testowania tego, ponieważ to polecenie ignoruje plik hosts. Raczej użyj „ping”.
LatinSuD
Możliwe zignorowanie
030

Odpowiedzi:

220

Na podstawie własnego doświadczenia i tego, co spotkałem podczas Google, oto kilka rzeczy do wypróbowania:

1. Czy sprawdziłeś, czy działa poprawnie?

Zmiany w hostach powinny obowiązywać natychmiast, ale system Windows buforuje dane rozpoznawania nazw, więc przez pewien czas mogą być używane stare rekordy. Otwórz wiersz poleceń (Windows + R cmd,, Enter) i wpisz:

ipconfig /flushdns

Aby usunąć stare dane. Aby sprawdzić, czy to działa, użyj (zakładając, że masz wpis ipv4 na swoich hostach dla www.example.com lub wpis ipv6 na twoich hostach dla ipv6.example.com):

ping www.example.com -n 1
ping -6 ipv6.example.com -n 1

I sprawdź, czy używa prawidłowego adresu IP. Jeśli tak, plik hosts jest w porządku, a problem występuje gdzie indziej.

Możesz także zresetować pamięć podręczną NetBios za pomocą (otwórz konsolę jako administrator, bo to się nie powiedzie):

nbtstat -R

Możesz sprawdzić bieżące dane w pamięci podręcznej DNS za pomocą:

ipconfig /displaydns | more

2. Podstawy

  • Czy Twój plik hosts jest poprawnie nazwany? Powinno być hostsi nie hostitd.
  • Czy rozszerzenie jest prawidłowe? Nie powinien mieć rozszerzenia ( hostsnie hosts.txt) - należy zachować ostrożność, jeśli skonfigurowałeś system Windows do ukrywania znanych rozszerzeń, sprawdź właściwości, aby się upewnić: Poprawny typ pliku hostów będzie wyświetlany jako „Plik”.
  • Czy przestrzegałeś poprawnej składni ? Czy przypadkowo prefiksowałeś linie hash ( #), które wskazują na komentarze?
  • Czy zadbałeś o wszystkie warianty ( www.example.comi example.com- najbezpieczniej jest po prostu dodać oba)?

3. Biała spacja

Format każdego wiersza to IP address, następnie pozioma tabulacja (kod zmiany znaczenia \t, ASCII HT, szesnastkowy 0x09) lub pojedyncza spacja (szesnastkowa 0x20), a następnie nazwa hosta, tj. www.example.com, następnie w końcu znak powrotu karetki, a następnie znak wiersza (kody specjalne \r\n, ASCII CRLF, szesnastkowy 0x0d 0x0a).

Przykładowe wpisy, wykorzystujące obrazy kontrolne Unicode do wskazania znaków kontrolnych. (Nie kopiuj i nie wklejaj ich do pliku hosts!)

192.0.2.1␉www.example.com␍␊
2001:db8:8:4::2␉ipv6.example.com␍␊

Poszczególne bajty można wyświetlać w Notepad ++ za pomocą wtyczki edytora szesnastkowego . Notepad ++ wyświetla także znaki specjalne (Widok -> Pokaż symbol), dzięki czemu można łatwo sprawdzić liczbę i rodzaj białych znaków.

Jeśli gdzieś skopiowałeś i wkleiłeś wpisy hostów, możesz mieć wiele spacji. Teoretycznie hosty obsługują wiele spacji oddzielających dwie kolumny, ale kolejną rzeczą jest wypróbowanie, jeśli nic więcej nie działa.

Aby być bezpiecznym, upewnij się, że wszystkie wiersze w pliku hosts używają tabulatorów lub spacji, a nie obu.

Na koniec zakończ plik pustą linią.

4. Klucz rejestru

Istnieje klucz rejestru określający lokalizację pliku hosts. Podobno Windows nie obsługuje umieszczania pliku hosts w innych lokalizacjach, ale możesz chcieć to sprawdzić. Kluczem jest:

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath

Wpis powinien być:

%SystemRoot%\System32\drivers\etc

5. Uprawnienia

Czasami występują problemy z uprawnieniami do pliku, atrybutami pliku i podobnymi rzeczami. Aby ponownie utworzyć plik z domyślnymi uprawnieniami:

  1. Utwórz nowy plik tekstowy na pulpicie.
  2. Skopiuj i wklej zawartość bieżącego pliku hosts do tego pliku w Notatniku.
  3. Zapisz nowy plik tekstowy i zmień jego nazwę na hosts.
  4. Skopiuj ( nie przenoś ) plik do %SystemRoot%\System32\drivers\etckatalogu i zastąp stary plik.

Ważny jest ostatni punkt: kopiowanie działa, przenoszenie nie.

UsersKonto lokalne musi mieć możliwość odczytu pliku hosts . Aby się upewnić (w systemie Windows 7):

  1. Przejdź do %SystemRoot%\System32\drivers\etcw Eksploratorze Windows.
  2. Jeśli nie widzisz hostspliku, upewnij się, że widzisz pliki ukryte i systemowe .
  3. Kliknij hostsplik prawym przyciskiem myszy i wybierz Propertiesz menu kontekstowego.
  4. W hosts Propertiesoknie kliknij Securitykartę.
  5. Sprawdź listę nazwisk w Group or user names:polu. Jeśli %COMPUTERNAME%\Usersjest obecny, kliknij go, aby wyświetlić uprawnienia.
  6. Jeśli Usersnie jest obecny lub jest obecny, ale nie ma Readpozwolenia, kliknij Edit....
  7. Jeśli Usersnie jest obecny, kliknij Add..., wpisz Users, kliknij Check Namesi kliknij OK lub naciśnij Enter.
  8. Wybierz Usersi upewnij się, że Read & executejest zaznaczone w Allowkolumnie. Kliknij OK. Jeśli pojawi się Windows Securityokno alertu, wybierz opcję Yeskontynuowania.
  9. Kliknij przycisk OK, aby zamknąć hosts Propertiesokno.
  10. Przejdź do sekcji 1 tej odpowiedzi i postępuj zgodnie ze wskazówkami, aby sprawdzić, czy teraz działa.

6. Kodowanie

Plik hosts powinien być zakodowany w ANSI lub UTF-8 bez BOM. Możesz to zrobić za pomocą Plik -> Zapisz jako.

7. Proxy

Jeśli masz skonfigurowany serwer proxy, może on ominąć plik hosts. Rozwiązaniem jest nieużywanie serwera proxy lub skonfigurowanie go tak, aby tego nie robić.

Aby to sprawdzić, przejdź do przeglądarki Internet Explorer -> Opcje internetowe -> Połączenia -> Ustawienia sieci LAN. Jeśli wszystko jest puste, a opcja „Automatycznie wykryj ustawienia” jest zaznaczona, nie używasz serwera proxy.

Jeśli korzystasz z serwera proxy w celu uzyskania dostępu do sieci i dlatego nie chcesz go wyłączać, możesz dodać wyjątki, przechodząc do przeglądarki Internet Explorer -> Opcje internetowe -> Połączenia -> Ustawienia sieci LAN -> Serwer proxy / Zaawansowane. Następnie dodaj swoje wyjątki do pola tekstowego Wyjątki. Na przykładlocalhost;127.0.0.1;*.dev

8. Adres DNS

(Może to również rozwiązać problemy z serwerem proxy).

Przejdź do właściwości połączeń sieciowych, a następnie ustawień TCP / IP i zmień pierwszy serwer DNS na 127.0.0.1(localhost). Drugim prawdopodobnie powinien być rzeczywisty adres IP DNS.

Nie jest to konieczne do działania pliku hosts , ale może pomóc w twoim przypadku, jeśli coś jest dziwnie skonfigurowane.

9.. Adresy lokalne

Jeśli używasz wpisu domeny .local w postaci myhost.local i zostanie on zignorowany, spróbuj wykonać następujące czynności

x.x.x.x myhost.local www.myhost.local

nawet jeśli www.myhost.local nie istnieje. Windows jakoś nie dołącza swojej grupy roboczej ani domeny lokalnej.

Superbest
źródło
3
DZIĘKUJEMY TAK DUŻO SUPERBEST! Prawie płaczę, więc wielu z nas oszalało na punkcie PRZESTRZENI na początku pustego wpisu między dwiema liniami. Dziękuję Dziękuję Dziękuję Dziękuję Dziękuję !!!!!
1
Innym problemem jest to, że 64-bitowe wersje systemu Windows przekierowują folder System32 dla aplikacji 32-bitowych (takich jak Notepad ++), więc po zapisaniu pliku pojawia się w folderze SystemWOW64 zamiast System32. Najlepszym obejściem jest po prostu skorzystanie z 64-bitowej wersji Notatnika dla systemu Windows. Drugim najlepszym rozwiązaniem jest połączenie z udziałem administracyjnym (\\ nazwa_urządzenia \ c $ \ Windows \ System32 \ drivers \ etc), aby otworzyć plik, jeśli korzystasz z edytora 32-bitowego.
Tim Lewis,
4
Dobry post, ale z kilkoma błędami. 1) „Automatycznie wykryj ustawienia” w IE może doprowadzić do (nawet nieświadomego) użycia proxy, jeśli twoja sieć faktycznie zapewnia automatyczną konfigurację proxy. 2) Zmiana serwerów DNS w ustawieniach sieciowych nie ma nic wspólnego z tym, jak / kiedy / jeśli hostsplik jest używany, a zmiana go na 127.0.0.1 jest w rzeczywistości błędem, chyba że faktycznie używasz serwera DNS na swoim komputer.
Massimo
1
# 5 (tworzenie nowego pliku i kopiowanie go) załatwiło sprawę. Win7 może być zabawny z uprawnieniami.
Chris
1
Edytowałem plik hosts w Cygwin przy użyciu vima, myślę, że spowodowało to problem z zatrzymaniem mojego pliku hosts. Musiałem utworzyć nowy plik i skopiować zawartość poprzedniego pliku hosts i to naprawiło.
forloop
16

Upewnij się, że najpierw umieściłeś adres IP, a następnie „domenę” w następujący sposób:

127.0.0.1   bo.dev
127.0.0.1   www.bo.dev
Gustaf
źródło
6
Wolę używać jednej linii:127.0.0.1 bo.dev www.bo.dev ftp.bo.dev
Xhynk
1
Ostrożnie, plik hostów systemu Windows zezwala tylko na dziewięć wpisów w wierszu! Ugryzło mnie to i zajęło mi to trochę czasu.
andrew
Nie używaj .devTLD lokalnie, ponieważ nie dostaniesz kolizji. Jest to ważna ogólna globalna TLD należąca do Google i będziesz mieć z nią wiele problemów. Zobacz ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts
Patrick Mevzek
Błąd nowicjusza, ale zadziałało. Doh! Miałem ich poprzednią nazwę, a następnie IP
ransems
11

Dodaj uprawnienia do sprawdzania plików. Przekonałem się, że chociaż miałem uprawnienia administratora lokalnego do komputera, a tym samym do hostów. Dopiero gdy dodałem lokalnych użytkowników do uprawnień do plików hostów za pomocą Read i Read & Execute, a następnie ipconfig / flushdns, hosty stały się aktywne.

David Siviour
źródło
3
To było to! Problem ten mnie zaskakuje od lat . Dodałem (machine)\USERSz uprawnieniami Odczyt i Odczyt i wykonanie, a potem ipconfig /flushdnszadziałało. Dziękuję bardzo. Bardzo się cieszę, że w końcu udało mi się odzyskać plik hosts.
Clement Cherlin,
7

W moich przypadkach próbowałem Windows 7 utworzony plik: C: \ Windows \ System32 \ drivers \ etc \ hosts.ics.

hosts.ics:

# This file has been automatically generated for use by Microsoft Internet
# Connection Sharing. It contains the mappings of IP addresses to host names
# for the home network. Please do not make changes to the HOSTS.ICS file.
# Any changes may result in a loss of connectivity between machines on the
# local network.

W rezultacie system Windows ignoruje ustawienia w C: \ Windows \ System32 \ drivers \ etc \ hosts i używa go z hosts.ics.

Unick
źródło
1
From support.microsoft.com/en-us/kb/309642/en-us , który jest stary, więc może już nie jest dokładny: „Plik Hosts.ics jest używany przez ICS do przechowywania informacji o dynamicznie konfigurowanych klientach. Unikaj wprowadzania zmian w ten plik, aby zapobiec utracie łączności lub danych. Plik Hosts (bez rozszerzenia nazwy pliku) to plik, do którego dodajesz informacje o statycznie skonfigurowanych klientach. ” Tak więc NIE oczekiwałbym, że Windows zignoruje Hostsplik tylko dlatego, że Hosts.icsjest obecny. Coś innego może powodować ignorowanie plików Hosta przez system Windows, na przykład nieprawidłowe (ale ukryte) rozszerzenie.
Arjan
1
Widzę tę informację. Ale nie wiem, dlaczego mogłem sprawić, by hosty działały tylko ja edytowałem hosts.ics. Przed edycją hosts.ics wypróbowałem wszystkie metody z tego tematu, ale hosty nie działają.
Unick
Dzięki! Uratowałeś mi życie. Pracował w systemie Windows 10
Xatenev
3

Wystąpił ten sam problem: wpisy plików hostów są ignorowane. Próbowałem wszystkiego w tym i wielu innych wątkach bez powodzenia. Pomyślałem, że opublikuję to, co dla mnie zadziałało, na wypadek, gdyby ktoś się z tym spotkał.

  1. Otwórz Eksploratora Windows jako Administrator
  2. Usuń plik hosts
  3. Otwórz notatnik jako Administrator i utwórz nowy plik hosts
  4. Zacznij od zera i dodaj wpisy.
  5. Upewnij się, że plik hosts nie ma rozszerzenia .txt

Uwaga: po prostu otwarcie pliku hosts i usunięcie zawartości, sprawdzenie, czy był to 0kb i ponowne dodanie nie działało. Podejrzewam, że w pliku występuje problem z uprawnieniami.

PSA4444
źródło
szybka uwaga - podczas modyfikowania plików systemowych (takich jak plik hosts), rozsądnie jest najpierw utworzyć kopię zapasową. Aby uniknąć utraty danych, zamiast tego zastanów się nad zmianą nazwy istniejącego pliku hosts hosts.bak, a następnie postępuj zgodnie z opisem w kroku 3.
nshiff
1

Spędziłem nad tym godziny, prawdopodobnie dni.

Zabezpieczenia IBM Trusteer Endpoint Rapport mogą powodować ten problem.

Dodałem mysite.com do listy zaufanych stron.

Myślę, że w ramach jego bezpieczeństwa zapobiega złośliwemu oprogramowaniu lub wirusom przekierowującym na alternatywne strony.

Przejął moją stronę z listy zaufanych stron i już nie sprawdza i „koryguje” przekierowanie plików moich hostów.

Mam nadzieję, że ktoś pomoże rozwiązać problem.

Bird on the Hand
źródło
1

Upewnij się, że wprowadziłeś wartości jako IP NAME, a nie jako NAME IP.

Może się to zdarzyć, jeśli w pliku jest powiedzmy tylko jeden wpis i jeśli zignorujesz tekst komentarza.

knb
źródło
1

Jednym z problemów pominiętych w powyższej dyskusji są niekwalifikowane nazwy (nazwy, które nie zawierają kropki) w pliku hosts. Twoje ustawienia sieciowe mogą zostać uruchomione w tym momencie i automatycznie dodawać własną domenę na końcu niekwalifikowanej domeny. W związku z tym nazwa może nie zostać rozwiązana lub, co gorsza, może zostać zastosowana na zupełnie innym komputerze.

użytkownik 287479
źródło
0

W systemie Windows upewnij się, że HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ DataBasePath jest skierowany do katalogu pliku hosts.

Geln Yang
źródło
0

W moim przypadku problem polegał na tym, że kopiowałem plik hosts z zaszyfrowanego katalogu i przesłoniłem nim etc / hosts. Musiałem spojrzeć na właściwości i odznaczyć pole wyboru „szyfruj plik”.

Janos
źródło
0

Plik mojego hosta jest ignorowany, dopóki nie mam połączenia sieciowego na moim laptopie (Windows 7). Po podłączeniu do sieci wszystko działa zgodnie z oczekiwaniami. Oczywiście bez sieci nie mogę pingować hostów itp., Ale nadal spodziewałem się, że Windows otrzyma ich adresy IP z pliku hosts. Tak nie jest. Nawet po rozłączeniu nadal wyszukuje adresy OK, ale między ponownym uruchomieniem komputera a pierwszym połączeniem z siecią ignoruje plik hosts.

(Nawiasem mówiąc, tabulatory, spacje i brak powrotu karetki są nieistotne, o ile mogę powiedzieć).

Denis Howe
źródło