Файл хостів ігнорується, як усунути неполадки?


148

Файл хостів на комп'ютерах Windows використовується для прив’язки певних рядків імен до конкретних IP-адрес, щоб замінити інші методи вирішення імен.

Часто хтось вирішує змінити файл хостів і виявить, що зміни відмовляються набирати чинності або що навіть старі записи файлу хостів згодом ігноруються. Це може спричинити цілий ряд помилок "gotcha", і розібратися, яка з них може бути неприємною.

Якщо ви зіткнулися з проблемою Windows, ігноруючи файл хосту, що таке комплексний протокол усунення несправностей, якого можна дотримуватися?


Це запитання має дублікати SO, такі як файл HOSTS ігнорується

Однак вони, як правило, мають справу з конкретним випадком, і як тільки буде виявлена ​​помилка ОП, дискусія закінчена. Якщо ви не помилилися, таке обговорення не дуже корисне. Тому я подумав, що було б кориснішим скласти загальний протокол для вирішення всіх питань, пов’язаних з хостом, які охоплювали б усі випадки.


11
Крім того, як хтось розмістив інше місце, не використовуйте "nslookup" для перевірки цього, оскільки ця команда ігнорує файл хостів. Скоріше використовуйте "пінг".
LatinSuD

Можливий ігнорування
030

Відповіді:


220

На основі власного досвіду та того, з чим я стикався під час гуглінгу, ось що спробувати:

1. Ви перевірили, чи працює він правильно?

Зміни хостів мають набути чинності негайно, але Windows кешує дані роздільної здатності імен, тому певний час можуть використовуватися старі записи. Відкрийте командний рядок (Windows + R,, cmdEnter) та введіть:

ipconfig /flushdns

Щоб скинути старі дані. Щоб перевірити, чи працює він, використовуйте (припустимо, що у ваших хостах є запис ipv4 для www.example.com або запис ipv6 у ваших хостах для ipv6.example.com):

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

І подивіться, чи використовує він правильний IP. Якщо так, ваш файл хостів добре, а проблема в іншому місці.

Крім того, ви можете скинути кеш NetBios за допомогою (відкрийте консоль як адміністратор, або вона вийде з ладу):

nbtstat -R

Ви можете перевірити поточні дані в кеші DNS за допомогою:

ipconfig /displaydns | more

