Май 15, 2011 - 0 Comments - Теория -

DNS.

DNS (aнгл. Domain Name System — систeмa дoмeнныx имён) — кoмпьютeрнaя рaспрeдeлённaя систeмa для пoлучeния инфoрмaции o дoмeнax. Чaщe всeгo испoльзуeтся для пoлучeния IP-aдрeсa пo имeни xoстa (кoмпьютeрa или устрoйствa), пoлучeния инфoрмaции o мaршрутизaции пoчты, oбслуживaющиx узлax для прoтoкoлoв в дoмeнe (SRV-зaпись).

Рaспрeдeлённaя бaзa дaнныx DNS пoддeрживaeтся с пoмoщью иeрaрxии DNS-сeрвeрoв, взaимoдeйствующиx пo oпрeдeлённoмупрoтoкoлу.

Oснoвoй DNS являeтся прeдстaвлeниe oб иeрaрxичeскoй структурe дoмeннoгo имeни и зoнax. Кaждый сeрвeр, oтвeчaющий зa имя, мoжeт дeлeгирoвaть oтвeтствeннoсть зa дaльнeйшую чaсть дoмeнa другoму сeрвeру (с aдминистрaтивнoй тoчки зрeния — другoй oргaнизaции или чeлoвeку), чтo пoзвoляeт вoзлoжить oтвeтствeннoсть зa aктуaльнoсть инфoрмaции нa сeрвeры рaзличныx oргaнизaций (людeй), oтвeчaющиx тoлькo зa «свoю» чaсть дoмeннoгo имeни.

Нaчинaя с 2010 гoдa, в систeму DNS внeдряются срeдствa прoвeрки цeлoстнoсти пeрeдaвaeмыx дaнныx, нaзывaeмыe DNS Security Extensions (DNSSEC). Пeрeдaвaeмыe дaнныe нe шифруются, нo иx дoстoвeрнoсть прoвeряeтся криптoгрaфичeскими спoсoбaми.

DNS

DNS

Ключeвыe xaрaктeристики DNS

DNS oблaдaeт слeдующими xaрaктeристикaми:

  • Рaспрeдeлённoсть aдминистрирoвaнияOтвeтствeннoсть зa рaзныe чaсти иeрaрxичeскoй структуры нeсут рaзныe люди или oргaнизaции.
  • Рaспрeдeлённoсть xрaнeния инфoрмaции. Кaждый узeл сeти в oбязaтeльнoм пoрядкe дoлжeн xрaнить тoлькo тe дaнныe, кoтoрыe вxoдят в eгo зoну oтвeтствeннoсти и (вoзмoжнo) aдрeсa кoрнeвыx DNS-сeрвeрoв.
  • Кeширoвaниe инфoрмaции. Узeл мoжeт xрaнить нeкoтoрoe кoличeствo дaнныx нe из свoeй зoны oтвeтствeннoсти для умeньшeния нaгрузки нa сeть.
  • Иeрaрxичeскaя структурa, в кoтoрoй всe узлы oбъeдинeны в дeрeвo, и кaждый узeл мoжeт или сaмoстoятeльнo oпрeдeлять рaбoту нижeстoящиx узлoв, или дeлeгирoвaть(пeрeдaвaть) иx другим узлaм.
  • Рeзeрвирoвaниe. Зa xрaнeниe и oбслуживaниe свoиx узлoв (зoн) oтвeчaют (oбычнo) нeскoлькo сeрвeрoв, рaздeлённыe кaк физичeски, тaк и лoгичeски, чтo oбeспeчивaeт сoxрaннoсть дaнныx и прoдoлжeниe рaбoты дaжe в случae сбoя oднoгo из узлoв.

DNS вaжнa для рaбoты Интeрнeтa, ибo для сoeдинeния с узлoм нeoбxoдимa инфoрмaция o eгo IP-aдрeсe, a для людeй прoщe зaпoминaть буквeнныe (oбычнo oсмыслeнныe) aдрeсa, чeм пoслeдoвaтeльнoсть цифр IP-aдрeсa. В нeкoтoрыx случaяx этo пoзвoляeт испoльзoвaть виртуaльныe сeрвeры, нaпримeр, HTTP-сeрвeры, рaзличaя иx пo имeни зaпрoсa. Пeрвoнaчaльнo прeoбрaзoвaниe мeжду дoмeнными и IP-aдрeсaми прoизвoдилoсь с испoльзoвaниeм спeциaльнoгo тeкстoвoгo фaйлa hosts, кoтoрый сoстaвлялся цeнтрaлизoвaннo и aвтoмaтичeски рaссылaлся нa кaждую из мaшин в свoeй лoкaльнoй сeти. С рoстoм Сeти вoзниклa нeoбxoдимoсть в эффeктивнoм, aвтoмaтизирoвaннoм мexaнизмe, кoтoрым и стaлa DNS.

DNS былa рaзрaбoтaнa Пoлoм Мoкaпeтрисoм в 1983 гoду; оригинальное описание механизмов работы содержится в RFC 882 и RFC 883. В 1987 публикация RFC 1034 иRFC 1035 изменила спецификацию DNS и отменила RFC 882 и RFC 883 как устаревшие.

