Инструменты пользователя

Инструменты сайта


rias:domainnamesystembasics

Это старая версия документа!


Основные понятия Domain Name System

1. Общие понятия

Исторически, до появления доменной системы имен роль инструмента разрешения символьных имен в IP выполнял файл etc/hosts, который и в настоящее время играет далеко не последнюю роль в данном деле. Но с ростом количества хостов в глобальной сети, отслеживать и обслуживать базу имен на всех хостах стало нереально затруднительно. В результате придумали DNS, представляющую собой иерархическую, распределенную систему доменных зон. Рассмотрим структуру Системы Доменных Имён на иллюстрации:\

Доменная структура DNS представляет собой древовидную иерархию, состоящую из узлов, зон, доменов, поддоменов и других элементов, о которых ниже пойдет речь. «Вершиной» доменной структуры является корневая зона. Настройки корневой зоны расположены на множестве серверов/зеркал, размещенных по всему миру, и содержат информацию о всех серверах корневой зоны, а также отвечающих за домены первого уровня (ru, net, org и др.).\

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

Зона — это любая часть дерева системы доменных имен, размещаемая как единое целое на некотором DNS-сервере. Зону, для большего понимания, можно назвать «зоной ответственности». Целью выделения части дерева в отдельную зону является передача ответственности, то есть делегирование, за эту ветвь другому лицу или организации. На иллюстрации примеры зон выделены синим градиентом: зона name., зона k-max.name. со всеми подчиненными ресурсами, www.openoffice.org со всеми подчиненными поддоменами и ресурсами. В каждой зоне имеется, по крайней мере, один авторитетный сервер DNS, который хранит всю информацию о зоне, за которую он отвечает.\

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

Каждый узел в иерархии DNS отделен от своего родителя точкой. Если провести аналогию с файловой системой Linux, система доменных имен имеет похожую структуру, за тем исключением, что разделитель в файловой системе — слэш, а в DNS — точка. Также DNS-адрес читается справа налево: от корневого домена к имени хоста. Часто последняя точка, обозначающая корневой домен, в доменном имени опускается.\

FQDN (Fully Qualified Domain Name, полностью определённое имя домена) — это имя домена, однозначно определяющее доменное имя и включающее в себя имена всех родительских доменов иерархии DNS, в том числе и корневого. Это своеобразный аналог абсолютного пути в файловой системе. Разберем это на примере имени домена mail.k-max.name:\

Различие между FQDN и обычным доменным, то есть неFQDN, именем появляется при именовании доменов второго, третьего и последующих уровней. Для получения FQDN требуется обязательно указать в доменном имени домены более высокого уровня. Например, mail является доменным именем, однако FQDN-имя выглядит как mail.k-max.name. Максимальный размер FQDN — 255 байт, с ограничением в 63 байта на каждое имя домена.\

Поддомены — это подчиненные домены. По большому счету, все домены в интернете являются подчиненными, за исключением корневого. Например, домен k-max является поддоменом домена name, а name, в свою очередь, — поддоменом корневого домена.\

В иерархии DNS после корневого домена идут домены первого или верхнего уровня, они же TLD, они же Top-Level Domain. К ним относятся национальные домены (ru., ua. и др.) и общие домены (com., net. и др.). Существуют также специализированные домены, зарезервированные доменные имена и домены, используемые для примеров и тестирования, например example.com, example.org, example.net, test, invalid и др. Заканчивается доменная иерархия именами хостов, которые задаются соответствующими ресурсными или хостовыми записями.\

2. Ресурсные записи

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

Запись ресурса состоит из следующих полей:\

* имя (NAME) — доменное имя, к которому привязана или которому «принадлежит» данная ресурсная запись, либо IP-адрес. При отсутствии данного поля запись ресурса наследуется от предыдущей записи.\ * Time To Live (TTL) — время жизни записи, то есть время хранения записи в кэше DNS. После указанного времени запись удаляется.\ * класс (CLASS) — определяет тип сети. В большинстве случаев используется IN, что обозначает Internet.\ * тип (TYPE) — тип записи, синтаксис и назначение записи.\ * данные (DATA) — различная информация, формат и синтаксис которой определяется типом.\

Наиболее часто применяемые ресурсные записи:\