2. Основи

  • Чи правильно названо файл хостів? Це має бути, hostsа не hostі т.д.
  • Чи правильне розширення? Він не повинен мати розширення ( hostsне hosts.txt) - будьте обережні, якщо ви налаштували вікна, щоб приховати відомі розширення, перевірте властивості, щоб бути впевненим: правильний тип файлу хостів відображатиметься як "Файл".
  • Чи дотримувалися ви правильного синтаксису ? Ви випадково ввели префікс рядків з хеш ( #), який вказує коментарі?
  • Ви подбали про всі варіанти ( www.example.comі example.com- найбезпечніше просто додати обидва)?

3. Пробіл

Формат для кожного рядка - IP addressце горизонтальна вкладка (код втечі \t, ASCII HT, шістнадцятковий 0x09) або єдиний пробіл (шістнадцятковий 0x20), потім ім'я хоста, тобто. www.example.com, потім нарешті повернення вагона з поданням рядка (коди втечі \r\n, ASCII CRLF, шістнадцятковий 0x0d 0x0a).

Зразки записів, використовуючи контрольні зображення Unicode для позначення контрольних символів. (Не копіюйте та не вставляйте їх у файл хостів!)

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

Окремі байти можуть переглядатись у Блокноті ++ за допомогою шестигранного редактора . Блокнот ++ також відображатиме спеціальні символи (Вид -> Показати символ), щоб ви могли легко перевірити кількість та вид символів пробілу.

Якщо ви скопіювали і вставили записи хостів звідкись, ви можете отримати кілька пробілів. Теоретично хости підтримують декілька пробілів, що розділяють два стовпчики, але спробувати інше, якщо нічого іншого не виходить.

Щоб захиститись, переконайтесь, що всі рядки у файлі хостів використовують або вкладки, або пробіли, а не обидва.

Нарешті, закінчіть файл порожнім рядком.

4. Ключ реєстру

Існує ключ реєстру, який визначає розташування файлу хостів. Імовірно, Windows насправді не підтримує розміщення файлу хостів в інших місцях, але ви, можливо, захочете це перевірити. Ключ:

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

Запис має бути:

%SystemRoot%\System32\drivers\etc

5. Дозволи

Іноді у файлі є проблеми з дозволами, атрибутами файлу тощо. Щоб відтворити файл із дозволами за замовчуванням:

  1. Створіть на робочому столі новий текстовий файл.
  2. Скопіюйте та вставте вміст поточного файлу хостів у цей файл у Блокноті.
  3. Збережіть новий текстовий файл і перейменуйте його в hosts.
  4. Скопіюйте ( не переміщуйте ) файл у свій %SystemRoot%\System32\drivers\etcкаталог та перезапишіть старий файл.

Останній пункт важливий: копіювання працює, переміщення не робить.

Локальний Usersобліковий запис повинен мати можливість читати файл хостів . Щоб переконатися (у Windows 7):

  1. Перейдіть до %SystemRoot%\System32\drivers\etcПровідника Windows.
  2. Якщо ви не бачите hostsфайл, переконайтеся, що ви можете бачити приховані та системні файли .
  3. Клацніть правою кнопкою миші на hostsфайл та виберіть Propertiesіз контекстного меню.
  4. У hosts Propertiesвікні натисніть на Securityвкладку.
  5. Вивчіть список імен у Group or user names:полі. Якщо %COMPUTERNAME%\Usersвін присутній, натисніть на нього, щоб переглянути дозволи.
  6. Якщо Usersнемає або є, але не має Readдозволу, натисніть Edit....
  7. Якщо Usersйого немає, клацніть Add..., введіть Users, натисніть Check Namesкнопку ОК або натисніть клавішу Enter.
  8. Виберіть Usersі переконайтеся Read & execute, що у Allowстовпці встановлено прапорець . Натисніть кнопку ОК. Якщо з'явиться Windows Securityвікно попередження, виберіть Yesпродовження.
  9. Клацніть OK, щоб закрити hosts Propertiesвікно.
  10. Перейдіть до розділу 1 цієї відповіді та дотримуйтесь вказівок, щоб перевірити, чи працює він зараз.

6. Кодування

Файл хостів повинен бути закодований в ANSI або UTF-8 без BOM. Це можна зробити за допомогою Файл -> Зберегти як.

7. Проксі

Якщо у вас налаштований проксі, він може обійти файл хостів. Рішення полягає в тому, щоб не використовувати проксі-сервер або конфігурувати його, щоб цього не робити.

Щоб перевірити, перейдіть до свого браузера Internet Explorer -> Параметри Інтернету -> З'єднання -> Установки локальної мережі. Якщо все порожньо і встановлено прапорець "Автоматично визначати налаштування", ви не використовуєте проксі.

Якщо ви покладаєтесь на проксі-сервер для доступу до Інтернету і тому не хочете його відключати, ви можете додати винятки, перейшовши до Internet Explorer -> Параметри Інтернету -> З'єднання -> Налаштування локальної мережі -> Проксі-сервер / Додатково. Потім додайте свої винятки до текстового поля "Винятки". Напрlocalhost;127.0.0.1;*.dev

8. DNS-адреса

(Це також може вирішити проблеми з проксі.)

Перейдіть до властивостей мережевих з'єднань, потім налаштування TCP / IP та змініть перший DNS-сервер на 127.0.0.1(localhost). Друге, мабуть, має бути вашим фактичним IP-адресою DNS.

Це не обов'язково для роботи файлу хостів , але це може допомогти у вашому випадку, якщо щось настроєно дивним чином.

9. .локальні адреси

Якщо ви використовуєте запис домену .local у формі myhost.local і він ігнорується, будь ласка, спробуйте наступне

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

навіть якщо www.myhost.local не існує. Windows якось не додає свою робочу групу або локальнийдомен.


3
ДЯКУЙТЕ ТАКОЖ СУЧАСНІЙ! Я майже плачу, так що багато наших з глузду з’їжджаються на ПРОСТОРУ, коли починається пустий запис між двома рядками. Дякую Дякую Дякую Дякую Дякую !!!!!

1
Інша проблема полягає в тому, що 64-бітні версії Windows переспрямовують папку System32 для 32-бітних програм (наприклад, Блокнот ++), тому при збереженні файлу відображається в папці SystemWOW64 замість System32. Найкращий спосіб вирішити лише використання версії Windows Notepad, яка є 64-розрядною. Другим найкращим є підключення до адміністративної частини (\\ ваше ім'я машини \ c $ \ Windows \ System32 \ драйвери \ тощо), щоб відкрити файл, якщо ви використовуєте 32-розрядний редактор.
Тім Льюїс

4
Хороший пост, але з парою помилок. 1) "Автоматичне виявлення налаштувань" в IE може призвести до (навіть несвідомо) використання проксі, якщо ваша мережа фактично забезпечує автоконфігурацію проксі. 2) Зміна ваших DNS-серверів у мережевих налаштуваннях не має нічого спільного з тим, як / коли / якщо використовується hostsфайл, а його зміна на 127.0.0.1 - це фактично помилка, якщо ви фактично не працюєте на сервері DNS на своєму комп’ютер.
Массімо

