Файл host linux. Как настроить виртуальные хосты в Ubuntu или Debian
Работая в других OC вы может уже и знаете где находится файл hosts, но перейдя на Ubuntu Linux, вы можете немного потеряться где данный файл находится и как его редактировать.
Что такое файл hosts? Где он находится в Ubuntu и как его редактировать, вам интересно, читаем материал ниже.
HOSTS - это текстовый файл, который содержит базу данных доменных имен и используется для их трансляции в сетевые адреса узлов. Запрос к этому файлу играет очень важную роль и имеет очень высокий приоритет перед обращением к DNS-серверам. В отличие от DNS который обновляется от 30 минут до 2-3 суток, содержимое файла контролируется администратором компьютера и может обновляться в любой момент при необходимости.
Работая в других OC, вы может уже и знаете где находится файл hosts, но перейдя на любую другую, например Ubuntu Linux, вы без подсказки будете долго искать, а где данный файл находится и как его редактировать.
- C:\WINDOWS\system32\drivers\etc - в Windows
- /etc/hosts - В Ubuntu
Для открытия файла hosts на редактирование в Ubuntu, откройте терминал (CTRL+ALT+T) и выполните команду:
Sudo gedit /etc/hosts
после чего данный файл откроется в стандартном редакторе удобном для редактирования, стандартное содержимое файла:
127.0.0.1 localhost 127.0.1.1 your-pc # The following lines are desirable for IPv6 capable hosts::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Если вы хотите прописать нужный вам домен и айпи, можете писать сразу же после второй строки в самом начале файла, прописав все необходимое, нажмите в редакторе Gedit кнопку сохранить и готово, компьютер перезагружать не нужно.
Файл hosts имеет следующий формат:
{IP - IP адрес узла} {Название хоста - имя узла в домене}.{Домен - доменное имя} {Алиас - определяет дополнительное имя узла}
Более подробную информацию по работе с файлом hosts вы можете получить выполнив в терминале команду man hosts .
Пример записи:
193.109.247.234 linuxsoid.com 88.212.202.38 li.ru
вот так все просто, вносим изменения, сохраняем и готово, будут вопросы, спрашивайте в комментариях к материалу.
Система доменных имен 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
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 и работайте как обычно.
Выводы
В этой небольшой статье мы разобрали, как выполняется настройка DNS через файл hosts Linux. Как видите, с его помощью вы можете блокировать доступ к нежелательным ресурсам, например, к которым программы не должны получить доступ, а также использовать его в работе веб-мастера.
Я говорил, что напишу про то как настроить виртуальные хосты в Ubuntu и изменить каталог для размещения сайтов. Ну вот, пишу.
В интернете много написано о виртуальных хостах и о том, как их настроить. Но где-то информация устаревшая, где то на половину рабочая. В итоге процедура, которая занимает от силы пять минут, растягивается на несколько часов. У меня та было. Поэтому, для того, чтобы снова не тратить много времени в следующий раз, когда мне это понадобится я и пишу эту статью.
Настройка корневого каталога для сайтов
По умолчанию Apache ищет интернет страницы в /var/www/html . Но для пользователя это может быть неудобно. Поэтому при желании корневой каталог можно сменить. Я например, для своих сайтов буду использовать папку public_html в домашнем каталоге. Кроме того, я сразу же создам папку для тестового сайта testsite.loc и непосредственно папку, в которой будут находится файлы сайта www . То есть нужно создать такую структуру каталогов: /public_html/testsite.loc/www/ . Можно сделать это через файловый менеджер, можно через терминал:
Mkdir -p public_html/testsite.loc/www
Сразу создаем простую тестовую страницу index.html
Привет!!
И сохраняем ее в папку www.
Теперь редактируем файл виртуального хоста 000-default.conf , чтобы указать Apache где мы теперь размещаем сайты:
Sudo gedit /etc/apache2/sites-available/000-default.conf
В открывшимся файле находим строчку, которая начинается с DocumentRoot и меняем путь на новый: /home/user/public_html/ . Где user — ваше имя пользователя.
Сохраняем файл и закрываем редактор.
Внесем изменения в файл настроек apache2.conf :
Sudo gedit /etc/apache2/apache2.conf
Добавляем в открывшийся файл такой блок:
Опять же, не забываем заменить user на свое имя пользователя. Сохраняем файл.
Создаем файл конфигурации нового хоста. Для этого скопируем стандартный файл 000-default.conf и переименуем его на testsite.conf :
Sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/testsite.conf
Теперь отредактируем его:
Sudo gedit /etc/apache2/sites-available/testsite.conf
Для удобства можно удалить все закомментированные строки (которые начинаются с #)
Добавляем «ServerName testsite.loc»
Добавляем «ServerAlias www.testsite.loc»
В DocumentRoot указываем путь к каталогу с файлами сайта.
Сохраняем изменения.
И включаем сайт:
Sudo a2ensite testsite.conf
Перезагружаем Apache:
Service apache2 reload
Файл hosts
Для того, чтобы перенаправлять запросы браузера на наш сервер. Отредактируем файл hosts:
Sudo gedit /etc/hosts
В первой строке через пробел, рядом с localhost дописываем домены нашего сайта testsite.loc и www.testsite.loc
Сохраняем изменения
Можем проверить результат нашей работы. Набираем в браузере адрес нашего сайта — testsite.loc .
Права на папки
Сервер Apache работает от группы и пользователя www-data . В домашнем каталоге же, владелец файлов текущий пользователь. Поэтому, чтобы не возникало проблем, нужно на файлы и папки внутри public_html и на ее саму изменить права. Для этого вводим в терминале.
Файл hosts используется для локальной установки соответствия между IP адресом и доменом. Расположенная в нём информация имеет наивысший приоритет и распространяется только в пределах компьютера, на котором этот файл изменялся.
Видео о работе с файлом hosts
Где находится файл hosts?
Найти файл hosts в системе не составит никакого труда.
В случае данный файл расположен в следующей директории:
/etc/hosts
В случае Windows:
C:/Windows/System32/Drivers/etc/hosts
В путь расположения файла hosts можно изменить в реестре, доступ к которому можно получить через редактор regedit . Запустить его можно следующими способами:
1) Пуск -> Выполнить -> regedit -> OK ;
2) Windows + R -> regedit -> ОК .
Интересующая нас запись реестра располагается в:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\DataBasePath
- Открываем параметр DataBasePath и в поле Значение указываем новый путь.
Как должен выглядеть файл hosts?
По-умолчанию в чистой системе в файле hosts не указываются никакие значения, а присутствуют исключительно закомментированные строки (начинаются с символа «# ») с описанием файла.
Некоторое программное обеспечение может вносить свои изменения в файл hosts, например, для указания, с какого сервера необходимо скачивать обновления.
Как изменить файл hosts?
- Открываем hosts в каком-либо доступном в системе текстовом редакторе. Для Windows подойдет стандартный «Блокнот» либо «Wordpad».
- Опускаемся в конец файла и вводим значения в следующем порядке:
- После внесения изменений сохраняем файл.
- Ниже представлен пример указания для домена yourdomain.tld IP-адреса 127.0.0.1 .
Проверить внесенные изменения на функциональность можно введя указанный домен браузере, либо пропинговав его в командной строке.
Как сохранить файл hosts?
Иногда возникает ситуация, что файл hosts не сохраняется и все внесенные изменения не работают. Возникает это в нескольких случаях:
- Отображается ошибка «Отказано в доступе» (либо англоязычный вариант — You don’t have permissions). Вам нужно проверить, что вы открываете файл с правами суперпользователя (администратора). Поскольку это системный файл, его не могут менять пользователи, которым не присвоены права администратора.
- Файл сохраняется в неверном формате, например, hosts.txt. В первую очередь нужно проверить, имеется ли возможность в текстовом редакторе указать, чтобы файл сохранился без расширения. Если же нет, вам нужно включить в настройках системы отображение расширений файлов, сохранить файл в формате.txt, а затем изменить его имя, предварительно удалив старый файл hosts.
Как закомментировать строку в hosts?
Для комментирования строки используется символ «# », который устанавливается в её начале и таким образом действие записи в этой строке прекращается. Этот способ удобен в случае, если какая-либо запись может потребоваться в дальнейшем, либо необходимо добавить текст с описанием. Также, комментарий можно вставлять и не в начале строки, а, например, после записи IP и домена.
Система доменных имен DNS используется для определения, какой IP принадлежит к нужному домену в сети интернет. Когда какой-либо программе понадобится обратиться к сайту по его доменному имени, операционная система отправляет к DNS-серверу запрос, чтобы узнать, по какому IP ей дальше передавать пакеты. Но так происходит не всегда. Например, когда мы обращаемся к домену localhost, то всегда запрос отправляется нашему локальному компьютеру.
Всему причиной файл hosts. Если вы раньше пользовались Windows, то, наверное, уже слышали о таком файле. Там чаще всего он использовался для того, чтобы быстро заблокировать доступ к какому-либо ресурсу. Но применение его гораздо шире. В этой статье мы рассмотрим, как настроить файл hosts в 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
sudo gedit /etc/hosts
Синтаксис файла довольно простой. В нём находится несколько строчек с доменными именами и IP-адресами, которые нужно для них использовать. Каждая из них выглядит вот так:
ip_адрес домен алиас
Обычно первая же строчка создаёт правило для перенаправления всех запросов к домену localhost на локальный IP-адрес - 127.0.0.1:
127.0.0.1 localhost
Также в этом файле по умолчанию размещаются перенаправления для имени вашего компьютера и для IPv6-адресов. Вы можете создать свои настройки для любого нужного домена. Для этого нужно добавить строчку в конец файла..0.0.1:
127.0.0.1 сайт
Обратите внимание, что здесь указывается только домен, без протокола. Префикс http или https указывать не нужно, иначе ничего работать не будет. А вот для поддомена www нужно создавать отдельную запись или записывать его в виде алиаса. Например:
127.0.0..сайт
Теперь при запросе домена сайт будет открываться наш локальный IP. Чтобы вернуть доступ к оригинальному ресурсу, достаточно убрать добавленную строчку. Но вы можете использовать не только локальный адрес, но и любой другой. Это очень удобно, если вы только зарегистрировали домен и доменная зона ещё не успела обновиться, а вы уже хотите работать с новым сайтом. Просто добавьте данные в /etc/hosts и работайте как обычно.
Выводы
В этой небольшой статье мы разобрали, как выполняется настройка DNS через файл hosts Linux. Как видите, с его помощью вы можете блокировать доступ к нежелательным ресурсам, например, к которым программы не должны получить доступ, а также использовать его в работе веб-мастера.
Об авторе
Основатель и администратор сайта сайт, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux интересуюсь всем, что связано с информационными технологиями и современной наукой.