DNS. Введение в доменную систему имен

DNS это протокол используемый преимущественно для конвертирования hostname(имя хоста), вроде www.example.com в IP адреса, вроде 192.168.1.0, и наоборот. В Интернет, взаимосвязь между серверами построена на IP адресах, а не на hostname(имя хоста), которые пользователь вводит в программы типа браузеров или telnet клиентов. Это означает, что системе нужно средство, которое бы позволяло отыскивать IP адрес сервера по его hostname(имя хоста). Для этого есть несколько решений. Например, чтение файла /etc/hosts или запрос к NIS серверу. Но использование DNS наиболее распростанено.

Как уже говорилось, DNS протокол используется для отыскания IP адресов по hostname и наоборот. Это часто используется для определения имени хоста клиента, который подключается к серверу. DNS также может использоватся для определения адреса почтового сервера, а также для получения дополнительной информации о хосте. Например, его местоположение, операционная система или его собственник. Однако же чаще всего DNS используют по её прямому назначению.

Большинство систем использует DNS протокол для отправки запросов к серверу, который занимается отысканием IP адресов по hostname(имя хоста). Обычная система является только DNS клиентом и никогда не отвечает на запросы от серверов или других клиентов. В то время, как многие компании и провайдеры имеют один или несколько DNS серверов в своей сети. Так что все остальные хосты этой сети могут ими пользоватся. Если ваша компания уже имеет DNS сервер, значит вам нет необходимости читать эту главу.

Доменная система имен поделена на зоны(названные доменами), каждая из которых имеет имя вроде example.com или foo.com.au. Зоны имеют иерархию. Это означает, что зона foo.com.au находится в зоне com.au, которая в свою очередь является частью зоны au. На самом верху этой иерархии распологается . или root(корень) зона.

Для каждой зоны, существует как минимум один DNS сервер, который является основным и имеет всю информацию об этой зоне. Также существуют несколько второстепенных или подчиненных серверов, которые имеют копию информации с основного сервера. Это позволит сделать бэкап основного сервера если он станет неисправным. Один DNS сервер может обслуживать несколько DNS зон или необслуживать ни одну. Сервер обычно отвечает за предоставление информации о зонах которые он обслуживает.

Прежде чем, сервер сможет обслуживать некоторую зону, её(зону) нужно зарегистрировать в родительской зоне. Большинство родительских зон вроде .com, .net, .ru недоступны простым людям и управляются компаниями, которые имеют право на регистрацию дочерних зон в этих родительских зонах. Обычно они называются регистраторами. Это означает, что вы не можете просто установить DNS сервер, который обслуживал бы домен вроде example.com и сделать его доступным из Интернет. Вы должны заплатить за то, чтобы ваш домен зарегистировали. Это может сделать любая компания-регистратор. Таким образом, заплатив, вы зарегистрируете доменное имя, являющееся поддоменом главного домена, например домена .com.

Каждая зона включает в себя множество DNS записей, каждая из которых имеет имя, тип и значения. Наиболее распространенным типом записи является адрес или, для краткости A запись. Этот тип записи содержит следующую информацию: IP адрес и ассоциированное с ним hostname(имя хоста). Другой тип это NS или name server(сервер имен) записи, которые содержат информацию о DNS сервере, обслуживающем зону или поддомен. И третий тип это MX или mail server(почтовый сервер) записи, который содержит информацию о хосте, который обслуживает почту для этой зоны.

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

Дополнительные сервера могут запрашивать копию всех записей зоны используя трансфер внутри зоны. Это выполняется когда дополнительный DNS сервер получает впервые на обслуживание некоторую зону, а также когда сервер определяет, что зона изменилась или записи устарели. Главный сервер может быть сконфигурирован таким образом, что он будет уведомлять дополнительные сервера, когда зона изменилась, и они должны обновится, позволяя им всегда иметь новую информацию.

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

Обычно на одном сервере распологается только master(мастер, главные) зоны или только slaves(второстепенные) зоны. Однако, бывает так, что сервер является главным для одних зон и в то же время, дополнительными для других. Правила на количество серверов обслуживающих зону нет. Важные зоны .com и root(корневая, главная) имеют 13 серверов обслуживания, поскольку эти зоны составляют огромную часть Интернет и к ним происходит большое количество обращений. Чем больше дополнительных серверов на зону, тем лучше, главное, чтобы они постоянно синхронизировали свое содержимое.

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

Например, представьте если DNS клиент запрашивает сервер об IP адресе для хоста www.webmin.com.