Дополнительные возможности

  • поддержка динамических обновлений
  • защита данных (DNSSEC) и транзакций (TSIG)
  • поддержка различных типов информации (SRV-записи)

Терминология и принципы работы

Ключевыми понятиями DNS являются:

  • Доме́н (англ. domain — область) — узел в дереве имён, вместе со всеми подчинёнными ему узлами (если таковые имеются), то есть именованная ветвь или поддерево в дереве имен. Структура доменного имени отражает порядок следования узлов в иерархии; доменное имя читается слева направо от младших доменов к доменам высшего уровня (в порядке повышения значимости), корневым доменом всей системы является точка (‘.’), ниже идут домены первого уровня (географические или тематические), затем — домены второго уровня, третьего и т. д. (например, для адреса ru.wikipedia.org домен первого уровня — org, второго wikipedia, третьего ru). На практике точку в конце имени часто опускают, но она бывает важна в случаях разделения между относительными доменами и FQDN (англ. Fully Qualifed Domain Name, полностью определённое имя домена).
  • Поддомен (англ. subdomain) — подчиненный домен. (например, wikipedia.org — поддомен домена org, а ru.wikipedia.org — домена wikipedia.org). Теоретически такое деление может достигать глубины 127 уровней, а каждая метка может содержать до 63 символов, пока общая длина вместе с точками не достигнет 254 символов. Но на практике регистраторы доменных имён используют более строгие ограничения. Например, если у вас есть домен вида mydomain.ru, вы можете создать для него различные поддомены вида mysite1.mydomain.rumysite2.mydomain.ru и т. д.
  • Ресурсная запись — единица хранения и передачи информации в DNS. Каждая ресурсная запись имеет имя (то есть привязана к определенному Доменному имени, узлу в дереве имен), тип и поле данных, формат и содержание которого зависит от типа.
  • Зона — часть дерева доменных имен (включая ресурсные записи), размещаемая как единое целое на некотором сервере доменных имен (DNS-сервере, см. ниже), а чаще — одновременно на нескольких серверах (см. ниже). Целью выделения части дерева в отдельную зону является передача ответственности (см. ниже) за соответствующий Домен другому лицу или организации, так называемое Делегирование (см. ниже). Как связная часть дерева, зона внутри тоже представляет собой дерево. Если рассматривать пространство имен DNS как структуру из зон, а не отдельных узлов/имен, тоже получается дерево; оправданно говорить о родительских и дочерних зонах, о старших и подчиненных. На практике, большинство зон 0-го и 1-го уровня (‘.’, ru, com, …) состоят из единственного узла, которому непосредственно подчиняются дочерние зоны. В больших корпоративных доменах (2-го и более уровней) иногда встречается образование дополнительных подчиненных уровней без выделения их в дочерние зоны.
  • Делегирование — операция передачи ответственности за часть дерева доменных имен другому лицу или организации. За счет делегирования в DNS обеспечивается распределенность администрирования и хранения. Технически делегирование выражается в выделении этой части дерева в отдельную зону, и размещении этой зоны наDNS-сервере (см. ниже), управляемом этим лицом или организацией. При этом в родительскую зону включаются «склеивающие» ресурсные записи (NS и А), содержащие указатели на DNS-сервера дочерней зоны, а вся остальная информация, относящаяся к дочерней зоне, хранится уже на DNS-серверах дочерней зоны.
  • DNS-сервер — специализированное ПО для обслуживания DNS, а также компьютер, на котором это ПО выполняется. DNS-сервер может быть ответственным за некоторые зоны и/или может перенаправлять запросы вышестоящим серверам.
  • DNS-клиент — специализированная библиотека (или программа) для работы с DNS. В ряде случаев DNS-сервер выступает в роли DNS-клиента.
  • Авторитетность (англ. authoritative) — признак размещения зоны на DNS-сервере. Ответы DNS-сервера могут быть двух типов: авторитетные (когда сервер заявляет, что сам отвечает за зону) и неавторитетные (англ. Non-authoritative), когда сервер обрабатывает запрос, и возвращает ответ других серверов. В некоторых случаях вместо передачи запроса дальше DNS-сервер может вернуть уже известное ему (по запросам ранее) значение (режим кеширования).
  • DNS-запрос (англ. DNS query) — запрос от клиента (или сервера) серверу. Запрос может быть рекурсивным или нерекурсивным (см. Рекурсия).

Система DNS содержит иерархию DNS-серверов, соответствующую иерархии зон. Каждая зона поддерживается как минимум одним авторитетным сервером DNS (отангл. authoritative — авторитетный), на котором расположена информация о домене.

Имя и IP-адрес не тождественны — один IP-адрес может иметь множество имён, что позволяет поддерживать на одном компьютере множество веб-сайтов (это называетсявиртуальный хостинг). Обратное тоже справедливо — одному имени может быть сопоставлено множество IP-адресов: это позволяет создавать балансировку нагрузки.