1
№5 (створення нового файлу та його копіювання) зробив для мене трюк. Win7 може бути смішним з дозволами.
chris

1
Я редагував файл хостів під Cygwin за допомогою vim, я думаю, це спричинило припинення роботи мого файлу хостів. Мені довелося створити новий файл і скопіювати вміст попереднього файлу хостів, і це виправлено.
forloop

16

Переконайтеся, що ви поставили спершу ipaddress, а потім "домен" таким чином:

127.0.0.1   bo.dev
127.0.0.1   www.bo.dev

6
Я вважаю за краще використовувати один рядок:127.0.0.1 bo.dev www.bo.dev ftp.bo.dev
Xhynk,

1
Обережно, файл хостів Windows дозволяє лише дев'ять чи менше записів на рядок! Це мене покусало і зайняло час, щоб розібратися.
andrew

Не використовуйте .devTLD локально, думаючи, що у вас не буде зіткнень. Це дійсний загальний глобальний TLD, що належить Google, і ви отримаєте багато проблем з його використанням. Дивіться ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts
Патрік Мевзек

Помилка новачка, але це спрацювало. До! у них було ім'я назад, тоді IP
ransems

11

Додайте перевірку дозволів на файл. Я виявив, що хоча я мав права місцевого адміністратора на комп'ютер і, таким чином, на хости. Лише я не додав місцевих користувачів до дозволів файлів хостів із Read and Read & Execute, а потім ipconfig / flushdns, що хости стали активними.


3
Це було все! Мене ця проблема вражає роками . Я додав (machine)\USERSз прочитаним і Read & стратити дозволу і після того, як ipconfig /flushdnsвін працював. Дуже дякую. Я дуже радий, що нарешті мої хости подають файл назад.
Климент Черлін

7

У своїх випадках я спробував створити файл Windows 7: C: \ Windows \ System32 \ driver \ 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.

Як результат, Windows ігнорує налаштування на C: \ Windows \ System32 \ driver \ etc \ hosts і використовує їх з hosts.ics.