Сервер пройдет следующие шаги для определения IP адреса:

1. Сначала он сделает запрос к одному из root(главный) серверов, такой как a.root-servers.net(198.41.0.4), чтобы попробовать отыскать IP адрес для www.webmin.com. Root сервер ответит списком DNS серверов обслуживающих зону .com. Один из них a.gtld-servers.net(192.5.6.30).

2. Далее он сделает запрос к серверу обслуживающему .com зону с запросом IP адреса для www.webmin.com. Ответом будет список DNS серверов, один из которых au.webmin.com(203.89.239.235). Это главный DNS сервер для домена webmin.com.

3. Затем DNS клиент сделает запрос к серверу webmin.com, чтобы узнать адрес для www.webmin.com. Ответом будет 216.136.171.204, что является правильным IP адресом.

4. DNS клиент получит этот IP адрес и кэширует результат. Теперь он будет знать, какой IP адрес у www.webmin.com и ему не понадобится проходить все эти шаги снова. Но этот результат имеет TTL, соответсвенно по истечению этого времени, данные об IP адресе устареют, и DNS клиент вновь пройдет эти шаги, дабы узнать IP адрес для www.webmin.com. Это сделано для того, чтобы не проходить эти шаги снова и снова, создавая большой траффик в Интернет.

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

Связь между IP адресами и их hostname(имя хоста) хранится в DNS отдельно от связи между hostname(имя хоста) и IP адресом. Это сделано для того, чтобы сделать возможным поиск hostname(имя хоста) по IP адресу используя схожий, с описанным выше, алгоритм действий. Объясняется это тем, что могут случится несоответствия между отношениями IP адреса к hostname, и hostname к IP адресу. К примеру, www.webmin.com связан с 216.136.171.204, но 216.136.171.204 относится к usw-pr-vhost.sourceforge.net! Это вызывает путаницу, но это реальный факт. Когда клиент хочет найти hostname(имя хоста)  для IP адреса вроде 216.136.171.204, он преобразует этот адрес в запись вида 204.171.136.216.in-addr.arpa. Как вы можете видеть это тот же самый IP адрес, только задом на перед и к нему добавлено к концу in-addr.arpa. Специальная зона in-addr.arpa обслуживается root DNS серверами, и её поддомены доступны для других DNS серверов. Обычно каждая зона класса C (например, 171.136.216.in-addr.arpa) обслуживается DNS серверами компаний или интернет-провайдеров, которые обладают этими зонами. Это означает, что они могут создавать записи, которые определяют свзяь между IP адресом и его hostname(имя хоста). Все эти записи специального типа - PTR. Большая проблема связана с методом отыскания всего, что меньше класса C (который включает в себя 256 адресов) и обслуживается одним DNS сервером. Таким образом, если сервер обслуживает зону example.com, которая содержит лишь одну запись, www.example.com с адресом 1.2.3.4, то некоторый сервер не сможет отыскать этот адрес. Поэтому лучше, чтобы эту одну запись имел DNS сервер интернет-провайдера или хостинг компании, чья сеть включает веб-сервер для www.example.com. Только организации могут иметь необходимость владеть сетью класса C и обслуживать обратную зону для этой сети используя их собственный DNS сервер.

Много организаций имеем внутреннюю сеть, которая использует частные IP адреса, начинающиеся, к пример, с 192.168. Сеть вроде этой, подключается к Интеренету через firewall используя NAT. Некоторые люди имеющие домашнюю сеть организуют свой доступ в Интернет следующим образом. Одна из машин имеет доступ в Интернет напрямую. Она является шлюзом(Gateway). Остальные подключаюся через неё. Получается, что они работают в Интернет под одним IP адресом.

Также в таких сетях может понадобится DNS сервер для выдачи hostname компьютерам внутренней сети. Это возможно, создав зону с произвольным именем вроде home или internal, которая содержит записи о внутренних компьютерах сети, а также создав обратную зону для 192.168 сети, таким образом, что IP адреса могут быть найдены по запросу. Сервер также может быть настроен для поиска реальных Интернет hostname(имя хоста), как любой нормальный DNS сервер. Однако, такой поиск ни к чему не приведет, так как ваша локальная зона не зарегистрирована в Интернет.




Ссылки:

К содержанию

© Copyright 2004-2017 - CMS Made Simple
Сайт работает на CMS Made Simple version 1.4.1

© Все печеньки Break-people.ru принадлежат авторам проекта.

Яндекс цитирования Рейтинг@Mail.ru Яндекс.Метрика