Включение и настройка DNS-сервера. Первичные и вторичные серверы

Руководство для системных администраторов

4. Установка BIND

Запуск вторичного DNS-сервера

Для надежности потребуется установить еще один DNS -сервер. Можно (рано или поздно многие так и поступают) установить более двух авторитетных DNS -серверов для локальных зон. Два DNS -сервера - это минимум, поскольку в случае, если есть только один сервер и он перестает работать, служба доменных имен для зоны перестает функционировать. Второй DNS -сервер делит нагрузку с первым сервером или принимает на себя всю нагрузку в случае аварии на первом сервере. Можно просто установить еще один основной DNS -сервер, но мы не рекомендуем этого делать. Вместо этого следует создать вторичный DNS -сервер. Позже, если вы не испугаетесь дополнительных усилий, которые нужно затратить, чтобы несколько первичных серверов могли дружно сосуществовать, то всегда сможете превратить вторичный сервер в первичный.

Мы копируем файлы /etc/named.conf, db.cache и db.127.0.0 на машину wormhole.movie.edu, а затем редактируем файл настройки, как описано выше. Файл настройки на узле wormhole.movie.edu выглядит теперь следующим образом:

options { directory "/var/named"; };

Протоколы DNS являются частью основных стандартов Интернета. Они определяют процесс, при котором один компьютер может найти другой компьютер на основе его имени. Реализация протоколов DNS означает, что сервер содержит все программное обеспечение, необходимое для создания запросов и ответов службы доменных имен.

Минимальные требования сохранения данных требуют для каждой доменной зоны, не менее двух DNS серверов. Первый сервер DNS называют первичный, он же primary, а по- новому master . Остальные сервера, а их может быть минимум один, а максимум 12, называют вторичные сервера DNS, или иначе secondary , по- новому, slave . По-новому, это начиная с DNS Bind 8-ой версии.

Примечание: BIND это программа для реализации протоколов системы доменных имен (DNS). Название BIND расшифровывается как «Berkeley Internet Name Domain», так как программное обеспечение возникла в начале 1980-х годов в университете Калифорнии в Беркли. В последние годы слово BIND стала больше, чем аббревиатура.

  • Первичный и вторичные DNS не обязательно должны находиться на домене, за который отвечают.
  • Первичный и вторичные DNS оба являются авторитативными серверами.

Первичный и вторичный DNS

Первичный (primary, master) сервер DNS

Master сервер DNS хранит полную, оригинальную базу данных своей доменной зоны. Данные хранятся в файлах.

При запросе к первичному серверу DNS, он дает авторитативный ответ, благодаря которому по домену находится IP ресурса.

Важно понимать, что только на master сервере можно вносить изменения в базу данных DNS. Повторюсь, только на первичном сервере DNS, хранится база данных доменных имен прикрепленной к серверу доменной зоны этого DNS.

Вторичные (secondary, slave) сервера DNS

Как я уже упомянул, для каждой доменной зоны должно быть создано или прикреплено минимум два сервера DNS. Именно минимум. Число вторичных серверов может быть до 12. В большинстве своем, такое количество вторичных серверов это перебор. Как правило, с запасом, достаточно трех вторичных DNS. Да вы и сами видели, что у любого регистратора доменных имен, не больше четырех полей для ввода адресов DNS серверов. Один для первичного сервера, три – для вторичных.

На вторичных DNS серверах база данных имен не храниться, она периодически считывается с первичного сервера, естественно по сети. Периодичность считывания, определяется в записи DNS типа SOA (параметр Refresh, в секундах). Обычно, 3600 секунд, то есть информация на вторичном сервере обновляется каждый час.

Обращу внимание, что считывать данные любой вторичный сервер может не только с первичного сервера, но и любого вторичного. В этом случае, этот сервер с которого считывается информация, будет master сервером для вторичного сервера.

Как лучше разместить первичный и вторичные DNS

