Система доменных имен DNS используется для определения, какой IP принадлежит к нужному домену в сети интернет. Когда какой-либо программе понадобится обратиться к сайту по его доменному имени, операционная система отправляет к DNS-серверу запрос, чтобы узнать, по какому IP ей дальше передавать пакеты. Но так происходит не всегда. Например, когда мы обращаемся к домену localhost, то всегда запрос отправляется нашему локальному компьютеру.
Всему причиной файл hosts. Если вы раньше пользовались Windows, то, наверное, уже слышали о таком файле. Там чаще всего он использовался для того, чтобы быстро заблокировать доступ к какому-либо ресурсу. Но применение его гораздо шире. В этой статье мы рассмотрим, как настроить файл hosts в Linux, а также какие возможности он нам предоставляет.
Содержание статьи
Разрешение доменных имён в Linux
Прежде чем мы перейдём к самому файлу hosts, нужно разобраться, как происходит поиск IP-адреса для доменного имени в Linux. Я говорил, что операционная система сразу же отправляет запрос DNS-серверу, но это не совсем так. Существует определённый порядок поиска, согласно которому он выполняется. Этот порядок установлен в конфигурационном файле /etc/nsswitch.conf
cat /etc/nsswitch.conf
Здесь нас интересует строчка hosts. В ней в порядке очередности записаны службы, которые используются для поиска IP-адреса для доменного имени. Пункт files означает использование файла /etc/hosts, а dns - сервиса доменных имён интернета. Если files расположена перед hosts, это означает, что сначала система попытается найти домен в /etc/hosts, а уже потом по DNS. По умолчанию дело обстоит именно так.
Настройка файла hosts в Linux
Нужный нам файл находится в директории /etc/. Для его открытия можно использовать любой текстовый редактор как в командной строке, так и в графическом интерфейсе, только открывать его нужно с правами суперпользователя. Например, с помощью vim:
sudo vi /etc/hosts
Или gedit:
sudo gedit /etc/hosts
Синтаксис файла довольно простой. В нём находится несколько строчек с доменными именами и IP-адресами, которые нужно для них использовать. Каждая из них выглядит вот так:
ip_адрес домен алиас
Обычно первая же строчка создаёт правило для перенаправления всех запросов к домену localhost на локальный IP-адрес - 127.0.0.1:
Также в этом файле по умолчанию размещаются перенаправления для имени вашего компьютера и для IPv6-адресов. Вы можете создать свои настройки для любого нужного домена. Для этого нужно добавить строчку в конец файла. Например, направим все запросы к домену losst.pro на ip 127.0.0.1:
Обратите внимание, что здесь указывается только домен, без протокола. Префикс http или https указывать не нужно, иначе ничего работать не будет. А вот для поддомена www нужно создавать отдельную запись или записывать его в виде алиаса. Например:
Теперь при запросе домена losst.pro будет открываться наш локальный IP. Чтобы вернуть доступ к оригинальному ресурсу, достаточно убрать добавленную строчку. Но вы можете использовать не только локальный адрес, но и любой другой. Это очень удобно, если вы только зарегистрировали домен и доменная зона ещё не успела обновиться, а вы уже хотите работать с новым сайтом. Просто добавьте данные в /etc/hosts и работайте как обычно.
Выводы
В этой небольшой статье мы разобрали, как выполняется настройка DNS через файл hosts Linux. Как видите, с его помощью вы можете блокировать доступ к нежелательным ресурсам, например, к которым программы не должны получить доступ, а также использовать его в работе веб-мастера.
vi предлагаете тем, кто не знает что такое hosts?
Мдя. 🙂
Запустить vim-то они запустят... а, вот, как они из него выходить будут?
Изредка почему-то пробивает на "ха-ха".
"Как пользоваться Vim" - прямо перед глазами как только на страничку попадаешь. Справа крупная плашка оранжевого цвета 🙂
Хотя согласен, vi не самая простая вещь для новичков.
Рискну предложить чё попроще
sudo nano -g /etc/hosts
Я тоже считаю vim не лутшим вариантом поентому sudo pluma /etc/hosts
Мне кажется последнее время статьи ну слишком уже глупые, ну просто совсем. Выглядит как домашняя работа школьника.
вам не кажется... :)))
Будьте терпимее. Linux изучают люди с разным уровнем подготовки. Я лично благодарен автору этого сайта. Человек тратит свое личное время. Благодаря таким сайтам я окончательно перешел на Linux. То, что год назад казалось непонятным, сейчас воспринимается элементарным.
"Если files расположена перед hosts"
Что за hosts такой?
"Благодаря таким сайтам я окончательно перешел на Linux."
То есть, на Linux Вы перешли исключительно ради его изучения?
Единственная развлекуха в линукс, это изучать линукс. (с)
> Например, с помощью vim:
> sudo vi /etc/hosts
Ну и где здесь vim?
Вы хоть читаете, то что пишите?
Наберите в терминале команду:
sudo vi /etc/hosts
Вы будете неприятно удивлены. Откроется редактор vim.
Отличная статья, врядле в хосты надо тому кто с редакторами не знаком.
Автору + в Карму !
открыл vim еле закрыл
Здравствуйте. Мне нужно сравнить файлы с 3 виртуальных машин, находящихся по одному адресу /home/user/test. IP адреса необходимо брать из файла /etc/hots.
Не найду информацию, как именно через hosts подключаться
"То есть, на Linux Вы перешли исключительно ради его изучения?"
Какой логикой вы руководствовались генерируя сей сопрос?
Ну, налетели холиварщики и нарциссы.
Вполне годная статья, особенно, как быстрая справка для начинающих.
Автору спасибо.
Неплохо аффтар, тока лучше так пипсать: sudo nano /etc/hosts ато не фсе знают шо за vim тфкой а тем паче vi. А есче расскажи про то, как в nano копировать выделенный блок в буфер обмана и фставлять оттуда обратно т.к Ctrl+C и Ctrl+V в >>NANO<>>MICRO<<< поставить (с micro будет так: sudo micro /etc/hosts), там как раз все это канает: Ctrl+C, +V, +S, +Q и к стати -=}MICRO{=- есть для MS Windows тоже и в нем все есть, что нужно для редактирования, не только простого текста, но и кроссплатформенного кода, если говорить про GNU/Linux и MS Windows, про MAC не знаю=))))
Аффтар - Респект! А какие программы есть для аффтаматического бана трекеров и всяких прочих вредоносов, например со стороны твоего провайдера в файле hosts? Да и что означают файлы /etc/hosts.allow и /etc/hosts.deny?