Служба DNS входить до числа основних служб Інтернету, що забезпечують його функціонування. Для її роботи необхідна наявність різних видів серверів, які зазвичай територіально знаходяться на значній відстані один від одного. Розуміння принципів їхньої взаємодії дасть змогу Адміністратору ухвалювати правильні рішення в разі виникнення непередбачуваних ситуацій, яких може бути безліч. Розглянемо основні види DNS-серверів і схему їхньої взаємодії між собою.
Базові поняття про DNS-сервери
У статті, присвяченій життєвому циклу домену, ми вже розглядали структуру системи доменних імен, у якій для кожної частини доменного імені виокремлюється окрема доменна зона, керована одним або кількома DNSсерверами. Виходячи з цього, можна виділити такі основні види серверів:
- Корневий (Root server);
- Верхнього рівня (TLD server);
- Авторитативний (Authoritative server);
- Рекурсивний або перенаправляючий (Recursive server).
Розглянемо детальніше призначення серверів кожної групи.
Кореневий
Root-сервер обслуговує кореневу доменну зону, яка відповідає за обробку крайньої правої частини імені сайту (див. Рисунок 1). Цю частину прийнято позначати порожнім символом. Зазвичай символ ".", що стоїть перед коренем, опускають, що не заважає обробці домену.
Його основне призначення - зберігання актуальної інформації про TLD-сервери, що дає змогу знаходити їх і обробляти відповідну групу символів у назві сайту.
Їхня кількість залежить від розміру DNSпакета і тому не може перевищувати тринадцять одиниць. Однак через наявність дзеркал їхня загальна кількість у всьому світі становить приблизно двісті одиниць. Дзеркала розкидані по всій території Землі - у Південній і Північній Америці, Європі та Африці. Вони підвищують рівень відмовостійкості системи DNS і розвантажують найбільш завантажені ділянки мережі.
Рисунок 1. Схема обробки DNS-запитів серверами різних видів.
TLD-сервер
TLD (Top Level Domain) serverзабезпечує обробку першої частини назви домену, що стоїть після кореня - gov, info, edu, net, com, org та ін. (див. Рисунок 1). Може обслуговувати різні види доменних зон верхнього рівня залежно від типу верхнього домену: gTLD (загальний), sTLD (спонсорований), ccTLD (національний) тощо.
Цей сервер є першим в ієрархії обробників запитуваних імен, не рахуючи кореневого. За ним можуть слідувати обробники другого, третього та інших рівнів.
Авторитативний
Authoritative server може бути первинним (master) і вторинним (slave). Їхнє основне призначення - зберігання і видача за запитом реальних IP-адрес, що належать до їхньої зони дії. Інакше кажучи, вони надають відповіді на запити про імена, вже налаштовані в їхній системі. Попередньо проводиться налаштування на відповідні доменні зони.
Запити до них можуть надходити тільки від серверів імен, чим досягається оптимальний режим їх роботи, що сприяє формуванню швидких відповідей на запити, що надходять.
Master забезпечує зберігання копій усіх записів доменної зони і можливість внесення в них змін. Усі підлеглі пристрої отримують оновлення в автоматичному режимі.
Slave містить точну копію первинної бази і безпосередньо взаємодіє з Master за допомогою вбудованих можливостей системи DNS. Внесення змін не допускається. Основна мета використання - рівномірний розподіл навантаження і захист від збою.
Authoritative server може надати один із таких типів відповідей на запит про дозвіл імені:
- Повний дозвіл імені на підставі DNS-запису з власного сховища;
- Перенаправлення на відповідний сервер імен у разі неможливості дати відповідь;
- Помилка NXDOMAIN, якщо запитуване ім'я не існує;
- Помилка NODATA, якщо ім'я існує, але відповідний DNS-запис не знайдено.
Рекурсивний
Recursive serverвідповідає на DNSзапити, запитуючи інформацію про DNSзаписи у серверів імен, зокрема gTLDта інших рівнів. Він не має постійного сховища даних, а лише використовує тимчасову інформацію або кеш, який періодично оновлюється.
До групи Recursive server, зокрема, належать резолвери, кешуючі, перенаправляючі та деякі інші види програмно-апаратних пристроїв.
Наведемо типові види відповідей, що формуються пристроями цієї групи:
- Повний дозвіл запитуваного імені на підставі DNS-запису з власного сховища (за його наявності);
- Помилка NXDOMAIN або NOERROR;
- Неавторитетна відповідь на підставі інформації з кешу попереднього рекурсивного запиту;
- Відправлення даних, отриманих з віддалених авторитетних джерел, наприклад, TLD-серверів.
Recursive server найчастіше використовується для відповіді на загальні DNS-запити в локальній мережі.
Формування DNS-запитів
Опишемо приблизну схему "роботи" DNS-серверів з дозволу доменного імені на прикладі Рисунка 1.:
- DNS-клієнт надсилає рекурсивний запит про дозвіл назви сайту (example.net)локальному резолверу;
- Локальний резолвер переглядає свої зони і в разі, якщо не була знайдена потрібна зона, формує ітеративний запит до Root-server;
- Root-server повертає IP-адресу сервера імен для домену верхнього рівня .net;
- Локальний резолвер посилає ітеративний запит TLD-серверу .net;
- Останній повертає IP-адресу сервера імен, що обслуговує домен example.net;
- Локальний резолвер формує ітеративний запит за наданою IP-адресою;
- Authoritative server дозволяє доменне ім'я і повертає резолверу IP-адресу запитуваного веб-ресурсу;
- Резолвер передає отриману IP-адресу для "example.net" DNS-клієнту, і оброблення запиту завершується.
Ми лише описали спрощену схему визначення IP-адреси, в якій можуть бути присутніми й інші елементи - додаткові резолвери, пристрої, що кешують, і т. ін., але принцип формування та обробки запитів залишається тим самим.