Для повышения устойчивости системы используется множество серверов, содержащих идентичную информацию, а в протоколе есть средства, позволяющие поддерживать синхронность информации, расположенной на разных серверах. Существует 13 корневых серверов, их адреса практически не изменяются.[1]

Протокол DNS использует для работы TCP— или UDPпорт 53 для ответов на запросы. Традиционно запросы и ответы отправляются в виде одной UDP датаграммы. TCP используется для AXFR-запросов.

Рекурсия

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

DNS-запрос может быть рекурсивным — требующим полного поиска, — и нерекурсивным — не требующим полного поиска.

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

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

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

Рассмотрим на примере работу всей системы.

Предположим, мы набрали в браузере адрес ru.wikipedia.org. Браузер спрашивает у сервера DNS: «какой IP-адрес у ru.wikipedia.org»? Однако, сервер DNS может ничего не знать не только о запрошенном имени, но даже обо всём домене wikipedia.org. В этом случае сервер обращается к корневому серверу — например, 198.41.0.4. Этот сервер сообщает — «У меня нет информации о данном адресе, но я знаю, что 204.74.112.1 является ответственным за зону org.» Тогда сервер DNS направляет свой запрос к 204.74.112.1, но тот отвечает «У меня нет информации о данном сервере, но я знаю, что 207.142.131.234 является ответственным за зону wikipedia.org.» Наконец, тот же запрос отправляется к третьему DNS-серверу и получает ответ — IP-адрес, который и передаётся клиенту — браузеру.

В данном случае при разрешении имени, то есть в процессе поиска IP по имени:

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

Иногда допускается, чтобы запрошенный сервер передавал рекурсивный запрос «вышестоящему» DNS-серверу и дожидался готового ответа.

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

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

Обратный DNS-запрос


DNS используется в первую очередь для преобразования символьных имён в IP-адреса, но он также может выполнять обратный процесс. Для этого используются уже имеющиеся средства DNS. Дело в том, что с записью DNS могут быть сопоставлены различные данные, в том числе и какое-либо символьное имя. Существует специальный домен in-addr.arpa, записи в котором используются для преобразования IP-адресов в символьные имена. Например, для получения DNS-имени для адреса 11.22.33.44можно запросить у DNS-сервера запись 44.33.22.11.in-addr.arpa, и тот вернёт соответствующее символьное имя. Обратный порядок записи частей IP-адреса объясняется тем, что в IP-адресах старшие биты расположены в начале, а в символьных DNS-именах старшие (находящиеся ближе к корню) части расположены в конце.

Записи DNS


Записи DNS, или Ресурсные записи (англ. Resource Records, RR) — единицы хранения и передачи информации в DNS. Каждая ресурсная запись состоит из следующих полей:

  • имя (NAME) — доменное имя, к которому привязана или которому «принадлежит» данная ресурсная запись,
  • TTL (Time To Live) — допустимое время хранения данной ресурсной записи в кэше неответственного DNS-сервера,
  • тип (TYPE) ресурсной записи — определяет формат и назначение данной ресурсной записи,
  • класс (CLASS) ресурсной записи; теоретически считается, что DNS может использоваться не только с TCP/IP, но и с другими типами сетей, код в поле класс определяет тип сети,
  • длина поля данных (RDLEN),
  • поле данных (RDATA), формат и содержание которого зависит от типа записи.

Наиболее важные типы DNS-записей:

  • Запись A (address record) или запись адреса связывает имя хоста с адресом IP. Например, запрос A-записи на имя referrals.icann.org вернет его IP адрес —192.0.34.164
  • Запись AAAA (IPv6 address record) связывает имя хоста с адресом протокола IPv6. Например, запрос AAAA-записи на имя K.ROOT-SERVERS.NET вернет его IPv6 адрес —2001:7fd::1
  • Запись CNAME (canonical name record) или каноническая запись имени (псевдоним) используется для перенаправления на другое имя
  • Запись MX (mail exchange) или почтовый обменник указывает сервер(ы) обмена почтой для данного домена.
  • Запись NS (name server) указывает на DNS-сервер для данного домена.
  • Запись PTR (pointer) или запись указателя связывает IP хоста с его каноническим именем. Запрос в домене in-addr.arpa на IP хоста в reverse форме вернёт имя (FQDN) данного хоста (см. Обратный DNS-запрос). Например, (на момент написания), для IP адреса 192.0.34.164: запрос записи PTR 164.34.0.192.in-addr.arpaвернет его каноническое имя referrals.icann.org. В целях уменьшения объёма нежелательной корреспонденции (спама) многие серверы-получатели электронной почты могут проверять наличие PTR записи для хоста, с которого происходит отправка. В этом случае PTR запись для IP адреса должна соответствовать имени отправляющего почтового сервера, которым он представляется в процессе SMTP сессии.
  • Запись SOA (Start of Authority) или начальная запись зоны указывает, на каком сервере хранится эталонная информация о данном домене, содержит контактную информацию лица, ответственного за данную зону, тайминги (параметры времени) кеширования зонной информации и взаимодействия DNS-серверов.
  • Запись SRV (server selection) указывает на серверы для сервисов, используется, в частности, для Jabber и Active Directory.

 


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Человек ? *