Нужно понимать, если DNS сервер «падает», то все сайты, находящиеся в доменной зоне этого DNS падают тоже. Если падает первичный сервер, отвечать на запросы начинают последовательно вторичные DNS сервера. А вот тут и проблема, если все DNS сервера лежат в одной сети, то при падении этой сети, падают все DNS. Отсюда простой вывод, «не нужно хранить все яйца в одной корзине» или в нашем случае, нужно разнесите DNS сервера по разным хостам, а еще лучше по разным территориальным зонам.

Например, хостинг — провайдер предоставил вам два сервера DNS для вашего домена. Правильнее наоборот, он включил ваш домен в доменную зону своих DNS серверов. Найдите в Интернет, сервер вторичных DNS (платный или бесплатный) и дополните свои первичный и вторичный сервера, сторонними DNS серверами. Тем самым, вы обезопасите свой ресурс на случай падения DNS серверов провайдера.

С хотингами могут быть проблемы с добавлением сторонних DNS серверов. У каждого провайдера, своя «песочница» и он устанавливает свои правила. Некоторые хостинги ограничивают клиентов, только своими DNS. Другое дело если у вас, сервер VPS/VDS. Здесь вы полный хозяин и можете сами создавать DNS сервера на своем домене. И опять-таки, на VPS создайте два своих DNS сервера и дополните их двумя сторонними, и лучше разными, DNS серверами.

Где необходимо регистрировать DNS сервера

DNS сервера должны быть прописаны (зарегистрированы) на вашем хостинге или сервере и у регистратора доменных имен. На сервере вторичных доменных имен вы регистрируете только свой домен и берете их вторичные DNS. Независимо от места прикрепления, ваш домен и ваши DNS сервера должны быть зарегистрированы, а, следовательно, связаны:

  • У регистратора имен;
  • На вашем хостинге или сервере (раздел сервера DNS, управление DNS);
  • На сервере вторичных DNS (если используете).

Выводы

  • Для работы сайта, его домен должен попадать в доменные зоны, которые обслуживают, первичный и вторичные DNS сервера;
  • DNS серверов должно быть, как минимум два. Один первичный и один вторичный DNS. Для более надежной работы сайта, дополните два DNS сервера, еще двумя дополнительными вторичными серверами. Желательно третий и четвертый DNS сервера взять на разных хостингах.

Сервера вторичных DNS

Приведу несколько серверов, где можно взять вторичные DNS.

  • 2DNSinfo.ru (бесплатно);
  • www.mgnhost.ru/DNS-hosting.php (600 рублей в год за 100 зон);
  • http://toobit.ru/hosting/secondary_name_server.php (100 Slave DNS за 1$ в мес.);

При аренде сторонних первичных, да и вторичных DNS серверов, с осторожностью относитесь к импортным DNS хостингам. Попробуйте проверить время их отклика на запрос, для этого есть масса online сервисов. Нормальное время ответа на запрос DNS должен быт от 20 до 120 ms. Хоть у импортных хостингов и сервера разбросаны по всему миру, но, к сожалению, этот мир может быть настолько далеко от вас, что время отклика достигает 800-4000 ms. А это не хорошо.

Как проверить DNS сервера сайта

Для проверки своих и чужих DNS воспользуйтесь любым сервисом Whois – сервиса проверки доменных имен. При проверке не забывайте, что при смене DNS кэширующий сервер очищается каждые 24-72 часа.

Большинство пользователей Интернета знают, что DNS-сервер обеспечивает трансляцию имен сайтов в IP адреса. И обычно на этом знания про DNS-сервер заканчиваются. Эта статья рассчитана на более углублённое рассмотрение его функций.

Итак, давайте представим, что Вам придется отлаживать сеть, для которой провайдер выделил блок «честных» адресов, или настраивать поднимать в локальной сети свой DNS-сервер. Вот тут сразу и всплывут всякие страшные слова, типа «зона», «трансфер», «форвардер», “in-addr.arpa” и так далее. Давайте постепенно с этим всем и разберёмся.

Очень абстрактно можно сказать, что каждый компьютер в Интернете имеет два основных идентификатора – это доменное имя (например, www..0.0.1). А вот абстрактность заключается в том, что, и IP-адресов у компьютера может быть несколько (более того, у каждого интерфейса может быть свой адрес, вдобавок еще и несколько адресов могут принадлежать одному интерфейсе), и имен тоже может быть несколько. Причем они могут связываться как с одним, так и с несколькими IP-адресами. А в-третьих, у компьютера может вообще и не быть доменного имени.

