Що таке DNS

Доменна система імен (DNS) — це система, що прив’язує IP-адресу до символьного імені домену. Система DNS працює за принципом ієрархії та використовує довільну кількість частин (доменів), що розділяються точкою. Кореневі домени або домени верхнього рівня в інтернеті керуються центром 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 до 43 200 секунд. Низьке значення (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).