* A (address record, запись адреса) — отображает имя хоста, то есть доменное имя, на адрес IPv4. Для каждого сетевого интерфейса машины должна быть сделана одна A-запись.\ * AAAA (IPv6 address record) — аналогична записи A, но используется для IPv6.\ * CNAME (canonical name record, каноническая запись имени или псевдоним) — отображает алиас на реальное имя, например алиас ftp для хоста www.k-max.name.:\

* MX (mail exchange) — указывает хосты для доставки почты, адресованной домену. Поле NAME указывает домен назначения, поле TYPE принимает значение MX, а поле DATA указывает приоритет и через пробел доменное имя хоста, ответственного за прием почты. Например, следующая запись показывает, что для домена k-max.name почту нужно направлять сначала на mx.k-max.name, затем на mx2.k-max.name, если с первым сервером возникли проблемы:\

* NS (name server, сервер имён) — указывает на DNS-сервер, обслуживающий данный домен. Вернее будет сказать, что NS-записи указывают серверы, на которые делегирован данный домен. Например, зону name. обслуживают следующие NS:\

Зону k-max.name обслуживают:\

* PTR (pointer) — отображает IP-адрес в доменное имя. Этот тип записи используется при обратном преобразовании имен.\ * SOA (Start of Authority, начальная запись зоны) — описывает основные настройки зоны и определяет зону ответственности данного сервера. Для каждой зоны должна существовать только одна запись SOA, и она должна быть первой.\

Поле Name содержит имя домена или зоны, поля TTL и CLASS имеют стандартное значение, поле TYPE принимает значение SOA, а поле DATA состоит из нескольких значений: имя главного DNS, адрес администратора зоны, серийный номер файла зоны и значения таймеров. При каждом внесении изменений в файл зоны серийный номер необходимо увеличивать, чтобы вторичные серверы понимали, что зона изменилась. Ниже приведены две одинаковые записи SOA, но вторая записана в несколько строк и более понятна по структуре:\

* SRV (server selection) — указывает на серверы, обеспечивающие работу тех или иных служб в данном домене, например Jabber и Active Directory.\

Делегирование — это операция передачи ответственности за часть дерева доменных имен, то есть за зону, другому лицу или организации. За счет делегирования в DNS обеспечивается распределенность администрирования и хранения зон. Технически делегирование заключается в выделении части дерева в отдельную зону и размещении этой зоны на DNS-сервере, принадлежащем другому лицу или организации. При этом в родительскую зону включаются «склеивающие» ресурсные записи NS и A, содержащие указатели на авторитативные DNS-серверы дочерней зоны, а вся остальная информация хранится уже на DNS-серверах дочерней зоны.\

Например, делегирование управления поддоменом k-max.name другому лицу приводит к созданию новой зоны, которая администрируется независимо от остального пространства имен. После делегирования зона k-max.name уже не зависит от зоны name. и может содержать любые доменные имена, которые заканчиваются на .k-max.name. Если отдельный поддомен, например ftp.k-max.name, будет выделен в самостоятельную зону, то зона k-max.name не будет содержать записи, заканчивающиеся на //.ftp.k-max.name//.\

После делегирования ответственности информация, хранимая делегирующей зоной, уже не включает ресурсные записи хостов делегированного поддомена, а хранит информацию о серверах имен, являющихся для делегируемого поддомена авторитативными. Это и есть «склеивающие» записи.\

3. Серверы DNS

Существуют несколько типов DNS-серверов: первичный, вторичный и кэширующий.\

Главный сервер DNS — он же первичный, master, primary — это авторитетный сервер, который хранит главную копию файла данных зоны, сопровождаемую администратором системы.\

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

Любой запрос относительно хоста в пределах зоны, за которую отвечает авторитетный сервер, будет в конце концов передан одному из этих серверов — главному или вторичному. Вторичных серверов может быть сколько угодно много. В зависимости от настроек главный сервер может посылать вторичному сигнал об изменении зоны, после чего вторичный сервер производит копирование. Это действие называется трансфер зоны (zone transfer). Существует два механизма копирования зоны: полное копирование AXFR и инкрементальное копирование IXFR.\

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

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

4. Клиенты DNS (resolver)