Как уже было сказано раньше, основной задачей DNS-сервера является трансляция доменных имен в IP адреса и обратно. На заре зарождения Интернета, когда он еще был ARPANET’ом, это решалось ведением длинных списков всех компьютерных сетей. При этом копия такого списка должна была находиться на каждом компьютере. Естественно, что с ростом сети такая технология уже стала не удобной для пользователей, потому как эти файлы были больших размеров, к тому же их еще и нужно было синхронизировать. Кстати, некоторые такие «отголоски прошлого» этого метода можно еще встретить и сейчас. Вот так в файл HOSTS (и в UNIX, и в Windows) можно внести адреса серверов, с которыми вы регулярно работаете.

Так вот, на смену неудобной «однофайловой» системе и пришел DNS - иерархическая структура имен, придуманная доктором Полом Мокапетрисом.

Итак, есть «корень дерева» – “.” (точка). Учитывая то, что этот корень единый для всех доменов, то точка в конце имени обычно не ставится. Но она используется в описаниях DNS и это нужно запомнить. Ниже этого «корня» находятся домены первого уровня. Их немного - com, net, edu, org, mil, int, biz, info, gov (и пр.) и домены государств, например, ua. Еще ниженаходятся домены второго уровня, а еще ниже - третьего и т.д.

Что такое «восходящая иерархия»

При настройке указывается адрес как минимум одного DNS-сервера, но как правило, их два. Далее клиент посылает запрос этому серверу. Получивший запрос сервер, или отвечает, если ответ ему известен, или пересылает запрос на «вышестоящий» сервер (если тот известен), или сразу на корневой, так как каждому DNS-серверу известны адреса корневых DNS-серверов.
Затем запрос начинает спускаться вниз - корневой сервер пересылает запрос серверу первого уровня, тот - серверу второго уровня и т.д.

Кроме такой «вертикальной связи», есть еще и «горизонтальные», по принципу “первичный - вторичный”. И если допустить, что сервер, который обслуживает домен и работает «без подстраховки», вдруг становится недоступным, то компьютеры, которые расположены в этом домене, станут тоже недоступны! Вот потому то при регистрации домена второго уровня и предъявляется требование указывать минимум два DNS- сервера, которые будут обслуживать этот домен.

По мере дальнейшего роста сети Интернет все домены верхнего уровня были поделены на поддомены или зоны. Каждая зона представляет собой независимый домен, но при обращении к базе данных имен запрашивает родительский домен. Родительская зона гарантирует дочерней зоне право на существование и отвечает за ее поведение в сети (точно так же, как и в реальной жизни). Каждая зона должна иметь по крайней мере два сервера DNS, которые поддерживают базу данных DNS для этой зоны.

Основные условия для работы серверов DNS одной зоны - наличие отдельного соединения с сетью Интернет и размещение их в различных сетях для обеспечения отказоустойчивости. Поэтому многие организации полагаются на провайдеров Internet, которые ведут в их интересах вторичные и третичные серверы DNS.

Рекурсивные и нерекурсивные серверы

DNS-сервера могут быть рекурсивные и нерекурсивные. Разница в них в том, что рекурсивные всегда возвращают клиенту ответ, так как самостоятельно отслеживают отсылки к другим DNS-серверам и опрашивают их, а нерекурсивные – возвращают клиенту эти отсылки, и клиент должен самостоятельно опрашивать указанный сервер.

Рекурсивные сервера обычно используют на низких уровнях, например, в локальных сетях, так как они кэшируют все промежуточные ответы, и так при последующих к нему запросах, ответы будут возвращаться быстрее. А нерекурсивные сервера зачастую стоят на верхних ступенях иерархии, поскольку они получают так много запросов, что для кэширования ответов попросту не хватит никаких ресурсов.

Forwarders – «пересыльщики» запросов и ускорители разрешения имён

У DNS-серверов есть довольно полезное свойство – умение использовать так называемых «пересыльщиков» (forwarders). «Честный» DNS-сервер самостоятельно опрашивает другие сервера и находит нужный ответ. Но вот если ваша сеть подключена к Интернету по медленной линии (например, dial-up), то этот процесс может занять много времени. Поэтому можно перенаправлять эти запросы, например, на сервер провайдера, и после этого просто принимать его ответ.

Применение таких «пересыльщиков» может стать полезным для больших компаний, у которых есть несколько сетей. Так в каждой сети можно установить относительно слабый DNS-сервер, и указать в качестве «пересыльщика» более мощную машину с более быстрой линией. Вот и получится, что все ответы будут кэшироваться этим более мощным сервером, что приведёт к ускорению разрешение имен для целой сети.

Для каждого домена ведётся своя база данных DNS, которая выглядит как набор простых текстовых файлов. Они расположены на первичном (основном) DNS- сервере, и их время от времени копируют к себе вторичные сервера. А в конфигурации сервера указывается, какой файл содержит описания зон, а так же является ли сервер первичным или вторичным для этой зоны.

Уникальный адрес

Уникальный адрес в Интернете формируется добавлением к имени хоста доменного имени. Таким образом, компьютер, к примеру, “fred” в домене, к примеру, “smallorg.org” будет называться fred.smallorg.org. Кстати, домен может содержать как хосты, так и зоны. Например, домен smallorg.org может содержать хост fred.smallorg.org и в то же время вести зону acctg.smallorg.org, которая является поддоменом и может содержать еще один хост barney.acctg.smallorg.org. Хотя это и упрощает базу данных имен, однако делает поиск хостов в сети Internet более сложным.

В системе DNS реализуются три сценария поиска IP-адреса в базе данных.

  • Компьютер, которому необходимо получить соединение с другим компьютером в той же зоне, посылает запрос локальному DNS-серверу зоны на поиск IP-адреса удаленного компьютера. Локальный DNS-сервер, имеющий этот адрес в локальной базе данных имен, возвращает запрашиваемый IP-адрес компьютеру, который посылал запрос.

* Компьютер, которому необходимо получить соединение с компьютером в другой зоне запрашивает локальный DNS-сервер своей зоны. Локальный DNS-сервер обнаруживает, что нужный компьютер находится в другой зоне, и формирует запрос корневому DNS-серверу. Корневой DNS-сервер спускается по дереву серверов DNS и находит соответствующий локальный DNS-сервер. От него он получает IP-адрес запрашиваемого компьютера. Затем корневой DNS-сервер передает этот адрес локальному серверу DNS, который послал запрос. Локальный DNS-сервер возвращает IP-адрес компьютеру, с которого был подан запрос. Совместно с IP-адресом передается специальное значение - время жизни TTL (time to live). Это значение указывает локальному DNS-серверу, сколько времени он может хранить IP-адрес удаленного компьютера у себя в кэше. Благодаря этому увеличивается скорость обработки последующих запросов.

* Компьютер, которому необходимо повторно получить соединение с компьютером в другой зоне запрашивает локальный DNS-сервер своей зоны. Локальный DNS-сервер проверяет, нет ли этого имени в его кэше и не истекло ли еще значение TTL. Если адрес еще в кэше и значение TTL не истекло, то IP-адрес посылается запрашивающему компьютеру. Это считается неавторизованным ответом, так как локальный DNS-сервер считает, что с момента последнего запроса IP-адрес удаленного компьютера не изменился.

Во всех трех случаях компьютеру для поиска какого-либо компьютера в сети Internet нужен лишь IP-адрес локального сервера DNS. Дальнейшую работу по поиску IP-адреса, соответствующего запрошенному имени, выполняет локальный DNS-сервер. Как видите, теперь все намного проще для локального компьютера.

