Для чего была разработана доменная система имен кратко

Обновлено: 08.07.2024

DNS
Уровень (по модели OSI): Прикладной
Семейство: TCP/IP
Порт/ID: 53/TCP, 53/UDP
Назначение протокола: Разрешение доменных имен
Спецификация: RFC 1034, RFC 1035 / STD 13
Основные реализации (клиенты): Встроен во все сетевые ОС
Основные реализации (серверы): BIND, PowerDNS или Microsoft DNS Server

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


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

Содержание

Уровни DNS

Ключевые характеристики DNS

DNS обладает следующими характеристиками:

  • Распределённость администрирования. Ответственность за разные части иерархической структуры несут разные люди или организации.
  • Распределённость хранения информации. Каждый узел сети в обязательном порядке должен хранить только те данные, которые входят в его зону ответственности, и (возможно) адреса корневых DNS-серверов.
  • Кеширование информации. Узел может хранить некоторое количество данных не из своей зоны ответственности для уменьшения нагрузки на сеть.
  • Иерархическая структура, в которой все узлы объединены в дерево, и каждый узел может или самостоятельно определять работу нижестоящих узлов, или делегировать (передавать) их другим узлам.
  • Резервирование. За хранение и обслуживание своих узлов (зон) отвечают (обычно) несколько серверов, разделённые как физически, так и логически, что обеспечивает сохранность данных и продолжение работы даже в случае сбоя одного из узлов.

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

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

Как работает DNS

Записи DNS

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

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

Зарезервированные доменные имена

Интернациональные доменные имена

Доменное имя может состоять только из ограниченного набора ASCII-символов, позволяя набрать адрес домена независимо от языка пользователя. ICANN утвердил основанную на Punycode систему IDNA, преобразующую любую строку в кодировке Unicode в допустимый DNS набор символов.

В прошлый раз мы начали рассказывать историю DNS — вспомнили, с чего стартовал проект, и какие проблемы был призван решить в сети ARPANET. Сегодня поговорим о первом DNS-сервере BIND.



Фото — John Markos O'Neill — CC BY-SA

Первые DNS-серверы

После того как в 1983 году Пол Мокапетрис (Paul Mockapetris) и Джон Постел (Jon Postel) предложили концепцию доменных имен для сети ARPANET, она достаточно быстро снискала одобрение ИТ-сообщества. Одними из первых реализовать её на практике взялись инженеры из Университета в Беркли. В 1984 году четыре студента представили первый DNS-сервер — Berkeley Internet Name Domain (BIND). Они работали в рамках гранта, выданного Управлением перспективных исследовательских проектов Министерства обороны США (DARPA).

Разработанная учащимися университета система автоматически преобразовывала DNS-имя в IP-адрес и наоборот. Интересно, что когда её код загрузили на BSD (систему распространения ПО), первые исходники уже имели номер версии 4.3. Первое время DNS-сервером пользовались сотрудники лабораторий университета. Вплоть до версии 4.8.3 за разработку BIND отвечали члены исследовательской группы Университета в Беркли — Computer Systems Research Group (CSRG), но во второй половине 1980-х DNS-сервер вырвался за пределы вуза — его передали в руки Пола Викси (Paul Vixie) из корпорации DEC. Пол выпустил обновления 4.9 и 4.9.1, а потом основал Internet Software Consortium (ISC), который с тех пор и отвечает за поддержку BIND. По словам Пола, все предыдущие версии опирались на код студентов из Беркли, и за прошедшие пятнадцать лет он полностью исчерпал свои возможности для модернизации. Поэтому в 2000 году BIND переписали с нуля.

BIND и PowerDNS одни из самых распространенных, но не единственные DNS-серверы. Также стоит отметить Unbound, djbdns и Dnsmasq.

Развитие системы доменных имен

За всю историю DNS в её спецификацию вносили множество изменений. В качестве одного из первых и крупных обновлений добавили механизмы NOTIFY и IXFR в 1996 году. Они упростили репликацию баз данных системы доменных имен между первичным и вторичным серверами. Новое решение дало возможность настраивать уведомления об изменении DNS-записей. Такой подход гарантировал идентичность вторичной и первичной DNS-зоны плюс экономил трафик — синхронизация происходила только при необходимости, а не через фиксированные интервалы.



Фото — Richard Masoner — CC BY-SA

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

p, blockquote 1,0,0,0,0 -->


p, blockquote 2,0,0,0,0 -->

Зачем нужен DNS

Система доменных имен позволяет использовать вместо ip-адресов понятные для человека символьные имена компьютера, она также позволяет по этому символьному имени определить ip-адрес.

p, blockquote 3,0,0,0,0 -->

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

p, blockquote 4,0,0,0,0 -->

DNS по английский Domain Name System — это протокол прикладного уровня стека протоколов tcp-ip.

p, blockquote 5,0,0,0,0 -->

DNS в стеке протоколов TCP

p, blockquote 6,0,0,0,0 -->

Утилита nslookup

Узнать ip-адрес компьютера по его доменному имени можно с помощью утилиты nslookup.

p, blockquote 7,0,0,0,0 -->

Здесь представлен пример её использования:

p, blockquote 8,0,0,0,0 -->

p, blockquote 10,0,0,0,0 -->

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

p, blockquote 11,0,0,0,0 -->

Для того чтобы получить доступ к веб-серверу компании Яндекс, можно обратиться к любому из этих серверов. Утилитой nslookup преимущественно используется под Windows, в Linux и Unix используются другие утилиты, такие как Host и Dig. Таким образом система DNS по доменному имени компьютера позволяет определить его ip-адрес, вопрос заключается в том, как это удается сделать в масштабах всей сети интернет, в которой огромное количество компьютеров и постоянно происходят изменения.

