Как настроить dns вместо использования hosts

linux на сервере → Настраиваем девелоперский DNS сервер

Рассмотрим эволюцию организации работы веб-разработчика с несколькими проектами на разных адресах и поможем поскорее перескочить через первые ступеньки!

Все на localhost

Когда ты в одиночку разрабатываешь один единственный веб-сервис или сетевое приложение, то, как правило, вполне хватает локального домена localhost. Но что происходит, когда появляется необходимость разрабатывать и поддерживать одновременно два или более совершенно разных приложения? Сперва ты пытаешься рассовывать разные приложения по подпапкам одного домена вроде http://localhost/app1/ http://localhost/app2/ и т.д. Ок, при более-менее простых приложениях такой вариант еще может работать. Но когда возникает необходимость в привязке приложения к корню сайта в относительных внутренних ссылках, когда необходимы специфические настройки веб-сервера (например специфические реврайт-правила), то сложность и запутанность полученной системы крайне резко возрастает, начинают появляться различные баги и замедляется процесс разработки.

Файл hosts

Позже, изрядно помучавшись с однодоменным расположением проектов, вдруг узнаешь про существование волшебного файлика hosts ( /etc/hosts) с помошью которого можно создавать для себя дополнительные «локалхосты», т.е. получаем возможность любое конкретное доменное имя направить на любой конкретный IP адрес. Отлично! Теперь можно разнести все свои «локалхосты» по отдельным «поддоменам» типа app1.loc app2.loc просто прописав в /etc/hosts ( WINDOWS\system32\drivers\etc\hosts для виндов) всего пару строк
127.0.0.1 app1.loc
127.0.0.1 app2.loc
Выглядит просто и понятно, все записи под рукой, можно легко добавить и удалить нужный домен, изменения, как правило, вступают в силу мгновенно. В принципе этим можно ограничиться если у тебя не так много проектов, меняются они нечасто и ты работаешь над ними неторопясь и ОДИН. Но есть у такого подхода 2 существенных недостатка:

  1. Для того чтобы к имени app1.loc добавить поддомен, например static.app1.loc допустим, для хранения статических файлов, приходится создавать в файле hosts дополнительную запись типа 127.0.0.1static.app2.loc т.к. hosts файл не поддерживает wildcard формы записи — прописать в нем 127.0.0.1*.app1.loc нельзя!
    Такую ситуацию еще можно терпеть если у вас действительно нужно добавить всего 1-2 поддомена, но что, если ваше приложение предоставляет своим пользователям отдельные поддомены? http://user.app1.loc, http://pi_es.seriyps.ru/, http://seriyps.habrahabr.ru/ ? Отладка такого проекта с использованием файла hosts становится практически невыполнимой задачей. Опять же при росте количества проектов файл hosts забивается мусором и в нем становится трудно что-то найти.
  2. Если вы разрабатываете ваше приложение не в одиночку а целым офисом, в котором стоит девелоперский веб-сервер, то для того чтобы дать коллеге ссылку на домен из вашего файла hosts вам как минимум нужно будет убедиться что этот адрес есть и в его файле hosts. Согласитесь, это даже звучит смешно!

Свой девелоперский DNS сервер

Ну вот мы и добрались до самого праведного способа организации разработки интернет-приложения для доменов — это использование своего DNS сервера. Имеется в виду конечно не «каждому девелоперу — по DNS серверу» а установка централизованного DNS сервера для офиса. Хотя даже для единоличной разработки свой DNS все равно удобнее hosts файла хотя бы из за наличия wildcards. Собственно преимущества такого подхода очевидны:

  1. Проект разрабатывается в той среде, в которой он будет использоваться в продакшене. Никаких посторонних файлов и настроек веб-сервера как в случае с расположением проектов в поддиректориях localhost
  2. Настоящие доменные ЗОНЫ со всеми типами записей в т.ч. и wildcard. @, *, MX, CNAME и пр.
  3. Все пользователи, прописавшие себе этот DNS (а если он включается автоматом по DHCP то все еще больше упрощается) смогут открывать ваши ссылки не задумываясь «a прописал-ли я ее себе в hosts файл..»
Читайте также:  Как настроить блокировку экрана редми 9

Устанавливаем и настраиваем DNS сервер.

Вступление у меня получилось длинным а само описание настройки выглядит куда скромнее, и это весьма символично.. Ведь, как оказалось, настроить простой DNS сервер с одной девелоперской зоной можно за 5 минут а откладывать на потом это можно бесконечно долго. Давайте наконец приступим!

Настройка простейшей dev зоны для DNS сервера BIND9 (named) на Ubuntu/Debian

Т.к. мы настраиваем DNS для небольшой сети «для своих», можно пренебречь некоторыми мерами безопасности. Например, мы не будем запускать bind в chroot окружении и не будем ограничивать подключение к ним с различных IP. К тому же для named уде при установке создаются вполне приемлемые правила для apparmor.
Для начала установим сам bind