По мере роста дерева DNS, к серверам системы доменных имен предъявлялись новые требования. Как уже упоминалось ранее, родительские DNS-серверы должны иметь IP-адреса своих дочерних серверов DNS, чтобы правильно обрабатывать DNS-запросы на преобразование имен в IP-адреса. Чтобы DNS-запросы обрабатывались правильно, поиск по дереву DNS должен начинаться из какой-то определенной точки. В период младенчества сети Internet большинство запросов на поиск имен приходилось на локальные имена хостов. Основная часть DNS-трафика проходила внутри локальной зоны и лишь в худшем случае достигала родительских серверов DNS. Однако с ростом популярности Internet и, в частности Web, все больше DNS-запросов формировалось к удаленным хостам вне локальной зоны. Когда DNS-сервер не находил имя хоста в своей базе данных, он вынужден был запрашивать удаленный DNS-сервер. Наиболее подходящими кандидатами для удаленных DNS-серверов, естественно, стали серверы DNS верхнего уровня, которые обладают полной информацией о дереве доменов и способны найти нужный DNS-сервер, ответственный за зону, к которой принадлежит запрашиваемый хост. Затем они же возвращают IP-адрес нужного хоста локальному DNS-серверу. Все это приводит к колоссальным перегрузкам корневых серверов системы DNS. К счастью, их не так много и все они равномерно распределяют нагрузку между собой. Локальные DNS-серверы работают с серверами DNS доменов верхнего уровня с помощью протокола DNS, который рассматривается далее в этой лекции.

Система DNS - улица с двусторонним движением. DNS не только отыскивает IP-адрес по заданному имени хоста, но способна выполнять и обратную операцию, т.е. по IP-адресу определять имя хоста в сети. Многие Web- и FTP-серверы в сети Internet ограничивают доступ на основе домена, к которому принадлежит обратившийся к ним клиент. Получив от клиента запрос на установку соединения, сервер передает IP-адрес клиента DNS-серверу как обратный DNS-запрос. Если клиентская зона DNS настроена правильно, то на запрос будет возвращено имя клиентского хоста, на основе которого затем принимается решение о том, допустить данного клиента на сервер или нет.

Служба сетевых имен (Domain Name System – DNS) – это глобальная распределенная база данных, построенная на основе иерархической структуры доменов. Для работы DNS использует протокол TCP или UDP через 53 порт. Традиционно запросы и ответы отправляются в виде одной UDP датаграммы. Если ответ больше 512 байт или происходит синхронизация данных между базами DNS-серверов, то используется протокол TCP.

Служба DNS предполагает, что каждый компьютер подключается к глобальной сети из какого-либо домена Internet. При этом каждый домен имеет сервер имён (NS – nameserver, он же DNS-сервер для конкретного домена), который ведет базу данных всех хостов в своем домене и обрабатывает запросы об именах хостов. Когда домен становится слишком большим для управления из одной точки, часть прав может быть делегирована субдоменам (поддоменам), что позволяет уменьшить нагрузку на DNS-сервер.

Как и большинство сервисных служб Internet, служба DNS работает по технологии «клиент-сервер».

DNS-клиент представляет собой программный компонент всех сетевых компьютеров, который ищет IP-адрес, соответствующий имени (или наоборот), запрашивая информацию у назначенного ему DNS-сервера.

DNS-сервер – это программный компонент на это хосте, содержащем раздел базы данных DNS, который в ответ на запрос клиента, возвращает результат преобразования имени в IP-адрес (или наоборот).

DNS-сервер в ходе выполнения своей задачи может обращаться к другими DNS-серверам. При этом вышестоящие по дереву серверы имеют информацию об адресах нижестоящих серверов, что обеспечивает связность дерева (говорят, что вышестоящий сервер делегирует нижестоящему серверу полномочия по обслуживанию определенной зоны).

Существует три разновидности таких серверов:

Первичный DNS-сервер (ведущий, master или primary).

Вторичный DNS-сервер (ведомый, slave или secondary).

Кэширующий DNS-сервер (caching-only).

При подключении к существующей сети (например, новое подразделение подключается к корпоративной сети предприятия) достаточно иметь кэширующий сервер. Запрос на определение имени обычно не идёт дальше кэша DNS, в котором «оседают» на ограниченное время ответы на запросы, проходившие через кэш ранее.

