Файл hosts: що це, де знаходиться і як його редагувати
Іноді сайт відкривається у всіх, окрім вас. Або навпаки - домен ще навіть не делеговано, а ви вже хочете перевірити, як на ньому стане новий сервер. В обох випадках відповідь часто ховається в одному маленькому текстовому файлі, про який згадують рідко, - у файлі hosts.
hosts - це простий текстовий файл, який зіставляє доменні імена з IP-адресами прямо на вашому комп'ютері або сервері, в обхід DNS. Грубо кажучи, це локальний записник адрес, до якого система зазирає раніше, ніж звертається до DNS-серверів.
Навіщо взагалі потрібен файл hosts
Коли ви відкриваєте у браузері будь-яку адресу, система спочатку має перетворити домен на IP. За замовчуванням цим займається DNS. Але перш ніж іти до DNS-сервера, ОС зазирає в локальний файл hosts. Якщо потрібний запис там є - система використовує його й до DNS взагалі не звертається.
Із цього виростає кілька цілком практичних сценаріїв.
- Перевірити новий сервер до перенесення DNS. Ви замовили VPS, розгорнули сайт, але домен ще вказує на старий хостинг. Прописавши в hosts зв'язку "домен - нова IP", ви побачите сайт на новому сервері тільки в себе, нічого при цьому не ламаючи для інших відвідувачів.
- Локально заблокувати домен. Вказавши для домену адресу або , ви закриваєте до нього доступ на конкретній машині - так працюють багато саморобних блокувальників реклами та батьківський контроль.
- Обійти зламаний або підмінений DNS. Якщо DNS-резолвер видає неправильну відповідь, тимчасовий запис у hosts дозволяє достукатися до сервісу напряму.
- Робота в локальній мережі та розробка. Зручно завести собі зрозумілі імена на кшталт для машин без публічних доменів.
Важливе застереження: hosts діє тільки на тій машині, де ви його редагуєте. Це не налаштування домену й не заміна DNS для всього світу - відвідувачі вашого сайту змін у вашому hosts не побачать.
Як виглядає файл hosts усередині
Вміст гранично простий. Кожен рядок - це IP-адреса, потім один або кілька пробілів (чи табуляція), потім доменне ім'я. Рядки, що починаються із символу , вважаються коментарями та ігноруються.
Тут - це завжди сам локальний комп'ютер (loopback), а - його ж адреса у форматі IPv6. Ці два рядки чіпати зазвичай не потрібно: на них зав'язана коректна робота системи.
Де знаходиться файл hosts
Шлях залежить від операційної системи. Сам файл усюди називається однаково - , без розширення.
| Операційна система | Шлях до файлу hosts |
|---|---|
| Windows | C:\Windows\System32\drivers\etc\hosts |
| Linux | /etc/hosts |
| macOS | /etc/hosts |
В усіх трьох системах для редагування hosts потрібні права адміністратора (root). Без них файл відкриється тільки на читання, і зберегти зміни не вийде.
Як відредагувати hosts у Windows
Головна складність у Windows - саме права доступу. Якщо відкрити файл звичайним подвійним кліком, відредагувати його не дадуть. Тому редактор потрібно запускати від імені адміністратора.
- Натисніть "Пуск", почніть вводити Блокнот.
- Клацніть по ньому правою кнопкою та виберіть Запуск від імені адміністратора.
- У Блокноті відкрийте файл через меню "Файл - Відкрити" та перейдіть за шляхом .
- У полі типу файлів виберіть "Усі файли", інакше hosts (він без розширення) просто не буде видно.
- Відкрийте , внесіть потрібні рядки та збережіть звичайним Ctrl + S.
Якщо під час збереження Windows усе одно скаржиться на доступ - майже напевно редактор було запущено не від адміністратора. Закрийте його та відкрийте заново правильним способом. В окремих випадках правки hosts може блокувати антивірус або Microsoft Defender, розцінюючи їх як потенційно небажані - тоді правку потрібно підтвердити в його сповіщенні.
Як відредагувати hosts у Linux
На сервері найпростіше працювати через SSH і консольний редактор nano. Команду потрібно виконувати від root або через .
Додайте потрібний рядок у кінець файлу, наприклад, щоб домен вказував на конкретний сервер:
Збережіть файл сполученням Ctrl + O та підтвердьте ім'я клавішею Enter, потім вийдіть із редактора через Ctrl + X. Зміни набувають чинності одразу, перезавантаження сервера не потрібне.
Альтернатива: додати рядок однією командою, без редактора
Іноді зручно дописати запис у hosts однією командою. Може виникнути спокуса скористатися перенаправленням , але не спрацює: перенаправлення виконує сама оболонка від вашого імені, а не від root. Тому беруть із прапорцем (від append) - він дописує рядок у кінець файлу від імені root. Без команда перезаписала б увесь файл.
Як відредагувати hosts у macOS
У macOS шлях той самий, що й у Linux. Відкрийте "Термінал" і виконайте:
Система запитає пароль адміністратора. Далі все так само: додаєте рядок, зберігаєте Ctrl + O, виходите Ctrl + X. Після правки в macOS іноді корисно скинути кеш DNS, щоб зміни підхопилися напевно:
Як перевірити, що запис у hosts працює
Після правки варто переконатися, що система справді перетворює домен на потрібну IP. Найпростіший спосіб - команда : у її виводі видно, на яку адресу йде запит.
Якщо у відповіді вказано ту IP, яку ви прописали в hosts, - запис застосувався. Урахуйте, що багато серверів не відповідають на ping (ICMP закритий фаєрволом), і це нормально: важливий саме рядок із перетворенням адреси, а не самі відповіді. На Windows для перевірки зручніший , але він показує відповідь DNS і hosts може ігнорувати - тому саме для hosts надійніше орієнтуватися на або на реальне відкриття сайту в браузері.
Якщо зміни не підхоплюються, очистіть кеш DNS. У Windows - командою у консолі, запущеній від адміністратора. У Linux це залежить від використовуваного резолвера (наприклад, або перезапуск ).
Безпека: чому hosts люблять віруси
Оскільки hosts перевіряється раніше за DNS, він стає ласою ціллю для шкідливого ПЗ. Класичний прийом фішингу - дописати в hosts рядок, який уводить банківський або поштовий домен на підроблену IP. Користувач набирає звичну адресу, а потрапляє на сайт-клон.
Тому є сенс час від часу зазирати у свій hosts. Якщо ви бачите там незнайомі рядки з відомими доменами (банки, соцмережі, пошта), яких ви туди не додавали, - це привід насторожитися та перевірити систему антивірусом.
Перед будь-якою правкою hosts корисно зберегти його копію. На Linux це одна команда: . Якщо щось піде не так, ви завжди повернете початковий стан.
Часті помилки під час роботи з hosts
- Файл збережено з розширенням. У Windows Блокнот любить додати , і виходить - такий файл система не читає. Ім'я має лишитися рівно , без розширення.
- Немає прав адміністратора. Найчастіша причина "не зберігається". Редактор має бути запущений від імені адміністратора (Windows) або команда виконана через (Linux/macOS).
- Зайві пробіли чи таби не розділяють IP і домен. Між адресою та ім'ям має бути хоча б один пробіл або табуляція. Зліплені разом працювати не будуть.
- Забули про кеш DNS. Іноді правка вірна, але стара відповідь ще закешована - допомагає скидання кешу та перезапуск браузера.
- Випадково видалили рядок localhost. Рядки та краще не чіпати: на них зав'язана робота системних сервісів.
Коротко про головне
Файл hosts - це локальна таблиця відповідності "домен - IP", до якої система звертається раніше, ніж до DNS. Він не налаштовує домен глобально та діє тільки на одній машині, але саме тому зручний: ним можна безпечно перевірити новий сервер до перенесення DNS, локально закрити доступ до домену або обійти збійний резолвер.
Якщо ви переносите проєкт на новий сервер і хочете перевірити його на своєму домені до зміни DNS, додайте в hosts зв'язку "ваш домен - IP нового VPS". Так ви переконаєтеся, що сайт коректно піднявся на новому майданчику, ще до того як пустите на нього реальних відвідувачів. Сервери SpaceCore з повним root-доступом дозволяють розгорнути та перевірити оточення саме за таким сценарієм - без поспіху та простою для користувачів.
Часті запитання
Чи потрібно перезавантажувати комп'ютер після правки hosts?
Ні. Зміни застосовуються одразу. Іноді потрібно лише закрити й відкрити браузер або скинути кеш DNS, якщо стара відповідь закешована.
Чи можна вказати одну IP для кількох доменів?
Так. Кожен домен пишеться окремим рядком з однією й тією самою IP, або кілька імен можна вказати в одному рядку через пробіл після адреси.
Чим відрізняється 127.0.0.1 від 0.0.0.0 під час блокування домену?
Обидва варіанти "відправляють" домен у нікуди на локальній машині. завертає запит на сам комп'ютер (і іноді спричиняє коротку затримку під час спроби з'єднання), а частіше призводить до миттєвої відмови. Для блокування зазвичай надають перевагу .
Чому запис у hosts не працює?
Найчастіше причина в одному з трьох: файл збережено без прав адміністратора, у нього з'явилося зайве розширення, або не скинуто кеш DNS. Перевірте ці три пункти насамперед.