Битлента
Сетевые команды и утилиты5 мин чтения·

Файл hosts: где он находится и как его изменить в Windows, macOS и Linux

Где лежит файл hosts в Windows, macOS и Linux, как безопасно его редактировать, как сбросить кэш DNS и для чего нужны записи с адресами.

Кратко

В Windows hosts лежит в папке C:\Windows\System32\drivers\etc, в macOS и Linux — /etc/hosts. Править его нужно с правами администратора: строка состоит из IP-адреса и имени. После правки сбросьте кэш DNS.

Где находится файл и как он устроен

Файл hosts — самый простой способ сопоставить имя и адрес на одном компьютере. Перед обращением к DNS-серверу система смотрит в него, и если находит нужное имя, сразу использует указанный адрес. Действует правило только для этой машины: на другие устройства сети запись не влияет.

СистемаПуть
WindowsC:\Windows\System32\drivers\etc\hosts
macOS/etc/hosts (на самом деле ссылка на /private/etc/hosts)
Linux/etc/hosts

Файл текстовый, без расширения. Формат: адрес, один или несколько пробелов или табуляция, имя, при необходимости дополнительные имена. Строка, начинающаяся со знака решётки, — комментарий. Пример (пример): строка 127.0.0.1 localhost, а также своя запись 192.168.1.50 nas.home. Подстановочных знаков и масок в файле нет: запись для example.com не сработает для поддомена с приставкой www, если вы не добавите его отдельной строкой.

В чистой системе там несколько комментариев и запись для localhost. Не удаляйте записи для localhost: на них рассчитывают многие программы.

Как отредактировать файл пошагово

Для сохранения нужны права администратора, иначе система откажет с сообщением о доступе.

  1. Сделайте резервную копию: в Linux и macOS sudo cp /etc/hosts /etc/hosts.bak; в Windows скопируйте файл в другую папку или под другим именем.
  2. Windows: найдите «Блокнот» в меню «Пуск», щёлкните правой кнопкой и выберите запуск от имени администратора, затем откройте файл через меню «Файл». В окне выбора установите показ всех файлов, иначе hosts не виден.
  3. macOS и Linux: откройте терминал и выполните sudo nano /etc/hosts либо sudo vi /etc/hosts. В nano сохранение через Ctrl и O, выход через Ctrl и X.
  4. Добавьте строку в конец файла: адрес, пробел, имя. Комментарий поставьте через решётку, чтобы через полгода помнить, зачем запись.
  5. Сохраните и убедитесь, что файл не получил расширение .txt: в Блокноте выбирайте тип «Все файлы».
  6. Сбросьте кэш DNS (см. ниже) и проверьте: ping имя должен показать указанный адрес.

Если Windows не даёт сохранить файл даже при запуске от администратора, чаще всего мешает антивирус, защищающий hosts от изменений: он видит попытку записи и блокирует её. В настройках защитной программы можно разрешить изменение вручную, но сначала убедитесь, что изменяете файл вы сами, а не вредоносная программа.

Сброс кэша после изменений

Система хранит результаты разрешения имён, и новая запись может не подействовать сразу. Команды зависят от системы.

  • Windows: ipconfig /flushdns в командной строке от имени администратора. Посмотреть кэш можно командой ipconfig /displaydns.
  • macOS: sudo dscacheutil -flushcache, затем sudo killall -HUP mDNSResponder. Точные команды могут зависеть от версии системы.
  • Linux: записи hosts читаются напрямую и обычно применяются сразу. Если служба кэширования есть, например systemd-resolved, выполните resolvectl flush-caches; для nscd работает его собственный сброс.
  • Браузеры держат собственный кэш имён и соединений. Если система уже применяет запись, а браузер нет, закройте и заново откройте его либо очистите внутренний кэш через страницу сетевых настроек браузера.

Проверьте результат командой ping имя или nslookup: имейте в виду, что nslookup и dig обращаются напрямую к DNS-серверу и не учитывают файл hosts. Поэтому «nslookup не видит мою запись» — обычное явление, а не признак ошибки. Ping и браузер файл учитывают.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Для чего обычно правят hosts

Законные и распространённые задачи такие.

  • Проверить сайт на новом сервере до переключения DNS: указываете адрес нового сервера для имени домена и открываете сайт, пока остальные пользователи видят старый.
  • Дать удобное имя устройству в домашней сети без настройки DNS на роутере, например для NAS или сервера.
  • Локальная разработка: имена вроде project.local для тестовой среды.
  • Исключить обращения программы к рекламному или отслеживающему адресу, сопоставив его с 0.0.0.0 или 127.0.0.1. Это работает только для точных имён и на одном устройстве.
  • Диагностика: временно направить имя на другой адрес, чтобы понять, виноват ли DNS.

Порядок неоднозначен только в тонких случаях: если для одного имени несколько строк, обычно применяется первая. Старайтесь держать файл в порядке и подписывать записи. После завершения тестирования удаляйте временные строки: забытая запись — частая причина того, что «сайт открывается на старом сервере» спустя месяцы.

Когда файл hosts вызывает проблемы

Если сайт вдруг открывается не тот или не открывается, а в браузере других устройств всё нормально, проверьте hosts на проблемном компьютере. Неожиданные записи для известных сайтов признак того, что файл изменила вредоносная программа: так пытаются перенаправить пользователя на поддельную страницу банка или магазина. В этом случае проверьте систему антивирусом, восстановите файл из резервной копии или приведите к стандартному виду и смените пароли.

Помните про IPv6: у записи может быть отдельная строка для адреса IPv6, и приложение будет использовать её в первую очередь. Проверьте, что нет расхождений между записями IPv4 и IPv6. Для корпоративных компьютеров изменения файла может запрещать политика безопасности, тогда обратитесь к администратору.

Проверка и отладка записей

После правки полезно убедиться, что запись действует, и понять, откуда система берёт адрес. Команда ping имя покажет адрес, на который ушёл пакет, и сразу подтвердит, применилась ли строка. В Windows можно дополнительно выполнить Resolve-DnsName имя в PowerShell: без параметра -DnsOnly командлет учитывает hosts, а с ним игнорирует, и различие результатов однозначно указывает на запись в файле. В Linux аналогичную роль играет getent hosts имя: она использует ту же цепочку, что и обычные программы, и выводит адрес из файла или из DNS.

Если после правки всё осталось по-старому, идите по списку. Проверьте, что строка не закомментирована решёткой в начале. Убедитесь, что между адресом и именем стоит пробел или табуляция и нет посторонних невидимых символов, которые появляются при копировании из документов. Проверьте орфографию имени и что вы правили именно тот файл, а не копию на рабочем столе. Сбросьте кэш системы и перезапустите браузер. Наконец, обратите внимание на то, что приложение может обращаться к серверу не по имени, а по адресу либо использовать собственный механизм разрешения имён, тогда hosts не поможет.

Для нескольких компьютеров дома проще настроить локальные имена на роутере, а hosts оставить для точечных задач на одном устройстве.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
hostsdnswindowslinux

Часто задаваемые вопросы

Читайте также