В службе DNS вместе с понятием «домен» широко применяется понятие «зона». Эти два понятия следует четко различать: домен – это поддерево дерева доменных имен, азона – это часть дерева, за которую отвечает тот или иной DNS-сервер.

За каждую зону DNS отвечают не менее двух серверов: один является первичный, остальные – вторичные.

Первичный сервер содержит оригинальные файлы с базой данных DNS для своей зоны. Вторичные серверы получают эти данные по сети от первичного сервера и периодически запрашивают первичный сервер на предмет обновления данных (признаком обновления данных служит увеличение серийного номера в записи SOA). При возникновении изменений данных на первичном сервере, вторичный сервер запрашивает «передачу зоны» («zone transfer») - т.е. базы данных требуемой зоны. Передача зоны происходит с помощью протокола TCP, порт 53 (в отличие от запросов клиентов, которые направляются на UDP порт 53).


Изменения в базу данных DNS могут быть внесены только на первичном сервере. Вторичные серверы повышают надежность работы первичных DNS-серверов (исключают возможность нарушения работы сети в случае их отказа) и берут на себя часть нагрузки по обслуживанию запросов.

С точки зрения обслуживания клиентских запросов первичный и вторичные серверы выдают идентичные ответы. На практике рекомендуется, чтобы первичный и вторичные серверы находились в разных сетях – для увеличения надежности обработки запросов на случай, если сеть одного из серверов становится недоступной. Серверы DNS не обязаны находиться в том домене, за который они отвечают.

Следует также отметить, что вторичный сервер необязательно получает данные непосредственно с первичного сервера; источником данных может служить и другой вторичный сервер. В любом случае сервер-источник данных для данного вторичного сервера называется «главным» («master»).

Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое.


Домены имеют как минимум два DNS сервера, один называется первичным сервером имён (ns1), а другой — вторичным сервером имён (ns2). Вторичные сервера обычно задействуются при проблемах с первичным сервером DNS: если один сервер недоступен, то второй становится активным. Возможны и более сложные схемы с использованием балансировки нагрузки, файерволов и кластеров.

Все DNS записи определённого домена добавляются в первичный сервер имён. Вторичный сервер просто синхронизирует всю информацию, получая её от первичного, на основании параметров, заданных на первичном сервере.

Эта инструкция опишет, как создать первичный DNS сервер, работающий на CentOS . Пожалуйста, обратите внимание, что DNS сервер, представленный в этой инструкции, будет публичным DNS, это означает, что сервер будет отвечать на запросы от любого IP адреса. Как ограничить доступ к серверу, описано в этой инструкции.

Перед тем, как мы начнём, хотелось бы упомянуть, что DNS может быть установлен с или без chroot jail окружением. Окружение chroot jail ограничивает DNS сервер определённой директорией в системе, в отличие от полного системного доступа на сервере. Таким образом, любая уязвимость DNS сервера не скомпромитирует всю систему. Ограничение DNS сервера в определённой директории (процесс называется chrooting) также полезно в тестовых условиях.

Цель

Мы настроим DNS сервер в тестовых условиях для домена example.tst, который является гипотетическим (не существующим) доменом. Таким образом, мы не вмешаемся случайным образом в работу каких-либо реальных доменов.

В этом домене есть три следующих сервера.

Сервер IP адрес Хостящиеся службы FQDN
Сервер A 172.16.1.1 Mail mail.example.tst
Сервер B 172.16.1.2 Web, FTP www.example.tst
ftp.example.tst
Сервер C 172.16.1.3 Primary DNS server ns1.example.tst

Мы настроем первичный DNS сервер и добавим необходимый домен и DNS записи как показанов в таблице.

Настраиваем имена хостов

Все хосты должны быть корректно определены с точки зрения FQDN . Это может быть сделано с использованием следующего метода.

Те, кто любит графический интерфейс, могут воспользоваться инструментами NetworkManaget. Для этого наберите команду nmtui . Откроется такой псевдографический интерфейс:

Выбираете «Изменить имя узла» и вводите ns1.example.tst

Когда готово, нажимаете и ОК.

