Что такое DNS?
Доменная система имён (DNS) — собственно, система, привязывающая IP-адрес к символьному имени домена. Система DNS работает по принципу иерархии и использует произвольное количество частей (доменов), разделяемых точкой. Корневые домены или домены верхнего уровня в сети Internet управляются центром InterNIC (Public Information Regarding Internet Domain Name Registration Services).
Каждая страна имеет свои двухбуквенные домены, кроме того существуют домены и для типов организаций (.com — коммерческие организации; .edu — учебные заведения; .gov — правительственные учреждения; .mil — военные учреждения; .org — прочие организации; .net — сетевые ресурсы).
Для нахождения того или иного ресурса в сети система DNS использует DNS-сервера содержащие базу данных типа «IP-адрес — имя домена». Можно сказать, что вся информация о зонах хранится в файлах описания зон, а при запуске сервера она загружается в оперативную память. Поэтому, базой данных сервера называют всю совокупность файлов описания зон сервера.
Файлы зон содержат информацию о пространстве имен и могут содержать директивы и записи ресурсов. Директивы указывают серверу доменных имен на выполнение определённых задач или применение специальных настроек в зоне. Ресурсные записи определяют параметры зоны и соотносят пользователей с определёнными хостами. В файле зоны необязательно могут присутствовать директивы, но в нем обязательно должны быть ресурсные записи.
Пример файла зоны:
$TTL 1h @ 86400 IN SOA ns.example.com. hostmaster.example.com. ( 2009092102 ; Serial 10600 ; Refresh 800 ; Retry 3400000 ; Expire 86400 ) ; TTL ) ;;; NS ;;; NS ns1.my-ns-server.com. NS ns.my-secondary-ns.com. ;;; MX ;;; MX 10 mx.example.com. ;;; A ;;; A 192.168.0.1 www CNAME @ mx A 192.168.0.1
Все директивы и ресурсные записи вводятся в отдельной строке, комментарии размещаются после точки с запятой (;).
Директивы начинаются со знака доллара ($), после которого вводится имя директивы. Зачастую директивы пишут в начале файла зоны.
Ниже приведены часто используемые директивы:
$ INCLUDE — Позволяет включить другой файл зоны в этот файл зоны в месте, где появляется директива. Это позволяет хранить дополнительные настройки файла зоны отдельно от основного файла зоны.
$ ORIGIN — Добавляет имя домена к относительному доменному имени. По умолчанию $ORIGIN принимает значение доменного имени, указанного в операторе zone.
$ TTL — Устанавливает значение времени жизни по умолчанию (TTL) для зоны. Это время, на протяжении которого запись ресурса этой зоны действительна в кэше других серверов. Каждая запись ресурса может содержать свое собственное значение TTL , который перекрывает эту директиву.
Основные ресурсные записи DNS
Основополагающая запись DNS — SOA (start of authority record) или начальная запись зоны: запись, указывающая местоположение эталонной записи о данном домене, содержит контактную информацию лица, ответственного за данную зону, тайминги кеширования зонной информации и данные о взаимодействиях DNS-серверов.
Пример записи SOA:
@ IN SOA <primary-name-server> <hostmaster-email> ( <serial-number> <time-to-refresh> <time-to-retry> <time-to-expire> <minimum-TTL> )
Например:
@ 86400 IN SOA ua.example.com. hostmaster.example.com. ( 2009092102 ; Serial 10600 ; Refresh 800 ; Retry 3400000 ; Expire 86400 ) ; Minimum TTL
Где:
Serial — Серийный номер самого файла зоны. Серийный номер увеличивается каждый раз при изменении данных домена. Когда вторичный сервер проверяет необходимость обновления данных, он проверяет серийный номер записи SOA на первичном сервере.
Refresh — значение времени в секундах. Показывает время, через которое вторичный сервер будет пытаться обновить данные зоны с первичного сервера (читая SOA первичного сервера). Рекомендуется устанавливать значения от 1200 до 43200 секунд. Низкое значение (1200) устанавливается при частой необходимости обновления данных. Высокое 43200 (12 часов), если такой необходимости нет.
Retry — значение времени в секундах. Определяет время между попытками, если вторичный сервер не может связаться с первичным сервером, когда время обновления истекло. Рекомендуемые значения от 180 (3 минуты) до 900 (15 минут) и выше.
Expire — значение времени в секундах. Значение срока. Если попытки обновления данных не привели к успеху, то по истечении срока вторичный сервер перестаёт отвечать на запросы для данного домена и стирает свою копию файла зоны. Если контакт установлен, значения срока и обновления сбрасываются, и цикл начинается снова. Рекомендуется устанавливать значения от 1209600 до 2419200 секунд (2–4 недели).
TTL — Время жизни. Время, на протяжении которого запись ресурса этой зоны действительна в кэше других серверов.
*Обратите внимание, что временные промежутки можно вводить не только в секундах. Возможны варианты ввода данных в других форматах, например: 2w14h(2 недели 14 часов), 1d2h(1 день 2 часа), 4h30m(4 часа 30 минут), 30m45s(30 минут 45секунд), или любые другие варианты при использовании соответствующих букв. Кроме записи SOA, существуют другие ресурсные записи. Мы рассмотрим основные:
Запись А — запись соответствия имени хоста его IP-адресу.
Запись AAAA — запись соответствия имени хоста его IP-адресу для протокола IPv6.
Запись CNAME — запись канонического имени для псевдонима (одноуровневая переадресация). Данная запись используются для перенаправления трафика с субдомена, например почтового сервера, на другой сервер. Создание записи CNAME не нарушает работу электронной почты и других служб.
Запись MX (Mail Exchanger) — запись адреса почтового шлюза для домена. Управляет маршрутизацией почтовых сообщений для протокола SMTP. Запись критически важна для протокола SMTP.
Запись NS (Name Server) — запись адреса узла отвечающего за доменную зону. Указывает на сервера DNS, ответственные за конкретный домен и его поддомены.
Запись PTR (Domain name pointer) — используется для обратного разрешения IP-адресов в имена узлов в домене in-addr.arpa.
Запись SRV (Service Locator) — указатель на службу. Запись используется для поиска серверов, на которых функционируют определенные службы (Active Directory, Jabber).