Для разрешения имен и IP-адресов клиентскими приложениями используется библиотека Resolver. Это не отдельное приложение, а функциональность системы. Приложения посылают системные вызовы gethostbyname и gethostbyaddr, а ядро на основании настроек в файле /etc/nsswitch.conf определяет, как действовать дальше. Данный файл задает, какие сервисы — например, /etc/hosts или DNS — и в каком порядке использовать. В ранних версиях библиотеки Linux libc использовался файл /etc/host.conf.\

Фрагмент файла /etc/nsswitch.conf:\

Строка hosts: files dns указывает ядру производить преобразование имен хостов в IP сначала из файла hosts, затем силами DNS. Строка networks: files указывает выполнять преобразование имен сетей в IP с помощью файла /etc/network. Возможны также параметры nis или nisplus, определяющие использование Network Information System. Порядок перечисления сервисов определяет последовательность их опроса.\

Если согласно /etc/nsswitch.conf запрос отправляется DNS, то используются настройки из файла /etc/resolv.conf, который определяет, какие серверы DNS использовать. Типичный пример файла /etc/resolv.conf:\

Директива nameserver определяет адрес сервера доменных имен, который будет выполнять рекурсивные запросы resolver. В данном файле указано использовать сервер имен сначала 192.168.1.1, затем, если первый не смог обработать запрос, 192.168.1.2. Рекомендуется не использовать более трех параметров nameserver. Если опция nameserver не задана, резолвер попытается соединиться с сервером на локальном хосте.\

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

Кроме кэша на DNS-сервере, существуют кэши интернет-браузеров и кэши резолверов. Схематично это можно представить так:\

5. Запросы DNS

В DNS имеются следующие типы запросов: итеративный, обратный и рекурсивный.\

Итеративный запрос, он же прямой и нерекурсивный, посылает доменное имя DNS-серверу и просит вернуть либо IP-адрес этого домена, либо имя DNS-сервера, авторитативного для этого домена. При этом DNS-сервер не опрашивает другие серверы для получения ответа. Так работают корневые и TLD-серверы.\

Рекурсивный запрос посылает DNS-серверу доменное имя и просит возвратить IP-адрес запрошенного домена. При этом сервер может обращаться к другим DNS-серверам.\

Обратный запрос посылает IP и просит вернуть доменное имя.\

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

Разберем схему по шагам:\

1. Клиент — браузер, почтовая программа или другое приложение — отправляет запрос резолверу, а резолвер на основании указанных конфигов определяет адрес настроенного сервера имен.\ 2. Резолвер посылает запрос указанному серверу имен.\ 3. Сервер имен принимает рекурсивный запрос и, если не имеет информации о домене или зоне, отправляет запрос серверу, отвечающему за корневую зону.\ 4. Сервер корневой зоны не обрабатывает рекурсивные запросы, поэтому рассматривает данный запрос как итеративный и возвращает имя и адрес сервера, авторитетного за нужную зону.\ 5. Сервер последовательно опрашивает авторитативные серверы для последующих зон в порядке убывания уровня зон в имени.\ 6. Количество шагов может быть больше в зависимости от длины и вложенности доменного имени.\ 7. В итоге сервер получает необходимый ответ от сервера имен, хранящего нужную ресурсную запись о хосте.\ 8. Сервер локальной сети возвращает резолверу клиента запрошенные данные.\

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

Для выбора среди авторитативных DNS-серверов одной зоны серверы BIND используют метрику RTT (roundtrip time) — время отклика. RTT определяет задержку, с которой приходит ответ от удаленного сервера. При передаче запроса удаленному серверу BIND запускает внутренний таймер, а при получении ответа фиксирует метрику. Если нужно выбрать один из нескольких авторитативных серверов, выбирается сервер с наименьшим значением RTT. До первого обращения серверу присваивается случайное значение RTT, чтобы BIND гарантированно опросил все авторитативные серверы зоны, прежде чем начнет выбирать предпочтительный на основании метрики.\

6. Ответы DNS сервера

Ответы DNS бывают следующих типов:\

* Авторитативный ответ (authoritative response) — приходит от серверов, являющихся ответственными за зону.\ * Неавторитативный ответ (non authoritative response) — приходит от серверов, которые не отвечают за зону, например от кэширующих серверов.\