1
На support.microsoft.com/en-us/kb/309642/en-us , який є давнім, тому, можливо, більше не точним: "Файл Hosts.ics використовується ICS для зберігання інформації про динамічно налаштованих клієнтів. Уникайте змін у цей файл, щоб запобігти втраті підключення або даних. Файл хостів (без розширення імені файлу) - це файл, до якого ви додаєте інформацію про статично налаштованих клієнтів. " Отже, Я НЕ очікував, що Windows ігнорує Hostsфайл лише тому, що Hosts.icsвін присутній. Щось ще може змусити Windows ігнорувати ваші файли Hosts, як-от, можливо, неправильне (але приховане) розширення.
Ар'ян

1
Я бачу цю інформацію. Але я не знаю, чому мені вдалося змусити хостів працювати лише я редагував hosts.ics. Перш ніж редагувати hosts.ics, я спробував усі методи з цієї теми, але хости не працюють.
Unick

Дякую! Ти врятував мені життя. Працював у Windows 10
Xatenev

3

У мене виникла та сама проблема, записи файлів хостів ігноруються. Я спробував усе в цій та багатьох інших темах не пощастило. Я подумав, що опублікую те, що працювало для мене, якщо хтось інший натрапив на це.

  1. Відкрийте Провідник Windows як адміністратор
  2. ВИДАЛИТИ файл хостів
  3. Відкрийте блокнот як адміністратор і створіть новий файл хостів
  4. Почніть з нуля і додайте записи.
  5. Переконайтесь, що у файлі хостів немає розширення .txt

Примітка: просто відкрити файл хосту та видалити вміст, переконавшись, що він 0 кб, і повторно додати його не працює. Я підозрюю, що у файлі є проблема дозволів.


швидка примітка - при зміні системних файлів (наприклад, файлів хостів) доцільно спочатку створити резервну копію. Щоб уникнути втрати даних, замість цього подумайте про перейменування існуючого файлу хостів, як hosts.bak, а потім продовжуйте, як ви описуєте на кроці 3.
nshiff

1

На це витратили години, мабуть, дні.

Захист IBM Trusteer Endpoint Rapport може спричинити цю проблему.

Я додав mysite.com до свого списку надійних сайтів.

Я вважаю, що як частина її безпеки це запобігає перенаправленню зловмисних програм або вірусів на альтернативні сайти.

Я взяв загальний перелік довірених сайтів, і він більше не перевіряє та "виправляє" мою передачу файлів хостів.

Сподіваємось, що хтось допоможе вирішити їх проблему.


1

Переконайтеся, що ви ввели значення як IP NAME, а не як NAME IP.

Це може статися, якщо у файлі є, скажімо, лише один запис, і якщо ви проігноруєте текст коментаря.


1

Одна проблема, пропущена в обговоренні вище, - це некваліфіковані імена (імена, які не містять крапки) у файлі хостів. Ваші мережеві налаштування можуть вступити в цей момент і автоматично додати свій власний домен до кінця некваліфікованого домену. Отже, ім'я може не вирішуватись, а ще гірше - вирішувати зовсім інший апарат.


0

У вікнах переконайтесь, що HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Параметри \ DataBasePath вказано на каталог файлів хостів.


0

У моєму випадку проблема полягала в тому, що я копіював файл хостів із зашифрованого каталогу та переосмислював і т.д. / хости з цим. Довелося переглянути властивості та зніміть прапорець "Зашифрувати файл".


0

Мій файл хостів ігнорується, поки я не встановлю мережеве з'єднання на своєму (Windows 7) ноутбуці. Після підключення до мережі все працює як очікувалося. Очевидно, що без мережі я не можу пінг-хостів тощо, але я все ж очікував, що Windows отримає їх IP-адреси з файлу хостів. Це не так. Навіть після відключення він все ще шукає адреси ОК, але між перезавантаженням комп'ютера та першим підключенням до мережі він ігнорує файл хостів.

(Між іншим, вкладки, пробіли та відсутність повернення каретки - це все не має значення, наскільки я можу сказати).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.