В Ubuntu/Debian конфигурационные файлы Bind хранятся в директории /etc/bind, файлы, создаваемые при работе Bind хранятся в /var/cache/bind , главный конфигурационный файл bind находится по адресу /etc/bind/named.conf . В принципе, все опции можно вносить в него, но рекомендуется использовать для этого подключаемые файлы: named.conf.options — для настроек сервера и named.conf.local — для добавления зон. Таким образом нас интересуют именно эти файлы. Кстати, их синтаксис похож на C код, поэтому даже можно использовать подсветку синтаксиса C. Приступим:
Открываем файл /etc/bind/named.conf.options и приводим его содержимое к виду

directory — указывает на директорию, в которой хранятся файлы сервера, такие как кеш, в forvarders можно добавить адреса DNS серверов вашего провайдера для кеширования их ответов и таким образом несколько сократить сетевые издержки на DNS запросы. Существует еще куча опций, но в нашем простейшем сервере они не нужны.
Прекрасно, общие настройки сделаны. Уже сейчас можно использовать наш сервер в качестве кеширующего DNS. Но нас интересует возможность создания и администрирования собственной зоны!
Открываем /etc/bind/named.conf.local и пишем в него

type master означает что мы являемся единственным авторитетным источником информации о зоне dev, file указывает на расположение файла с информацией о зоне. Остается только создать этот файл
/etc/bind/db.dev

Не забывайте ставить завершающие точки в имени домена!
Сохраняем, заставляем bind перечитать конфигурацию

В случае возникновения каких-то проблем смотрим syslog — как правило bind сообщает об ошибках именно туда.
Понятно что таким-же образом можно создавать или переопределять любые другие зоны — добавляется блок zone в named.conf.local и создается соответствующий файл с информацией зоны.

Использование DNS сервера

Сервер есть, осталось его подключить!

Ubuntu

Если вы не пользуетесь NetworkManager-ом, то достаточно в самое начало файла /etc/resolv.conf прописать ваш DNS сервер.
Если NetworkManager используется, открываем «Изменить соединения», выбираем нужное соединение (проводное, VPN, etc), открываем вкладку «Параметры IPv4» и заменяем «Автоматически (DHCP)» на «Автоматически (DHCP, только адрес)», затем в поле «Серверы DNS» вписываем первым IP вашего DNS сервера и дальше через запятую ip адреса из /etc/resolv.conf
Переподключаем сеть.

Windows

В свойствах соединения в настройках TCP/IP прописываем первым наш DNS и после DNS провайдера.

Источник

Настройка файла /etc/hosts

С помощью файла hosts на вашем компьютере можно настроить соответствие между доменом и конкретным IP-адресом.

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

Узнать, к какому IP идет запрос в данный момент при обращении к домену, можно с помощью команды ping — работа с ней подробнее описана здесь.

Еще один вариант использования настройки в hosts — запрет доступа к тому или иному сайту с вашего компьютера. К примеру, если домену facebook.com прописать в hosts некорректный IP (скажем, 127.0.0.1), то перейти на данный сайт с вашего компьютера будет невозможно.

Читайте также:  Zte mf 112 не работает

Сама настройка очень простая: достаточно указать в файле нужный IP-адрес, а через пробел от него — доменное имя. Вносить изменения необходимо от имени администратора.

Windows

Если система устанавливалась по умолчанию на диск C, файл будет находиться по пути:

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

Вариант 1.

Запустить командную строку (нажать Win+R, в появившемся окне набрать cmd и нажать ОК) и выполнить в ней команду ниже:

Файл hosts будет открыт в блокноте, и вы сможете внести необходимые изменения и сохранить их.

Вариант 2.

Перейти в «Мой компьютер» -> Локальный диск С -> Windows -> System32 -> drivers -> etc либо вставить нужный путь в адресную строку проводника:

В папке etc кликните правой кнопкой мыши на файле hosts, выберите «Открыть с помощью» и далее выберите «Блокнот»:

Как правило, файл выглядит следующим образом:

Введите необходимый IP и домен, например, 92.53.96.120 mydomain.com:

Сохраните изменения. Для этого выберите «Файл» — «Сохранить». В открывшемся окне выберите «Все файлы» и нажмите «Сохранить».

Замените mydomain.com на указанный вами домен.

Если все настройки корректны, в выводе команды будет отражен IP-адрес, указанный в файле hosts.

Linux

Откройте терминал и выполните команду ниже:

Она позволит открыть файл hosts для редактирования с правами суперпользователя. Если в вашей системе не установлен редактор nano, можно воспользоваться любым другим (gedit, vi и т.д.).

Как правило, содержимое файла выглядит следующим образом:

Введите необходимый IP и домен после второй строки, например:

Сохраните изменения (в nano — нажатием Ctrl+O, далее Ctrl+X) и проверьте настройки, выполнив в терминале:

Если все настройки корректны, в выводе команды будет отражен IP-адрес, указанный в файле hosts.

MacOS

Запустите программу Терминал / Terminal. Ее можно найти через Spotlight / Finder.

