Устал отвечать на вопросы: "что такое файл hosts?", и "с чем его едят?"...
hosts - текстовый файл, содержащий базу данных доменных имен и используемый при их трансляции в сетевые адреса узлов. Запрос к этому файлу имеет приоритет перед обращением к DNS-серверам. В отличие от DNS, содержимое файла контролируется администратором компьютера.
Как это было...
В далекие времена, когда Интырнеты были маленькие, а компутеры большие, аки шкафы, было создано несколько сетей. Среди них Arpa, Chaos ну и другие. Естественно встал вопрос о нумерации компьютеров в сети, который был решен средствами сетевых протоколов. Изначально, когда сеть была малого размера, доступ к компьютерам сети мог осуществляться по сетевому адресу (например по ip). Далее, с ростом сети, это стало неудобно, и потребовалась замена стандартной схемы. Поэтому сетевыми администраторами была придумана система hosts. Был создан файл, в котором в явном виде указывалось соответствие сетевого адреса адресу мнемоническому. Это нововведение значительно упростило жизнь пользователей, ведь теперь не надо было запоминать эти многочисленные цифры, а достаточно иметь такой файлик у себя. Однако подобный файл с ростом сети стал просто огромным и и плохо оптимизированным, т.е. для того, чтобы все пользователи сети узнали о новом сервере с адресом, например, 193.232.159.144 под именем music.ru, необходимо было разослать всем участникам сети этот файл и вручную добавить описание нового хоста к файлу. С ростом сети сделать это было все сложнее и сложнее, а когда запросы на добавление стали приходить несколько раз в час, то и просто невозможно. От традиционной системы пришлось отказаться, и была разработана система доменных имен - DNS.
Однако, стоит отметить, что файл hosts никуда не пропал. Даже на сегодняшний день он присутствует в большинстве операционных систем. В Unіх-системах путь к нему /etc/hosts. В продуктах Microsoft он доступен по адресу: C:\WINDOWS\system32\drivers\etc\hosts.В данном файле в прямое соответствие выставляются ip-адрес и доменное имя. Пример файла hosts:
Итак, сначала идут комментарии (начинаются со знака "#"). Ну а дальше - уже идут записи, описывающие соответствия IP-адрес<-> имя. У меня только одна запись - 127.0.0.1 - localhost. Эта запись указывает на то, что адрес обратной петли отвечает имя localhost.
Однако, ничего не запрещает добавить в hosts, например, такую запись:
93.158.134.11yandex.ru
В этом случае, все запросы на yandex.ru будут постоянно перенаправляться на IP-адрес 93.158.134.11. Записи в файле hosts имеют первоочередной приоритет при преобразовании имени в IP.
Попробуем разобраться, почему это происходит. Ни для кого не секрет, что при попытке расшифровки имени, DNS-client компьютера обращается изначально к кешу DNS, в котором информация о предыдущих преобразованиях хранится некоторое время. Это время задается либо в записи SOA для всего доменного имени, либо отдельно для каждой зоны (для MX-записи может быть одно, для А-записи - другое...). Запись в файле hosts это время делает бесонечно большим, т.е. эта запись хранится постоянно и не изменяется.
Отображение и очистка кеша DNS
Попробуем более подробно разобраться, что такое кеш DNS. Это информация, о соответствии IP-адрес<-> имя, которая хранится в памяти устройства. Для чего это нужно? Рассмотрим на простом примере... Воспользуемся утилитой ping, которая посылает ICMP-пакеты "поверх" IP-протокола, и получает их обратно (при этом используются различные метки).
Однако, когда даем команду "ping yandex.ru", компьютер должен сначала выполнить преобразование DNS-имени yandex.ru в IP-адрес 93.158.134.11. Кеш DNS нужен для того, чтобы каждый раз не делать запросов на разрешение доменного имени в IP-адрес заново.
Если выполнить команду ping, как в примере, то если бы не было кеша DNS, процедуру преобразование DNS-имени yandex.ru в IP-адрес необходимо было бы выполнить 10 раз. Также стоит иметь ввиду, что DNS-сервера провайдера тоже кешируют информацию на период времени, указанный в SOA-записи домена.
Для просмотра локального DNS-кеша на компьютере под управлением OS Windows воспользуемся коммандой ipconfig с ключем displaydns:
Этот список и есть локальный DNS-кеш, где параметр "Срок жизни" - это время в секундах, которое запись еще будет храниться.
Чтобы сбросить кеш, необходимо использовать ключ flushdns. После выполнения "ipconfig -flushdns" будет сброшен весь кеш DNS, исключая записи, указанные в файле hosts.
Что это нам дает?
Озникомившись с информацией, необходимо взять ее "на вооружение". В основном возможность использования файла hosts пригодится веб-мастерам и системным администраторам. Довольно удобно использовать файл hosts при переносе хостинга или других операциях, где необходимо эмулировать запросы к DNS-имени.
Также стоит иметь ввиду, что в файл hosts довольно часто добавляют информацию вредоносные программы, блокируя доступ к сайтам обновлений антивирусных программ. Так что, если антивирус не обновляется - проверьте первым делом файл hosts.