Служба DNS

Матеріал з Вікі ЦДУ
Версія від 09:26, 14 вересня 2010; Онищенко Сергей (обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

Протокол DNS (Domain Name Service - служба доменних імен) забезпечує пошук імен хостів, використовуючи розподілену по мережних серверах імен базу даних.

Протокол DNS виконує дві основні функції. Він дозволяє клієнтським комп'ютерам запитувати DNS-сервер про IP-адресу або ім'я якого-небудь хоста в мережі, а також дозволяє робити обмін інформацією між базами даних серверів DNS. У цьому протоколі використовується стандартний формат типу "запит-відповідь", де клієнт посилає пакет запиту, і сервер відповідає або пакетом з інформацією, отриманою з бази даних, або повідомленням про помилку, у якому вказується причина відмови в обробці запиту. У своїй роботі цей протокол використовує порт 53 і добре відомі протоколи — TCP або UDP. Причому останнім часом UDP став більш розповсюдженим методом транспортування пакетів по мережі Internet. Пакет DNS складається з п'яти полів: заголовка, питання, відповіді, повноважень і поля додаткової інформації.

Формат повідомлень DNS показаний на малюнку.

DNS.jpg

Ідентифікатор - 16-бітове поле для позначення відповідності між запитами і відгуками.

Q - 1-бітовий прапор запиту (query).

Запит - 4-бітовий опис типу повідомлення:

   0 стандартний запит (адреса по імені).
   1 зворотний запит (ім'я за адресою).
   2 запит стану сервера.

A (Authoritative Answer) - 1-бітовий прапор, що показує відгук від уповноваженого (authoritative) сервера імен.

T (Truncation) - відкидання. 1-бітовий прапор, що говорить про відкидання повідомлення.

R - 1-бітовий прапор, який встановлюэться для дозволу запиту рекурсивним шляхом.

V - 1-бітовий прапор підтримки рекурсивного сервісу.

B - 3-бітове поле, зарезервоване для використання в майбутньому (0).

Rcode - Код відгуку - 4-бітове поле, що встановлюэться сервером імен для позначення стану запиту:

      0 немає помилок.
      1 неможливо інтерпретувати запит через формальну помилку. 
      2 обробка неможлива через збій на сервері. 
      3 запитане ім'я не існує.  
      4 непідтримуваний тип запиту. 
      5 відмова від виконання запиту.

Лічильник питань - 16-бітове поле, що містить число записів у розділі питань.

Лічильник відповідей - 16-бітове поле, що містить число записів про ресурси в розділі відповідей.

Лічильник Authority - 16-бітове поле, що визначає число записів про ресурси сервера імен у розділі authority (повноваження).

Лічильник доповнень - 16-бітове поле, що визначає число записів про ресурси сервера імен у додатковому розділі.

Правила формування імен

Повне доменне (від англ. domain) ім'я машини (FQDN, Fully Qualified Domain Name) можна розбити на дві частини — ім'я області-домена та власне ім'я машини. Наприклад, m30.ziet.zhitomir.ua — повна доменне ім'я машини m30, яка знаходиться у домені ziet.zhitomir.ua.

За порядок у доменах, як правило, відповідає певний комп'ютер, користувачі-адміністратори якого слідкують за тим, щоб не було, наприклад, різних машин з однаковими ІР-адресами. Наприклад, відповідальність за область-домен ziet.zhitomir.ua покладається на машину alpha.ziet.zhitomir.ua Ця влада делегується зверху вниз від машини ns.lucky.net, яка відповідає за домен zhitomir.ua. В свою чергу, відповідальність за область ua делегована машині зверху від так званих кореневих серверів (root server).

Всю цю систему можна уявити у вигляді перевернутого дерева. Нижче наведений список імен доменів верхнього рівня (далеко не повний). Повний список географічних областей, в основному, відповідає двобуквені ISO-коди країн|двобуквеним ISO-кодам країн і його можна знайти, наприклад, на WWW-сервері ISOC (http://www.isoc.org).

Необхідно розрізняти доменне ім'я, та поштову адресу. В поштовій адресі повинен бути знак «@», якій розділяє поштову адресу на доменне ім'я та ім'я поштової скриньки.

Коли мережа Інтернет була молода та невелика, таблиці відповідності імен та адрес зберігалися у звичайному текстовий файл|текстовому файлі, який періодично просто розсилався всім учасникам електронною поштою. Після того, які кількість машин значно збільшилася, така схема перестала ефективно працювати і програмісти Університет Каліфорнії, Берклі|університету штату Каліфорнія в Берклі спроектували і написали програму BIND (Berkeley Internet Name Domain), яка відповідає на запити машин користувачів, які стосувалися імен та ІР-адресу.

Служба імен DNS (Domain Name System) — це розподілена база даних доволі простої структури. Для початкового знайомства можна вважати, що це кілька таблиць, у яких записано:

  • яку ІР-адресу має машина з певним іменем;
  • яке ім'я має машина з визначеною адресою;
  • що це за комп'ютер і яка операційна система встановлена на ньому;
  • куди потрібно направляти електронну пошту для користувачів цієї машини;
  • які псевдоніми є у даної машини.

Для прикладу розглянемо випадок, коли користувач посилає пошту з машини polesye.zhitomir.ua користувачу за адресою [email protected] (знак «@» носить назву commercial «at» sign). При встановленні на машину протоколів TCP/IP системний адміністратор вказує ІР-адресу комп'ютера — найближчого серверу імен. Поштова програма подає цьому найближчому серверу запит: «Куди посилати пошту для ziet.zhitomir.ua» Якщо найближчий сервер не може відповісти, то він, в свою чергу, посилає запит до більш «старшого» серверу. Нарешті, стає зрозумілим, що всю пошту для області ziet.zhitomir.ua необхідно відправляти на машину alpha.ziet.zhitomir.ua або relay2.lucky.net. Разом з цим відповіді містять ще адресу цієї машини. Поштова програма зв'язується з цим комп'ютером (використовуючи не ім'я, а адресу) та передає йому пошту. Всі ці переговори та відправка пошти, як правило, відбувається протягом кількох секунд і користувач не помічає цього. Якщо машина ziet.zhitomir.ua недоступна то тоді пошта на час, в якій неможливо зв'язатися з машиною ziet.zhitomir.ua (наприклад під час профілактики каналу зв'язку) чекає своєї черги на пересилку на машині relay2.lucky.net.

Це характерна для Internet-програм поведінка. Як правило, поштові програми подають доволі багато запитів службі DNS, і ці питання доволі складні. У більшості випадків у програмах користувачів намагаються дізнатися лише одне — яка ІР-адреса у машини з відповідним іменем. Зрозуміло, що всередині цієї системи імен існує маса нюансів, правил та хитрощів. Більш докладніше з ними можна ознайомитися в описах стандартів Internet або в спеціальних книгах.

Записи DNS

Найбільш важливі типи DNS-записів:

  • Запис A (address record) або запис адреси пов'язує ім'я хоста з адресою IP. Наприклад, запит A-запису на ім'я referrals.icann.org поверне його IP адресу - 192.0.34.164
  • Запис AAAA (IPv6 address record) зв'язує ім'я хоста з адресою протоколу IPv6. Наприклад, запит AAAA-запису на ім'я K.ROOT-SERVERS.NET поверне його IPv6 адресу - 2001:7 fd:: 1
  • Запис CNAME (canonical name record) або канонічний запис імені (псевдонім) використовується для перенаправлення на інше ім'я
  • Запис MX (mail exchange) або поштову обмінник вказує Поштовий сервер | сервер обміну поштою для цього домену.
  • Запис NS (name server) вказує на DNS-сервер для даного домену.
  • Запис PTR (pointer) або запис покажчика пов'язує IP хоста з його канонічним ім'ям. Запит у домені in-addr.arpa на IP хоста в reverse формі поверне ім'я (FQDN) даного хоста. Наприклад, (на момент написання), для IP адреси 192.0.34.164 : запит запису PTR 164.34.0.192.in-addr.arpa поверне його канонічне ім'я referrals. icann.org. З метою зменшення обсягу небажаної кореспонденції (спаму) багато серверів-одержувачі електронної пошти можуть перевіряти наявність PTR записи для хоста, з якого відбувається відправлення. У цьому випадку PTR запис для IP адреси повинна відповідати імені відправляє поштового сервера, яким він представляється в процесі SMTP сесії.
  • Запис SOA (Start of Authority) або початковий запис зони вказує, на якому сервері зберігається еталонна інформація по даному домені, містить контактну інформацію особи, відповідальної за дану зону, таймінги кешування зонної інформації та взаємодії DNS-серверів.
  • Запис SRV (server selection) вказує на сервери для сервісів, використовується, зокрема, для Jabber.

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

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

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

TCP/IP