Выполните в терминале команду:

Далее введите ваш пароль пользователя.

В файле под уже имеющимися записями укажите нужный IP и домен, например:

Сохраните изменения и закройте редактор. Это можно сделать сочетанием клавиш ⌘ и Y, после чего нажать Enter для подтверждения.

Для проверки вы можете выполнить в терминале команду:

Если все сделано верно, в выводе команды будет отражен IP-адрес, который вы указали в файле hosts.

Источник

Не ждем обновления DNS, редактируем файл hosts

Сначала небольшая предыстория. Я тут сегодня занимался переносом блога wordpress inside на новый хостинг. «Олимпийский» конкурс закончился, срок заказанного хостинга как раз приближался к своему завершению, уже даже 2 уведомления поприходило относительно продления. В одной из статей про хостинг для блога я упоминал украинскую компанию, с которой более-менее плотно работаю. Речь идет о HostPro, где есть тарифы для размещения 8-9 сайтов с 8-9 гигами места под них, неограниченным числом БД и трафика. Так вот на одной из таких учетных записей у меня есть парочка свободных мест – почему бы не захостить там wordpress inside:)

Обновление 30.03.2020: Кстати, правка hosts также позволяет создать сайт без домена на хостинге, когда в ходе веб-разработки у клиента пока не зарегено никакое имя. В данном случае в этом файле тестовый домен привязывается к реальному веб-серверу.

Перенос сайта начал несколькими днями раньше – с домена. Поскольку Mchost является партнером ООО Регтайм (webnames), где у меня тоже есть партнерская запись, то решил передать домен под свой контроль. Как же меня убивает их тех. поддержка, за последний год отправил им около 5-6 писем с вопросами – ни одного ответа! Приходят только сообщения от бота о продлении доменов. Вот еще закинул им сканы на подтверждение доменов, а то вроде как 1-го апреля заканчивается срок, хотя никто из компании ничего не говорит и не требует. В ответ — тишина.

Читайте также:  Что делать если не работает монитор самсунг

Но сегодня хотел рассказать немного о другом:) Без предыстории пост получился бы вообще мизерным, поэтому решил поделиться некоторыми наблюдениями. Про перенос wordpress блогов напишу еще небольшой пост на wordpress inside для начинающих.

Итак, вернемся все же к DNS и файлу hosts. Вообще DNS – это система доменных имен, которая привязывает конкретный IP адрес хостинга к доменному имени. Если вы только зарегистрировали новый домен или осуществляете переезд сайта / блога, то при этом производится редактирование DNS записи, где указывают новые данные для домена. Фишка в том, что данный процесс обновления DNS может занимать определенное время – от нескольких минут, до пары часов. Один раз у меня он обновлялся вообще больше суток. Не знаю от чего это зависит, возможно, от действий хостера, если смена производится вручную или еще от каких-то других условий, но иногда бывают ситуации, когда обновление DNS вам нужно как можно быстрее.

Вообще перенос блога дело хлопотное немного в плане временных затрат – пока скопируешь базу данных, файлы хостинга, проходит определенное время, а ты сидишь и смотришь как тают драгоценные минуты:) А тут еще ждать обновления DNS. Но есть один метод дабы не тратить время впустую.

На компьютере в операционной системе Windows есть файл hosts. Это текстовый файл, который также содержит базу доменных имен, при этом использует их при трансляции в сетевые адреса узлов (так по умному говорит Википедия).

Особенность файла hosts в том, что он имеет приоритет перед обращением к DNS-серверам и самое главное – вы можете запросто менять этот файл!

У меня на компьютере (Vista / Win7) файл hosts находится по адресу C:\Windows\System32\drivers\etc. Он не имеет никакого расширения, но запросто редактируется блокнотом. Синтаксис файла предельно прост – сначала пишете IP адрес, а затем доменное имя, например:

Если хотите чтобы данное значение не использовалось, можете поставить перед ним символ решетки # — означает, что строка является комментарием.

После редактирования сохраняем файл и заходим по нужному доменному имени – теперь, по идее, вы должны попадать на нового хостера. Для проверки можно зайти в меню «Выполнить» для винды и написать там что-то вроде:

ping wordpressinside.ru –t

А в открывшемся окошке посмотреть, что обращение производится к нужному IP.

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

Обновление 19.09.2010: В Windows Vista и Windows 7 может возникнуть проблема, когда после редактирования файла hosts, он не будет сохраняться. В «семерке», например, пишет, что файл используется другой программой, хотя такого не было. Кроме того, после просмотра свойств файла hosts вы увидите, что от записи он тоже не защищен. В данном случае вы можете править файл только под правами администратора, поэтому находите стандартный блокнот Notepad, открываете его через клик правой кнопкой мышки и в контекстном меню выбираете запуск программы с администраторскими правами.

Далее открываете в блокноте файл hosts, правите и без проблем сохраняете. Вот такой вот небольшой хак получается:)

Если у вас есть что дополнить или немного подправить, пишем в комментариях?

Источник

Оцените статью