Ещё один способ, всего в одну команду:

Hostnamectl set-hostname ns1.example.tst

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

# hostname ns1.example.tst

Hostnamectl status

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

Установка пакетов

Мы будем использовать bind для DNS, который с лёгкостью может быть установлен командой yum.

Установка DNS без chroot:

# yum install bind

Установка DNS с chroot:

# yum install bind bind-chroot

Подготовка конфигурационных файлов

Как было упомянуто ранее, bind может быть настроен с или без chroot. Пути немного различаются, в зависимости от того, был ли установлен chroot.

Путь до конфигурационного файла Путь до файлов зоны
Без chroot /etc/ /var/named/
С chroot /var/named/chroot/etc/ /var/named/chroot/var/named/

Можно использовать конфигурационный файл named.conf, который поставляется по умолчанию. Тем не менее, мы будем использовать другой примерный конфигурационный файл для простоты использования.

Делаем резервную копию файла /etc/named.conf

Cp /etc/named.conf /etc/named.conf.bak

# cp /usr/share/doc/bind-9.9.4/sample/etc/named.rfc1912.zones /etc/named.conf

# cp /usr/share/doc/bind-9.9.4/sample/etc/named.rfc1912.zones /var/named/chroot/etc/named.conf

Теперь, когда есть резервная копия конфигурационного файла, а сам оригинальнвй файл изменён, двигаемся дальше.

# vim /etc/named.conf

# vim /var/named/chroot/etc/named.conf

Следующие строки были добавлены/изменены.

