Тариф успешно добавлен в корзину
В корзину
url image

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

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

Что такое файл hosts и зачем он нужен

В современном интернете для обращения к сетевым ресурсам обычно используются доменные имена. Например, чтобы посетить сайт, мы просто вводим в адресной строке браузера его имя. Но у сервера, обслуживающего запросы посетителей, есть только IP-адрес. Поэтому в компьютерных сетях используется система соответствия доменных имён IP-адресам, которая называется DNS (Domain Name System).

Но строго говоря, для адресации узлов сети использовать DNS не обязательно. Например, в одной из первых компьютерных сетей ARPANET в начале семидесятых годов прошлого века было всего несколько сотен устройств, и для их описания достаточно было одного текстового файла HOSTS.TXT. После появления системы DNS в 1984 году инженеры решили сохранить в системе файл hosts, который по сей день играет важную роль в работе с сетью.

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

Где находится файл hosts

В Windows

По умолчанию файл hosts находится в папке C:\Windows\system32\drivers\etc:

Расположение файла hosts в Windows

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

Чтобы убедиться, что этого не произошло, можно открыть редактор реестра Windows и найти в нём параметр HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath:

Просмотр редактора реестра Windows

Как видите, на исследуемом компьютере путь не подменён.

В macOS

В macOS файл hosts расположен в каталоге /private/etc/hosts, найти его можно с помощью приложения Finder:

Расположение файла hosts в macOS

В Linux

Файл hosts в Linux находится в папке /etc:

Расположение файла hosts в Linux

Как внести изменения в файл hosts

В Windows 7, 10, 11

Нosts — простой текстовый файл, поэтому открыть его можно в любом текстовом редакторе, например, в блокноте: 

Стандартный файл hosts в Windows

Как видите, все строки в этом файле закомментированы знаком #. Формат значащих записей очень простой — каждая строка представляет собой пару IP-адрес — доменное имя, разделённую пробелами или табуляцией. Например, мы видим строку:

127.0.0.1    localhost

Она задаёт соответствие локального адреса IPv4 127.0.0.1 имени localhost. Строка: 

::1 localhost

Сопоставляет имя локального хоста адресу IPv6. Таким образом можно определить соответствие любого IP-адреса любому домену.  Каждому IP-адресу можно сопоставить несколько доменных имён, например:

1.2.3.4    example.ru    www.example.ru

Для того, чтобы внести изменения в файл hosts, нужно запустить его от имени администратора:

Запуск файла от имени администратора

Теперь Блокнот позволит сохранить изменения в файле.

Но давайте убедимся, что эта система работает. Для этого в приложении Windows PowerShell выполним команду ping www.ru, проверяющую наличие связи с указанным хостом:

Проверка работы системы в PowerShell

Как видим, домену www.ru сопоставлен IP-адрес 31.177.80.70. Теперь давайте добавим в конец файла hosts строку, сопоставляющую какой-нибудь несуществующий домен, например example.ru, с полученным адресом:

31.177.80.70    example.ru

Если после сохранения файла hosts запустить команду ping example.ru, мы увидим, что система уже связала наш тестовый домен с указанным IP-адресом вымышленного сайта:

Это означает, что если набрать в адресной строке браузера имя example.ru, мы попадём на сайт www.ru:

Конечно, зайти на реальный сайт, работающий по защищённому протоколу HTTPS, в этом случае не получится, так как в браузере сработают защитные механизмы системы безопасности, но мы убедились, что система работает, как ожидалось.

Наш эксперимент показал, что запись в файле hosts имеет приоритет перед системой DNS и Windows использует именно её. Если говорить точнее, записи из файла hosts попадают в кеш DNS, и при наличии нужной записи система просто не запрашивает реальные DNS-серверы. Давайте проверим это, выполнив команду ipconfig /displaydns:

Отображение содержимого DNS кеша

До внесения изменений в файл hosts информация была другой:

В этом можно убедиться, удалив или закомментировав добавленную строку и снова выполнив команду ping.
Подробнее о проверке файла hosts можно прочитать в статье «Проверка сайтов после переноса».

В macOS

Отредактировать файл hosts можно, например, введя в Терминале команду sudo nano /etc/hosts:

Редактирование файла hosts в macOS

Эта команда позволяет открыть редактор nano с правами администратора. После внесения изменений можно нажать сочетание клавиш Command+O для сохранения и Command+X — для выхода. 

В Linux

Для редактирования текстовых файлов файлов в Linux можно использовать любой текстовый редактор, открыв его с правами администратора, например, sudo nano /etc/hosts:

Редактирование файла hosts в Linux

Если хотите, вместо консольного nano можно использовать редактор с графическим интерфейсом, например, gnome-text-editor или kate, запустив его с правами администратора:

sudo <your editor> <hosts file>

Блокировка доступа к сайту через файл hosts

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

127.0.0.1   youtube.com

После этого любые обращения к сайту youtube.com будут невозможны. Если вам нужно заблокировать несколько доменов, их имена можно указывать в этой же строке через пробел или табуляцию, а также использовать отдельные строки. Но нужно помнить, что использовать подстановочные знаки (*) в файле hosts нельзя, при необходимости все поддомены нужно указать явно.

Как восстановить оригинальный файл hosts

Лучший способ сохранить оригинальный файл перед внесением изменений — сделать его резервную копию. Мы рекомендуем просто скопировать исходный файл, например, под именем hosts.orig. Но если вы этого не сделали — ничего страшного, просто откройте текущий файл hosts с правами администратора и замените его содержимое такими строками:

Для macOS:

127.0.0.1   localhost

255.255.255.255    broadcasthost

::1    localhost

Для Linux:

127.0.0.1    localhost

::1    localhost

Для Windows этот файл может быть пустым.

Полное содержимое файла hosts вместе с комментариями приведено в этой статье в разделе «Редактирование файла hosts» для вашей операционной системы.

Также важно помнить, что файл hosts  — не единственное средство, которым может быть изменена привязка IP-адреса к домену на локальном компьютере, поэтому если после чистки hosts связь с сайтом по прежнему не работает, то, вероятно, на вашем устройстве установлена дополнительная служба, переопределяющая работу системы DNS.

Кроме того, настоятельно рекомендуем вам быть внимательными и аккуратными при работе с файлом hosts и не вписывать в этот и другие системные файлы данные из непроверенных источников. Помните, что от этого зависит ваша информационная безопасность.

Заключение

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

Удачи в работе!

Этот материал был полезен?

Скидка 25% новым клиентам!
Закажи сервер сегодня и получи скидку на первый месяц аренды!