2018/10/12 12:56:28

Domain Name System (DNS)
Система доменных имён

DNS (англ. ) — распределённая система (распределённая база данных), способная по запросу, содержащему доменное имя хоста (компьютера или другого сетевого устройства), сообщить IP адрес или (в зависимости от запроса) другую информацию. DNS работает в сетях TCP/IP. Как частный случай, DNS может хранить и обрабатывать и обратные запросы, определения имени хоста по его IP адресу — IP адрес по таблице соответствия преобразуется в доменное имя, и посылается запрос на информацию типа «PTR».

Содержание

Сеть интернет работает на основе системы DNS, в которой содержатся доменные имена и IP-адреса. Существует 13 корневых серверов DNS с информацией о доменах верхнего уровня, таких как .com, .ru, .uk и т.п. Большинство из них расположены в США, несколько - в Европе и Японии, а также в разных странах есть "зеркала", которые дублируют информацию. Управлением DNS-серверов занимается международная некоммерческая организация ICANN, расположенная в США.

2018: Впервые в истории интернета обновлены ключи шифрования для защиты DNS

11 октября 2018 года состоялась первая в истории интернета и долгожданная замена криптографических ключей, защищающих систему доменных имен (DNS). Этот процесс, как сообщили в [[Internet Corporation for Assigned Names and Numbers ICANN|Корпорации по управлению доменными именами и IP-адресами (ICANN)]], прошла без неполадок.

Криптографические ключи появились в 2010 году по инициативе ICANN. Они применялись в расширении DNS Security (DNSSEC). Изначально в DNS-серверах не была предусмотрена проверка подлинности ответов, чем пользовались злоумышленники: они могли перехватить запрос компьютера пользователя, который пытался установить IP-адрес своего «места назначения», и заменить его на неправильный. Таким образом, пользователь, сам того не замечая, мог подключиться к серверу мошенников. Чтобы избежать этого, в 2010 году было выпущено расширение DNSSEC, которое согласились установить многие крупные интернет-провайдеры.

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

ICANN планировала менять ключи каждые пять лет. В первый раз смена ключей должна была произойти в 2015 году, но ее откладывали из-за низкого уровня готовности интернет-провайдеров.

В ICANN предупреждали, что ряд интернет-пользователей, чьи сетевые операторы или интернет-провайдеры не будут готовы к смене ключа, могут столкнуться с проблемами. Они могут возникнуть при преобразовании имени ресурса в числовой IP-адрес, который компьютеры используют для соединения друг с другом.

«
Никаких сбоев не замечено. Мы уделяли особое внимание ряду участков, где такие сбои могли бы произойти, но никаких проблем не возникло, — заявил представитель ICANN Брэд Уайт (Brad White), добавив, что обновление прошло успешно.
»

Вице-президент ICANN по исследовательской деятельности Мэтт Ларсон уверен, что такое обновление криптографических ключей станет обычным делом для операторов.[1]

2017: Минкомсвязи поручили создать "независимый интернет" для стран БРИКС

В ноябре 2017 года Совет безопасности России поручил Минкомсвязи совместно с МИД РФ до 1 августа 2018 года проработать вопрос создания собственной системы корневых серверов доменных имен, или DNS, в странах БРИКС (Бразилия, Россия, Индия, Китай и Южная Африка). Иными словами, пишет РБК, Совбез поручил сделать интернет в этих странах не зависимым от международных организаций и воздействия извне.

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

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

2014: Передача функций контроля за управлением корневой зоной DNS от правительства США

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

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

Другой вариант предполагает создание новой структуры, надзирающей за деятельностью ICANN по управлению доменной системой и управляемой представителями интернет-сообщества. Авторы предложений подчеркивают, что речь идет о некоммерческой структуре с минимальным числом сотрудников. Таким образом, межотраслевая рабочая группа стремится, очевидно, избежать того, чего опасаются многие наблюдатели – создания «еще одной ICANN для надзора над ICANN».

Структура, условно обозначенная в документе как Contract Co, и возьмет на себя функции NTIA по контролю за управлением корневой зоной DNS. Выработка условий контракта с Contract Co и надзор за соблюдением его исполнения будут возложены на комитет Multistakeholder Review Team, сформированный из числа делегатов всех сообществ, чьи интересы представляет ICANN. Механизмы формирования этого комитета пока не определены и, вероятно, станут предметом жарких дискуссий, поскольку к максимальному представительству в нем будут стремиться самые разные группы с зачастую противоположными интересами.

Также будет сформирован новый постоянный комитет Customer Standing Panel, куда войдут представители регистратур общих и национальных доменов верхнего уровня – как главные «потребители услуг» корневой зоны DNS. Он будет транслировать комитету Multistakeholder Review Team пожелания регистратур, обеспечивая тем самым подотчетность ICANN перед ними. Наконец, предполагается и создание независимого апелляционного комитета, куда могут быть поданы жалобы на любые решения, связанные с управлением корневой зоной DNS, включая, очевидно, и решения о делегировании либо снятии с делегирования доменов.

Предложения опубликованы на сайте ICANN, комментарии к ним принимаются до 22 декабря 2014 года. Окончательное предложение правительству США по передаче функций контроля над управлением корневой зоной DNS должно быть сформулировано летом 2015 года.

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

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

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

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

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

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

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

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

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

  • Зона — логический узел в дереве имён. Право администрировать зону может быть передано третьим лицам, за счёт чего обеспечивается распределённость базы данных. При этом персона, передавшая право на управление в своей базе данных хранит информацию только о существовании зоны (но не подзон!), информацию о персоне (организации), управляющей зоной, и адрес серверов, которые отвечают за зону. Вся дальнейшая информация хранится уже на серверах, ответственных за зону.
  • Доме́н — название зоны в системе доменных имён (DNS) Интернета, выделенной какой-либо стране, организации или для иных целей. Структура доменного имени отражает порядок следования зон в иерархическом виде; доменное имя читается слева направо от младших доменов к доменам высшего уровня (в порядке повышения значимости), корневым доменом всей системы является точка ('.'), следом идут домены первого уровня (географические или тематические), затем — домены второго уровня, третьего и т. д. (например, для адреса ru.wikipedia.org домен первого уровня — org, второго wikipedia, третьего ru). На практике точку в конце имени часто опускают, но она бывает важна в случаях разделения между относительными доменами и FQDN (англ. Fully Qualifed Domain Name, полностью определённое имя домена).
  • Поддомен (англ. subdomain) — имя подчинённой зоны. (например, wikipedia.org — поддомен домена org, а ru.wikipedia.org — домена wikipedia.org). Теоретически такое деление может достигать глубины 127 уровней, а каждая метка может содержать до 63 символов, пока общая длина вместе с точками не достигнет 254 символов. Но на практике регистраторы доменных имён используют более строгие ограничения.
  • DNS-сервер — специализированное ПО для обслуживания DNS. DNS-сервер может быть ответственным за некоторые зоны и/или может перенаправлять запросы вышестоящим серверам.
  • DNS-клиент — специализированная библиотека (или программа) для работы с DNS. В ряде случаев DNS-сервер выступает в роли DNS-клиента.
  • Ответственность (англ. authoritative) — признак размещения зоны на DNS-сервере. Ответы DNS-сервера могут быть двух типов: ответственные (когда сервер заявляет, что сам отвечает за зону) и неответственные (англ. Non-authoritative), когда сервер обрабатывает запрос, и возвращает ответ других серверов. В некоторых случаях вместо передачи запроса дальше DNS-сервер может вернуть уже известное ему (по запросам ранее) значение (режим кеширования).
  • DNS-запрос (англ. DNS query) — запрос от клиента (или сервера) серверу. Запрос может быть рекурсивным или нерекурсивным. Нерекурсивный запрос либо возвращает данные о зоне, которая находится в зоне ответственности DNS-сервера (который получил запрос) или возвращает адреса корневых серверов (точнее, адрес любого сервера, который обладает большим объёмом информации о запрошенной зоне, чем отвечающий сервер). В случае рекурсивного запроса сервер опрашивает серверы (в порядке убывания уровня зон в имени), пока не найдёт ответ или не обнаружит, что домен не существует. На практике поиск начинается с наиболее близких к искомому DNS-серверов, если информация о них есть в кеше и не устарела, сервер может не запрашивать DNS-серверы). Рекурсивные запросы требуют больше ресурсов от сервера (и создают больше трафика), так что обычно принимаются от «известных» владельцу сервера узлов (например, провайдер предоставляет возможность делать рекурсивные запросы только своим клиентам, в корпоративной сети рекурсивные запросы принимаются только из локального сегмента). Нерекурсивные запросы обычно принимаются ото всех узлов сети (и осмысленный ответ даётся только на запросы о зоне, которая размещена на узле, на DNS-запрос о других зонах обычно возвращаются адреса корневых серверов).
  • Субдомен — дополнительное доменное имя 3-го уровня в основном домене. Может указывать как на документы корневого каталога, так и на любой подкаталог основного сервера. Например, если у вас есть домен вида mydomain.ru, вы можете создать для него различные поддомены вида mysite1.mydomain.ru, mysite2.mydomain.ru и т. д.

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

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

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

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

Рекурсия

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

Предположим, мы набрали в браузере адрес 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-запрос

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-записей:

  • Запись 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.

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

Документ RFC 2606 (Reserved Top Level DNS Names — Зарезервированные имена доменов верхнего уровня) определяет названия доменов, которые следует использовать в качестве примеров (например, в документации), а также для тестирования. Кроме example.com, example.org и example.net, в эту группу также входят test, invalid и др.

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

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

Программное обеспечение DNS

Серверы имен:

  • BIND (Berkeley Internet Name Domain)
  • djbdns (Daniel J. Bernstein's DNS)
  • MaraDNS
  • NSD (Name Server Daemon)
  • PowerDNS
  • Microsoft DNS Server (в серверных версиях операционных систем Windows NT)
  • MyDNS

Атаки на DNS-серверы

Основная статья: Атаки на DNS-сервера

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

Во–первых, в результате DNS-атак пользователь рискует не попасть на нужную страницу. При вводе адреса сайта атакованный DNS будет перенаправлять запрос на подставные страницы.

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

Информация о домене

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

Регистрация домена

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