p, blockquote 12,0,0,0,0 -->

Файл /etc/ hosts

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

p, blockquote 13,0,0,0,0 -->

Этот файл в системах Unix и Linux называются Linux/Unix/etc/hosts, в Windows похожий файл тоже есть, только он находится по другому пути. Windows: C:\Windows\System32\drivers\etc\hosts. Такой подход работал на заре создания сетей tcp-ip, когда компьютеров было мало, все компьютеры и их ip-адреса можно было перечислить в одном файле, который хранился на центральном сервере имен, остальные компьютеры подключались к этому серверу и загружали файл.

p, blockquote 14,0,0,0,0 -->

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

p, blockquote 15,0,0,0,0 -->

Особенности DNS

При создании системы DNS было решено что это принципиально децентрализованная система. Децентрализованная как на техническом уровне, то есть нет одного сервера на котором хранятся все имена всех компьютеров в сети, так и на административном уровне. Название компьютеров делится на отдельные части, домены, и за имена компьютеров в разных доменах отвечают разные организации. Также для системы DNS очень важна надёжность, поэтому серверы DNS дублируются.

p, blockquote 16,0,0,0,0 -->

Структура доменного имени

p, blockquote 17,0,0,0,0 -->

Корневой домен

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

p, blockquote 18,1,0,0,0 -->

DNS доменное имя

p, blockquote 19,0,0,0,0 -->

Дерево доменных имен

Доменные имена образуют дерево. Корнем дерева является корневой домен, который представлен точкой. Затем идут домены верхнего уровня, которые бывают трех типов:

p, blockquote 20,0,0,0,0 -->

Дерево доменных имен DNS

Доменная зона

Важным понятием в системе DNS является доменная зона. Это запись адресов всех компьютеров и всех поддоменов в некотором домене.

p, blockquote 22,0,0,0,0 -->

Доменная зона

p, blockquote 23,0,0,0,0 -->

p, blockquote 24,0,0,0,0 -->

Доменная зона является некоторым аналогом файла itc/hosts только в ней содержится не вся информация об именах компьютерах в сети, а некоторый ее фрагмент. Доменные зоны распределены по серверам DNS. Одну и ту же доменную зону может обслуживать несколько серверов DNS.

p, blockquote 25,0,0,0,0 -->

Например, корневую зону обслуживают больше всего серверов, так как к ним больше всего запросов. Все корневые серверы DNS содержат одинаковые записи. Зону ru также обслуживает несколько серверов DNS, у которых одна и та же база данных записи и доменов второго уровня.

p, blockquote 26,0,0,0,0 -->

p, blockquote 27,0,0,1,0 -->

p, blockquote 28,0,0,0,0 -->

Инфраструктура DNS

Инфраструктура системы доменных имен состоит из следующих компонентов.

p, blockquote 29,0,0,0,0 -->

Инфраструктура DNS

p, blockquote 30,0,0,0,0 -->

Дерево серверов DNS, которые мы рассмотрели выше, клиент DNS это как правило наш компьютер, и сервер разрешения имен DNS по-английски его называют DNS resolver, он получает запрос от клиента и выполняет поиск необходимого ip-адреса в дереве доменных имен.

p, blockquote 31,0,0,0,0 -->

Распределение доменных имен

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

p, blockquote 32,0,0,0,0 -->

Зоны ru и рф

Для российской зоны ru до 2001 года был всего один регистратор доменных имен, это Российский Научно-Исследовательский Институт развития общественных сетей. Но в 2001 году регистраторов стало несколько и база данных зоны ru стала распределенной. Для координации работы регистраторов была создана некоммерческая организация Координационный центр национального домена сети Интернет.

p, blockquote 33,0,0,0,0 -->

p, blockquote 34,0,0,0,0 -->

p, blockquote 35,0,0,0,0 -->

Видео о выборе доменного имени для сайта

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

p, blockquote 36,0,0,0,0 --> p, blockquote 37,0,0,0,1 -->

Domain Name System

Разрешение доменных имён

BIND, PowerDNS или Microsoft DNS Server


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

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

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

Содержание

Ключевые характеристики DNS

DNS обладает следующими характеристиками:

  • Распределённость администрирования. Ответственность за разные части иерархической структуры несут разные люди или организации.
  • Распределённость хранения информации. Каждый узел сети в обязательном порядке должен хранить только те данные, которые входят в его зону ответственности и (возможно) адреса корневых DNS-серверов.
  • Кеширование информации. Узел может хранить некоторое количество данных не из своей зоны ответственности для уменьшения нагрузки на сеть.
  • Иерархическая структура, в которой все узлы объединены в дерево, и каждый узел может или самостоятельно определять работу нижестоящих узлов, или делегировать (передавать) их другим узлам.
  • Резервирование. За хранение и обслуживание своих узлов (зон) отвечают (обычно) несколько серверов, разделённые как физически, так и логически, что обеспечивает сохранность данных и продолжение работы даже в случае сбоя одного из узлов.

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

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

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

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

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

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

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

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

Рекурсия

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

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

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

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

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

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

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

Обратный 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. Каждая ресурсная запись состоит из следующих полей:

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

Зарезервированные доменные имена

Интернациональные доменные имена

Доменное имя может состоять только из ограниченного набора ASCII символов, позволяя набрать адрес домена независимо от языка пользователя. ICANN утвердил основанную на Punycode систему IDNA, преобразующую любую строку в кодировке Unicode в допустимый DNS набор символов.

Читайте также: