Відмінності між версіями «DNS сервер»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
 
(не показано 8 проміжних версій цього учасника)
Рядок 1: Рядок 1:
'''DNS-сервер''' — додаток, призначений для відповідей на DNS-запити за відповідним протоколом. Також DNS-сервером можуть називати хост, на якому запущено програму.
+
'''DNS-сервер''' — додаток, призначений для відповідей на [[DNS запити|DNS-запити]] за відповідним протоколом. Також DNS-сервером можуть називати хост, на якому запущено програму.
  
 
== Типи DNS-серверів ==
 
== Типи DNS-серверів ==
Рядок 9: Рядок 9:
 
* '''''Локальний DNS-сервер''''' - використовується для обслуговування DNS-клієнтів, що виконуються на локальній машині. Фактично, це різновид кешуючого DNS-сервера, сконфігурований для обслуговування локальних додатків.
 
* '''''Локальний DNS-сервер''''' - використовується для обслуговування DNS-клієнтів, що виконуються на локальній машині. Фактично, це різновид кешуючого DNS-сервера, сконфігурований для обслуговування локальних додатків.
 
* '''''Перенаправляючий DNS-сервер''''' - сервер, що перенаправляє отримані рекурсивні запити кешуючому серверу (який знаходиться вище за ієрархією) у вигляді рекурсивних запитів. Використовується переважно для зниження навантаження на кешуючий DNS-сервер.
 
* '''''Перенаправляючий DNS-сервер''''' - сервер, що перенаправляє отримані рекурсивні запити кешуючому серверу (який знаходиться вище за ієрархією) у вигляді рекурсивних запитів. Використовується переважно для зниження навантаження на кешуючий DNS-сервер.
* '''''Кореневі сервери DNS''''' — сервер, який є авторитативним за кореневу зону. Загальновживаних кореневих серверів у світі всього 13 штук, їх доменні імена знаходяться в зоні '''''root-servers.net''''' і називаються '''''a.root-servers.net''''', '''''b.root-servers.net''''', …, '''''m.root-servers.net'''''. У певних конфігураціях локальної мережі можлива ситуація налаштування локальних кореневих серверів.
+
* '''''[[Кореневі сервери DNS]]''''' — сервер, який є авторитативним за кореневу зону. Загальновживаних кореневих серверів у світі всього 13 штук, їх доменні імена знаходяться в зоні '''''[[root-servers.net]]'''''. У певних конфігураціях локальної мережі можлива ситуація налаштування локальних кореневих серверів.
 
* '''''Реєструючий DNS-сервер'''''. Сервер, що приймає динамічні оновлення від користувачів. Часто поєднується з DHCP-сервером. У Microsoft DNS-сервер при роботі на контролері домену сервер працює в режимі реєструючого DNS-сервера, приймаючи від комп'ютерів домену інформацію про відповідність імені та IP-адресу комп'ютера і оновлюючи відповідно до неї дані зони домену.
 
* '''''Реєструючий DNS-сервер'''''. Сервер, що приймає динамічні оновлення від користувачів. Часто поєднується з DHCP-сервером. У Microsoft DNS-сервер при роботі на контролері домену сервер працює в режимі реєструючого DNS-сервера, приймаючи від комп'ютерів домену інформацію про відповідність імені та IP-адресу комп'ютера і оновлюючи відповідно до неї дані зони домену.
 
* '''''DNSBL-сервер''''' (сервер з чорними списками адрес та імен). Формально, такий сервер не входить в ієрархію DNS, однак використовує той же механізм і протокол для роботи, що і DNS-сервера.
 
* '''''DNSBL-сервер''''' (сервер з чорними списками адрес та імен). Формально, такий сервер не входить в ієрархію DNS, однак використовує той же механізм і протокол для роботи, що і DNS-сервера.
  
 
== Види DNS-запитів ==
 
== Види DNS-запитів ==
 
+
*'''''[[DNS запити|Прямий запит]]''''' (''forward'') — запит на перетворення доменне ім'я (символьної адреси) хоста в числову IP-адресу.
Протокол DNS для роботи використовує 53-й '''TCP'''-або '''UDP'''-порт для відповідей на запити. Традиційно запити і відповіді відправляються у вигляді однієї '''UDP''' датаграми. '''TCP''' використовується для '''AXFR'''-запитів.
+
*'''''[[DNS запити|Зворотний запит]]''''' (''reverse'') — запит на перетворення IP-адреси в ім'я хоста.
 
+
*'''''[[DNS запити|Рекурсивний запит]]''''' передбачає отримання остаточної відповіді від сервера, до якого він спрямований. Рекурсію виконує сервер.
=== Прямий запит ===
+
*'''''[[DNS запити|Ітеративний запит]]''''' - припускає (допускає) виконання рекурсії клієнтом.
'''''Прямий запит''''' (''forward'') — запит на перетворення доменне ім'я (символьної адреси) хоста в числову IP-адресу.
+
 
+
=== Зворотний запит ===
+
'''''Зворотний запит''''' (''reverse'') — запит на перетворення IP-адреси в ім'я хоста.
+
 
+
DNS використовується в першу чергу для перетворення символьних імен в IP-адреси, але він також може виконувати зворотний процес. Для цього використовуються вже наявні кошти '''DNS'''. Справа в тому, що із записом '''DNS''' можуть бути зіставлені різні дані, в тому числі і будь-яке символьне ім'я. Існує спеціальний домен '''''in-addr.arpa''''', записи в якому використовуються для перетворення IP-адрес в символьні імена.
+
 
+
Наприклад, для отримання DNS-імені для адреси 11.22.33.44 потрібно запросити у '''DNS-сервера''' запис 44.33.22.11.in-addr.arpa, і той поверне відповідне символьне ім'я. Зворотний порядок запису частин IP-адреси пояснюється тим, що в IP-адресах старші біти розташовані на початку, а в символьних DNS-іменах старші (що знаходяться ближче до кореня) частини розташовані в кінці.
+
 
+
=== Рекурсивний запит ===
+
 
+
Рекурсивний запит передбачає отримання остаточної відповіді від сервера, до якого він спрямований. Рекурсію виконує сервер.
+
 
+
=== Ітеративний запит ===
+
 
+
Ітеративний запит - припускає (допускає) виконання рекурсії клієнтом.
+
  
 
== Режим View ==
 
== Режим View ==
 
 
Деякі сервера підтримують можливість працювати в різних режимах для різних сегментів мережі. У '''Bind''' цей режим називається «view». Наприклад, сервер може для локальних адрес (наприклад, 10.0.0.0 / 8) віддавати локальні адреси серверів, для користувачів зовнішньої мережі — зовнішні адреси. Також сервер може бути авторитативним для заданої зони тільки для вказаного діапазону адрес (наприклад, у мережі 10.0.0.0 / 8 сервер оголошує себе авторитативним за зону internal, при цьому для зовнішніх адрес у відповідь на запит імені із зони internal буде віддаватися відповідь «не відомий»).
 
Деякі сервера підтримують можливість працювати в різних режимах для різних сегментів мережі. У '''Bind''' цей режим називається «view». Наприклад, сервер може для локальних адрес (наприклад, 10.0.0.0 / 8) віддавати локальні адреси серверів, для користувачів зовнішньої мережі — зовнішні адреси. Також сервер може бути авторитативним для заданої зони тільки для вказаного діапазону адрес (наприклад, у мережі 10.0.0.0 / 8 сервер оголошує себе авторитативним за зону internal, при цьому для зовнішніх адрес у відповідь на запит імені із зони internal буде віддаватися відповідь «не відомий»).
  
Рядок 42: Рядок 25:
 
Усі DNS-сервера за стандартом RFC 1035 відповідають на 53 порту TCP і UDP. При відправленні запитів ранні версії '''BIND''' використовували 53 порт, новіші поводять себе як DNS-клієнти, використовуючи вільні незареєстровані адреси.
 
Усі DNS-сервера за стандартом RFC 1035 відповідають на 53 порту TCP і UDP. При відправленні запитів ранні версії '''BIND''' використовували 53 порт, новіші поводять себе як DNS-клієнти, використовуючи вільні незареєстровані адреси.
  
=== Рекурсія ===
+
== [[Принцип роботи DNS-серверу]] ==   http://root-servers.org/
 
+
Терміном Рекурсія в DNS позначають алгоритм поведінки '''DNS-сервера''', при якому сервер виконує від імені клієнта повний пошук потрібної інформації в усій системі DNS, при необхідності звертаючись до інших '''DNS-серверів'''.
+
 
+
'''DNS-запит''' може бути ''рекурсивним'' - вимагають повного пошуку, - і ''нерекурсивним'' - не вимагають повного пошуку.
+
 
+
Аналогічно, '''DNS-сервер''' може бути рекурсивним (який вміє виконувати повний пошук) і нерекурсивним (не вміє виконувати повний пошук). Деякі програми DNS-серверів, наприклад, BIND, можна настроїти так, щоб запити одних клієнтів виконувалися рекурсивно, а запити інших - нерекурсивний.
+
 
+
При відповіді на ''нерекурсивний'' запит, а також - при невмінні або заборону виконувати ''рекурсивні'' запити, - DNS-сервер або повертає дані про зону, за яку ти відповідальний, або повертає адреси серверів, які володіють великим обсягом інформації про запитаної зоні, ніж відповідає сервер, найчастіше - адреси кореневих серверів.
+
 
+
У випадку рекурсивного запиту DNS-сервер запитує сервери (у порядку убування рівня зон в імені), поки не знайде відповідь або не виявить, що домен не існує. (На практиці пошук починається з найбільш близьких до шуканого DNS-серверів, якщо інформація про них є в кеші і не застаріла, сервер може не запитувати інші DNS-сервери.)
+
 
+
Розглянемо на прикладі роботу всієї системи.
+
 
+
Припустимо, ми набрали в браузері адресу 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-сервер, і він одержує можливість кешувати їх. Повторний запит на ті ж імена зазвичай не йде далі кешу сервера, звернення до інших серверів не відбувається взагалі. Допустимий час зберігання відповідей в кеші приходить разом з відповідями (поле TTL ресурсної запису).
+
 
+
Рекурсивні запити вимагають більше ресурсів від сервера (і створюють більше трафіку), так що зазвичай приймаються від «відомих» власнику сервера вузлів (наприклад, провайдер надає можливість робити рекурсивні запити тільки своїм клієнтам, в корпоративній мережі рекурсивні запити приймаються тільки з локального сегменту). Нерекурсівние запити зазвичай приймаються від усіх вузлів мережі (і змістовну відповідь дається тільки на запити про зону, яка розміщена на сайті, на DNS-запит про інших зонах зазвичай повертаються адреси інших серверів).
+
 
+
== [[Принцип роботи DNS-серверу]] ==
+

Поточна версія на 12:06, 19 жовтня 2010

DNS-сервер — додаток, призначений для відповідей на DNS-запити за відповідним протоколом. Також DNS-сервером можуть називати хост, на якому запущено програму.

Типи DNS-серверів

За виконуваними функцій DNS-сервери поділяються на декілька груп, залежно від конфігурації конкретний сервер може відноситися до декількох типів;

  • Авторитативний DNS-сервер — сервер, що відповідає за будь-яку зону.
    • Майстер або первинний сервер (в термінології BIND) — сервер, що має право на внесення змін в дані зони. Зазвичай для зони буває тільки один майстер сервер. У випадку Microsoft DNS-сервера і його інтеграції з Active Directory майстер-серверів може бути декілька (так як реплікація змін здійснюється не засобами DNS-сервера, а засобами Active Directory, за рахунок чого забезпечується рівноправність серверів і актуальність даних).
    • Слейв або вторинний сервер, що не має права на внесення змін в дані зони і отримує повідомлення про зміни від майстер-сервера. На відміну від майстер-сервера їх може бути (практично) необмежена кількість. Слейв так само є авторитативним сервером (і користувач не може розрізнити майстер і слейв, різниця з'являється тільки на етапі конфігурації / внесення змін до налаштувань зони).
  • Кешуючий DNS-сервер — сервер, який обслуговує запити клієнтів, (отримує рекурсивний запит, виконує його за допомогою нерекурсивних запитів до авторитативних серверів або передає рекурсивний запит DNS-серверу, що стоїть вище за ієрархією)
  • Локальний DNS-сервер - використовується для обслуговування DNS-клієнтів, що виконуються на локальній машині. Фактично, це різновид кешуючого DNS-сервера, сконфігурований для обслуговування локальних додатків.
  • Перенаправляючий DNS-сервер - сервер, що перенаправляє отримані рекурсивні запити кешуючому серверу (який знаходиться вище за ієрархією) у вигляді рекурсивних запитів. Використовується переважно для зниження навантаження на кешуючий DNS-сервер.
  • Кореневі сервери DNS — сервер, який є авторитативним за кореневу зону. Загальновживаних кореневих серверів у світі всього 13 штук, їх доменні імена знаходяться в зоні root-servers.net. У певних конфігураціях локальної мережі можлива ситуація налаштування локальних кореневих серверів.
  • Реєструючий DNS-сервер. Сервер, що приймає динамічні оновлення від користувачів. Часто поєднується з DHCP-сервером. У Microsoft DNS-сервер при роботі на контролері домену сервер працює в режимі реєструючого DNS-сервера, приймаючи від комп'ютерів домену інформацію про відповідність імені та IP-адресу комп'ютера і оновлюючи відповідно до неї дані зони домену.
  • DNSBL-сервер (сервер з чорними списками адрес та імен). Формально, такий сервер не входить в ієрархію DNS, однак використовує той же механізм і протокол для роботи, що і DNS-сервера.

Види DNS-запитів

  • Прямий запит (forward) — запит на перетворення доменне ім'я (символьної адреси) хоста в числову IP-адресу.
  • Зворотний запит (reverse) — запит на перетворення IP-адреси в ім'я хоста.
  • Рекурсивний запит передбачає отримання остаточної відповіді від сервера, до якого він спрямований. Рекурсію виконує сервер.
  • Ітеративний запит - припускає (допускає) виконання рекурсії клієнтом.

Режим View

Деякі сервера підтримують можливість працювати в різних режимах для різних сегментів мережі. У Bind цей режим називається «view». Наприклад, сервер може для локальних адрес (наприклад, 10.0.0.0 / 8) віддавати локальні адреси серверів, для користувачів зовнішньої мережі — зовнішні адреси. Також сервер може бути авторитативним для заданої зони тільки для вказаного діапазону адрес (наприклад, у мережі 10.0.0.0 / 8 сервер оголошує себе авторитативним за зону internal, при цьому для зовнішніх адрес у відповідь на запит імені із зони internal буде віддаватися відповідь «не відомий»).

Використовувані порти

Усі DNS-сервера за стандартом RFC 1035 відповідають на 53 порту TCP і UDP. При відправленні запитів ранні версії BIND використовували 53 порт, новіші поводять себе як DNS-клієнти, використовуючи вільні незареєстровані адреси.

== Принцип роботи DNS-серверу == http://root-servers.org/