Options { ## путь до файлов зон ## directory "/var/named"; ## пенераправляем запросы на публичный DNS сервер Google для нелокальных доменов ## forwarders { 8.8.8.8; }; }; ## объявление прямой зоны для example.tst ## zone "example.tst" IN { type master; file "example-fz"; ## файл для прямой зоны размещён в /var/named ## allow-update { none; }; }; ## объявление обратной зоны для сети 172.16.1.0 ## zone "1.16.172.in-addr.arpa" IN { type master; file "rz-172-16-1"; ## файл для обратной зоны размещён в /var/named ## allow-update { none; }; };

Подготовка файлов зон

Дефолтные файлы зон автоматически созданы в /var/named или /var/named/chroot/var/named (для chroot).

Подразумевая, что дефолтные файлы зон не представлены, мы можем скопировать файлы образцов из /usr.

# cp /usr/share/doc/bind-9.9.4/sample/var/named/named.* /var/named/

# cp /usr/share/doc/bind-9.9.4/sample/var/named/named.* /var/named/chroot/var/named

Отлично. Теперь дефолтные файлы зоны готовы, мы создаём наши собственные файлы зоны для example.tst и сети 172.16.1.0. Пока мы создаём файлы зоны, нужно помнить следующее.

  • Символ ‘@’ означает NULL в файлах зоны.
  • Каждая запись полного доменного имени (FQDN) заканчивается точкой ‘.’ например. mail.example.tst. Без точки, будут проблемы.

1. Прямая зона

Прямая зона содержит карту преобразований из имён в IP адреса. Для публичных доменов, DNS доменов, размещённых на хостингах, содержаться в файле прямой зоны.

# vim /var/named/example-fz

# vim /var/named/chroot/var/named/example-fz $TTL 1D @ IN SOA ns1.example.tst. mial.example.tst. (0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H) ; minimum IN NS ns1.example.tst. IN A 172.16.1.3 mail IN A 172.16.1.1 IN MX 10 mail.example.tst. www IN A 172.16.1.2 ns1 IN A 172.16.1.3 ftp IN CNAME www.example.tst.

Объяснение : Внутри файла зоны, SOA означает начало авторизации. Это полное доменное имя авторитетного сервера имен. После полного доменного имени, идёт контактный email адрес. Поскольку мы не можем использовать ‘@’ в [email protected], мы перезаписываем email адрес как mial.example.tst.

  • NS : Имя сервера
  • A : A запись или запись адреса — это IP адрес
  • MX : Mail Exchanger запись. Здесь мы используем только один MX с приоритетом 10. В случае множества MX, мы можем использовать различные цифровые приоритеты. Нижний номер выигрывает. Например, MX 0 лучше чем MX 1.
  • CNAME : имя в каноническом виде. Если на сервере размещено множество служб, весьма вероятно, что множество имён будут преобразовываться к одному серверу. CNAME сигнализирует, что другие имена сервер может иметь и отсылает к имени, которое содержится в A записи.

2. Обратная зона

Обратная зона содержит карту преобразований из IP адресов в имена. Здесь мы создаём обратную зону для сети 172.16.1.0. В реальном домене, DNS сервер владельца публичного IP блока содержится в файле обратной зоны.

# vim /var/named/rz-172-16-1

# vim /var/named/chroot/var/named/rz-172-16-1 $TTL 1D @ IN SOA ns1.example.tst. sarmed.example.tst. (0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H) ; minimum IN NS ns1.example.tst. 1 IN PTR mail.example.tst. 2 IN PTR www.example.tst. 3 IN PTR ns1.example.tst.

Объяснение : Большинство используемых параметров в обратной зоне идентичный прямой зоне, кроме одного.

  • PTR : PTR или запись указателя, она указывает на полное доменное имя

Завершение

Теперь, когда файлы зон готовы, мы настроем разрешение файлов зоны.

# chgrp named /var/named/*

# chgrp named /var/named/chroot/var/named/*

Сейчас мы зададим IP адрес DNS сервера.

# vim /etc/resolv.conf nameserver 172.16.1.3

Наконец, мы можем запустить службу DNS и убедиться, что она добавлена в автозапуск.

# service named restart # chkconfig named on

Тестирование DNS

Мы можем использовать dig или nslookup для тестирования DNS. Вначале, мы установим необходимые пакеты.

# yum install bind-utils

1. Тестирование прямой зоны с использованием dig

# dig example.tst ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31184 ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 86400 IN A 172.16.1.3 ;; AUTHORITY SECTION: example.com. 86400 IN NS ns1.example.com. ;; ADDITIONAL SECTION: ns1.example.com. 86400 IN A 172.16.1.3

2. Проверка PTR с помощью dig

Когда вы используете для тестирования dig, вам всегда следует искать статус "NOERROR". Любое другое состояние означает, что что-то не так.

# dig -x 172.16.1.1 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27415 ;; QUESTION SECTION: ;1.1.17.172.in-addr.arpa. IN PTR ;; ANSWER SECTION: 1.1.16.172.in-addr.arpa. 86400 IN PTR mail.example.tst. ;; AUTHORITY SECTION: 1.16.172.in-addr.arpa. 86400 IN NS ns1.example.tst. ;; ADDITIONAL SECTION: ns1.example.tst. 86400 IN A 172.16.1.3

3. Проверка MX с помощью dig

# dig example.tst mx ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35405 ;; QUESTION SECTION: ;example.tst. IN MX ;; ANSWER SECTION: example.tst. 14366 IN MX 10 mail.example.tst.

Подсказки при решении проблем

  1. У меня отключён SELinux.
  2. Убедитесь, что ваш файервол не блокирует UDP порт 53
  3. /var/log/messages должен содержать полезную информацию в случае, если что-то не так
  4. Убедитесь, что владельцев файлов зон является пользователь ‘named’
  5. Убедитесь, что IP адрес DNS сервера стоит на первом месте в /etc/resolv.conf
  6. Если вы используете example.tst в лабораторных условиях, убедитесь, что отсоединили сервер от Интернета, поскольку example.tst — это несуществующий домен.

Подытожим, этот урок фокусируется на хостинге домена example.tst в лабораторных условиях для демонстрационных целей. Пожалуйста, помните, что это не инструкция по созданию публичного DNS сервера, например DNS сервера, который отвечает на запросы от любых IP адресов. Если вы настраиваете рабочий DNS сервер, убедитесь, что проверили, какие политика относятся к публичным DNS. Другой урок освещает создание вторичного DNS, ограничение доступа к DNS серверу, и реализацию DNSSEC.

Гарант является доверенным посредником между Участниками при проведении сделки.