Ответ DNS обычно содержит следующую информацию:\

* Запись заголовка — служебную информацию о запросе.\ * Запись запроса — повторяет отправленный запрос.\ * Запись ответа — собственно сам ответ.\ * Записи авторитетных серверов — информацию об авторитетных серверах, хранящих информацию по текущему запросу.\ * Дополнительную информацию — дополнительные записи, например адреса NS-серверов.\

Вышенаписанное наглядно подтверждается утилитой dig:\

7. Обратное преобразование имен

DNS используется в первую очередь для преобразования доменных имен в IP-адреса, но он также может выполнять обратный процесс, называемый обратным преобразованием имен или обратным отображением. Так как записи в прямой базе DNS структурированы иерархически по доменным именам, DNS не может эффективно выполнять поиск по IP-адресу в такой базе. Для обратного преобразования используется специальный домен in-addr.arpa. Ресурсные записи в данном домене в поле Name содержат IP-адреса, в поле Type — PTR, а в поле Data — FQDN-имя, соответствующее данному IP.\

На схеме представлена структура домена arpa. Домен arpa. имеет два поддомена in-addr и ip6, отвечающие за IPv4 и IPv6 адреса соответственно. Домен in-addr.arpa. имеет поддомены от .0.in-addr.arpa. до .255.in-addr.arpa., каждый из которых также имеет по 256 поддоменов.\

В целях уменьшения объема нежелательной корреспонденции, то есть спама, многие почтовые серверы могут проверять наличие PTR-записи для хоста, с которого происходит отправка. В этом случае PTR-запись для IP-адреса должна соответствовать имени отправляющего почтового сервера, которым он представляется в процессе SMTP-сессии.\

Наглядно приведенную схему можно представить командами:\

Команду dig -x 194.87.0.50 правильнее представить как dig 50.0.87.194.in-addr.arpa., то есть записи в поддоменах .in-addr.arpa представлены в обратной нотации. Хосту с IP 194.87.0.50 будет соответствовать PTR-запись с FQDN 50.0.87.194.in-addr.arpa., которая, в свою очередь, указывает на домен www.ru. Чаще всего за обратную зону и ее редактирование отвечает поставщик интернета.\

Ресурсная запись PTR в домене IN-ADDR.ARPA, соответствующая приведенной выше записи A для машины www.ru, будет иметь такой вид:\

Имя 50.0.87.194 не заканчивается точкой и поэтому является относительным. Чтобы эта запись была FQDN, домен по умолчанию должен называться IN-ADDR.ARPA.. Этого можно добиться либо поместив PTR-записи в отдельный файл, в котором доменное имя зоны по умолчанию — IN-ADDR.ARPA., либо изменив этот домен с помощью директивы $ORIGIN. Если домен по умолчанию определен как 0.87.194.IN-ADDR.ARPA., то запись можно представить так:\

8. Регистрация доменных имен

Регистрация доменов — это действие, посредством которого клиент сообщает регистратору, каким DNS-серверам следует делегировать поддомен, а также предоставляет контактную и платежную информацию. Регистратор передает информацию в соответствующий реестр. Чаще всего это процесс внесения в реестр зоны первого уровня, то есть в TLD-зоны ru, com или другие, записи о новом доменном подимени.\

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

Уровни доменов, для которых необходима обязательная регистрация лица, ответственного за домен:\

* корневой домен\ * все домены первого уровня (TLD)\ * некоторые домены второго уровня, например com.ru или co.uk\

Регистратором для корневого домена является организация ICANN. Чтобы стать регистратором доменов в зонах второго уровня — .com, .net, .org, .biz, .info, .name, .mobi, .asia, .aero, .tel, .travel, .jobs и других — необходимо получить аккредитацию ICANN.\

Правила регистрации в международных доменах gTLD, например com., org., устанавливаются ICANN. Правила регистрации в национальных доменах ccTLD, например ru, us, устанавливаются их регистраторами и/или органами власти соответствующих стран. Для многих доменов, в том числе для ru, регистратор не единственный. При наличии нескольких регистраторов все они должны использовать единую базу данных для исключения конфликтов и обеспечения уникальности доменного имени.\

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

rias/domainnamesystembasics.1781447381.txt.gz · Последнее изменение: — admin1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki