Разрешение доменных имён в Linux
Прежде чем мы перейдём к самому файлу hosts, нужно разобраться, как происходит поиск IP-адреса для доменного имени в Linux. Я говорил, что операционная система сразу же отправляет запрос DNS-серверу, но это не совсем так. Существует определённый порядок поиска, согласно которому он выполняется. Этот порядок установлен в конфигурационном файле /etc/nsswitch.conf
cat /etc/nsswitch.conf
Здесь нас интересует строчка hosts. В ней в порядке очередности записаны службы, которые используются для поиска IP-адреса для доменного имени. Пункт files означает использование файла /etc/hosts, а dns — сервиса доменных имён интернета. Если files расположена перед hosts, это означает, что сначала система попытается найти домен в /etc/hosts, а уже потом по DNS. По умолчанию дело обстоит именно так.
Что такое файл хостов Linux?
Файл hosts – это простой текстовый файл, который все операционные системы используют для преобразования имен хостов (также известных как веб-адреса или URL-адреса) в IP-адреса. Когда вы вводите имя хоста, например wikipedia.org, ваша система просматривает файл hosts, чтобы получить IP-адрес, необходимый для подключения к соответствующему серверу.
Если вы откроете файл hosts, вы быстро заметите, что в нем нет каталога всего Интернета. Вместо этого может быть всего пара строк, и все. Что дает?
Оказывается, ваша система сначала проверит файл hosts, прежде чем искать сайт на DNS-серверах, определенных в настройках вашей сети (обычно это DNS-серверы вашего интернет-провайдера).
Это означает, что вы можете использовать файл hosts для добавления к тому, что DNS-серверы не могут предоставить (например, псевдонимы для местоположений в вашей локальной сети, что в противном случае возможно только в том случае, если у вас есть DNS-сервер, настроенный в вашей локальной сети) или переопределить IP-адреса, которые обычно предоставляют ваши DNS-серверы.
Например, если вы запросите wikipedia.org, DNS-серверы вернут IP-адрес Википедии на ваш компьютер. Но если вы хотите заблокировать Википедию на этом компьютере, вы можете добавить запись в файл hosts, которая сообщает вашему компьютеру, что wikipedia.org указывает на какой-то другой IP-адрес, отличный от фактического IP-адреса Википедии.
До того, как DNS появился в сети, этот файл содержал все имена хостов и IP-адреса для всего Интернета. Системные администраторы периодически загружали обновленные копии этого файла из центрального репозитория. Даже к началу 1980-х администраторы были почти неспособны следить за тем, как все больше и больше хостов подключались к сети, даже когда сеть все еще была в основном ограничена университетами и исследовательскими лабораториями, поэтому была создана DNS.
Это сделало файл hosts в значительной степени устаревшим при работе с общедоступным Интернетом или даже с несколькими машинами, но он идеально подходит для управления вашим локальным компьютером и небольшой локальной сетью, такой как ваш Wi-Fi.
В настоящее время этот файл обычно имеет имя хоста, которое вы выбрали для компьютера Linux при его установке, и определенный локальный хост, который является минимумом, необходимым для использования сети.
Возможные проблемы с файлом Hosts
Итак, мы выяснили, как вносить изменения в файл хоста, но при использовании Google Chrome вы все равно можете столкнуться с проблемами. Этот веб-браузер имеет тенденцию игнорировать файл hosts, если вы не выполните одно из двух возможных действий:
- Введите http: // в начале каждого адреса. Например, если у вас заблокирована Википедия в файле hosts, Chrome обойдет блокировку, если вы просто введете wikipedia.org в адресную строку. Однако, если вы введете http: //wikipedia.orgin в адресную строку, он будет следовать за файлом hosts.
- Отключите параметр « Использовать веб-службу для устранения ошибок навигации » в настройках Chrome, и тогда вам не придется каждый раз вводить http: // в начале. Это один из нескольких советов по обеспечению конфиденциальности в Google Chrome, которые все равно стоит выполнить.
Редактирование файла /etc/hosts
Редактировать файл /etc/hosts нужно осторожно, чтобы ничего не испортить, так как это системный файл и важно не нарушать его синтаксис. Откройте файл для редактирования, для этого выполните в командной строке:
Sudo gedit /etc/hosts
Sudo gedit /etc/hosts
Содержимое файла выглядит примерно следующим образом:
127.0.0.1 localhost::1 mycomp localhost6.localdomain6 localhost6
127.0.1.1 mycomp
# The following lines are desirable for IPv6 capable hosts::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
…
Синтаксис у файла /etc/hosts очень простой:
IP-адрес имя-хоста
Добавим в файл новые строки для разных сайтов:
74.125.232.19 google.ru g
94.100.191.203 mail.ru m
194.186.36.211 rbc.ru r
87.250.250.11 yandex.ru y
Сохраните и закройте файл. Мы прописали соответствия между IP адресами, именами сайтов и их псевдонимами. Теперь перейдите в браузер и в адресной строке введите просто «g», должен открыться сайт google.ru. Чтобы открыть mail.ru введите просто «m», для rbc.ru — просто «r», yandex.ru — «y».
Система доменных имен DNS используется для определения, какой IP принадлежит к нужному домену в сети интернет. Когда какой-либо программе понадобится обратиться к сайту по его доменному имени, операционная система отправляет к DNS-серверу запрос, чтобы узнать, по какому IP ей дальше передавать пакеты. Но так происходит не всегда. Например, когда мы обращаемся к домену localhost, то всегда запрос отправляется нашему локальному компьютеру.
Всему причиной файл hosts. Если вы раньше пользовались Windows, то, наверное, уже слышали о таком файле. Там чаще всего он использовался для того, чтобы быстро заблокировать доступ к какому-либо ресурсу. Но применение его гораздо шире. В этой статье мы рассмотрим, как настроить файл hosts в Linux, а также какие возможности он нам предоставляет.
Как добавить сайты в файл Hosts
В файле hosts у каждой записи есть своя строка. Синтаксис прост. Введите IP-адрес, на который нужно преобразовать имя хоста, нажмите клавишу TAB на клавиатуре, а затем введите имя хоста.
Например, чтобы заблокировать Википедию, вы должны ввести (не забывая использовать клавишу Tab, а не пробел ):
127.0.0.1 – это IP-адрес обратной петли, который всегда будет указывать на вашу собственную систему. Поскольку Интернет не хранится на вашем компьютере, ваш браузер сообщит, что сайт не может быть найден. Теперь он эффективно заблокирован.
Если терминал вас пугает, попробуйте приложение «Блокировщик доменов» Linux Mint (также известное как mintnanny ). Он добавит в файл hosts записи, указывающие на указанные вами имена хостов на 127.0.0.1. Но чтобы сделать что-нибудь еще, вам все равно придется вносить изменения в текстовом редакторе.
Скачать: Блокировщик доменов (бесплатно)
Настройка файла hosts в Linux
Нужный нам файл находится в директории /etc/. Для его открытия можно использовать любой текстовый редактор как в командной строке, так и в графическом интерфейсе, только открывать его нужно с правами суперпользователя. Например, с помощью vim:
sudo vi /etc/hosts
sudo gedit /etc/hosts
Синтаксис файла довольно простой. В нём находится несколько строчек с доменными именами и IP-адресами, которые нужно для них использовать. Каждая из них выглядит вот так:
ip_адрес
домен алиас
Обычно первая же строчка создаёт правило для перенаправления всех запросов к домену localhost на локальный IP-адрес — 127.0.0.1:
127.0.0.1 localhost
Также в этом файле по умолчанию размещаются перенаправления для имени вашего компьютера и для IPv6-адресов. Вы можете создать свои настройки для любого нужного домена. Для этого нужно добавить строчку в конец файла. Например, направим все запросы к домену losst.ru на ip 127.0.0.1:
127.0.0.1 losst.ru
Обратите внимание, что здесь указывается только домен, без протокола. Префикс http или https указывать не нужно, иначе ничего работать не будет
А вот для поддомена www нужно создавать отдельную запись или записывать его в виде алиаса. Например:
127.0.0.1 losst.ru www.losst.ru
Теперь при запросе домена losst.ru будет открываться наш локальный IP. Чтобы вернуть доступ к оригинальному ресурсу, достаточно убрать добавленную строчку. Но вы можете использовать не только локальный адрес, но и любой другой. Это очень удобно, если вы только зарегистрировали домен и доменная зона ещё не успела обновиться, а вы уже хотите работать с новым сайтом. Просто добавьте данные в /etc/hosts и работайте как обычно.
Как узнать IP адрес сайта
Теперь нам нужно определить IP адреса сайтов, которые мы хотим добавить в /etc/hosts. Стоит отметить, что не все сайты имеют отдельный выделенный IP адрес и получить к ним доступ только по IP адресу нельзя. Но почти все крупные сайты и порталы имеют свой выделенный IP адрес. Простой способ узнать IP адрес сайта это использовать командну ping:
Ping адрес-сайта.ru
Например, выполним:
ping yandex.ru
На экране отобразится процесс пинга (чтобы прервать нажмите Ctrl+C). Итак, мы получим вывод команды ping вида:
PING yandex.ru (87.250.250.11) 56(84) bytes of data.
64 bytes from yandex.ru (87.250.250.11): icmp_seq=1 ttl=57 time=3.57 ms
…
Здесь видно, что yandex.ru соответствует IP адресу 87.250.250.11. Аналогично, выполняем для других сайтов.
Создать ярлыки в файле Hosts
Другой способ использования файла hosts – создание легко запоминающихся имен машин в небольшом офисе или домашней сети.
Если у вас есть компьютер в вашей домашней сети (скажем, с IP-адресом 192.168.1.10), на котором есть простой веб-сайт или файловый сервер, который делает что-то полезное для вас, вы можете ввести следующее в свой файл hosts:
Затем, если вы откроете браузер и просто наберете:
Ваш компьютер будет автоматически перенаправлен на 192.168.1.10. Это намного проще, чем искать IP-адрес. Вы можете навсегда назначить IP-адрес любому устройству в вашей сети, используя меню конфигурации вашего Wi-Fi роутера.
Кроме того, вы можете использовать файл hosts для создания ярлыков для определенных сайтов в Интернете. Используйте такую команду, как nslookup, чтобы найти IP-адрес веб-сайта, затем добавьте его в файл хостов вместе с желаемым ярлыком, как в примере выше. Поскольку большинство крупных веб-сайтов имеют несколько IP-адресов, это может не работать на таких сайтах, как Google или Netflix.
Расположение файла хоста Linux
В Linux вы можете найти файл hosts в / etc / hosts . Поскольку это простой текстовый файл, вы можете открыть файл hosts с помощью предпочитаемого вами текстового редактора.
Поскольку файл hosts является системным файлом, вам потребуются права администратора для сохранения изменений. Чтобы отредактировать файл с помощью текстового редактора на базе терминала Linux, такого как nano, вам потребуется доступ суперпользователя.
Например:
Чтобы использовать графический текстовый редактор, например gedit:
Закончив редактирование файла, выйдите из редактора. В nano нажмите Ctrl + X , а затем y, чтобы подтвердить перезапись изменений. Перед редактированием рекомендуется сохранить резервную копию файла, чтобы можно было восстановить его в случае ошибки, поскольку это может помешать доступу к сети.
Чтобы сделать резервную копию файла hosts, просто сделайте его копию. Вы можете добавить суффикс, например .old, чтобы помнить, что это старая копия файла: