Система доменних імен
Систе́ма доме́нних іме́н (англ. Domain Name System, DNS) — ієрархічна розподілена система перетворення імені хоста (комп'ютера або іншого мережевого пристрою) в IP-адресу. Кожен комп'ютер в Інтернеті має свою власну унікальну адресу — число, яке складається з чотирьох (у протоколі IPv4) або шістнадцяти (у протоколі IPv6) байтів. Оскільки запам'ятати десятки чи навіть сотні номерів — важка процедура, то всі (чи майже всі) машини мають імена, запам'ятати які (особливо якщо знати правила утворення імен) значно легше. Уся система імен в Інтернеті — ієрархічна. Це зроблено для того, щоб не підтримувати одне централізоване джерело, а роздати владу на місця. Правила формування імен![]() Повноцінне доменне ім'я (англ. FQDN - Fully Qualified Domain Name[en]) машини можна розбити на дві частини — ім'я області-домену та власне ім'я машини. Наприклад, m30.example.org — повне доменне ім'я машини m30, яка перебуває у домені example.org. За порядок у доменах, як правило, відповідає певний комп'ютер, користувачі-адміністратори якого слідкують за тим, щоб не було, наприклад, різних машин з однаковими ІР-адресами. Наприклад, відповідальність за область-домен example.org покладається на машину alpha.example.org Ця влада делегується зверху вниз від машини ns.example.net, яка, наприклад, відповідає за домен example.org. В свою чергу, відповідальність за область ua делегована машині зверху від так званих кореневих серверів (root server). Всю цю систему можна уявити у вигляді перевернутого дерева. Список імен доменів верхнього рівня на сайті IANA. Повний список географічних областей, в основному, відповідає двобуквеним ISO-кодам країн і його можна знайти, наприклад, на WWW-сервері ISOC (http://www.isoc.org). Необхідно розрізняти доменне ім'я, та поштову адресу. В поштовій адресі повинен бути знак «@», який в економіці має назву «комерційне at», а в електронній пошті — «равлик». Цей знак у поштовій адресі відокремлює ім'я поштової скриньки від доменного імені. Знак «@» вперше у 1971 році використав Рей Томлінсон, щоб відокремити імена користувача і комп'ютера, коли він відправив повідомлення з одного ДЕК-10 (Digital Equipment Corporation) комп'ютера на інший ДЕК-10. Обидва комп'ютери були розміщені поруч один з одним. Коли мережа Інтернет була молода та невелика, таблиці відповідності імен та адрес зберігалися у звичайному текстовому файлі, який періодично просто розсилався всім учасникам електронною поштою. Після того, які кількість машин значно збільшилася, така схема перестала ефективно працювати і програмісти університету штату Каліфорнія в Берклі спроектували і написали програму BIND (Berkeley Internet Name Domain), яка відповідає на запити машин користувачів, які стосувалися імен та ІР-адресу. Служба імен DNS (Domain Name System) — це розподілена база даних доволі простої структури. Для початкового знайомства можна вважати, що це кілька таблиць, у яких записано:
Для прикладу розглянемо випадок, коли користувач посилає пошту з машини example.com користувачу за адресою rozhik@example.org. При встановленні на машину протоколів TCP/IP системний адміністратор вказує ІР-адресу комп'ютера — найближчого серверу імен. Поштова програма подає цьому найближчому серверу запит: «Куди посилати пошту для example.org» Якщо найближчий сервер не може відповісти, то він, в свою чергу, посилає запит до більш «старшого» серверу. Нарешті, стає зрозумілим, що всю пошту для області example.org необхідно відправляти на машину alpha.example.org або relay2.example.net. Разом з цим відповіді містять ще адресу цієї машини. Поштова програма зв'язується з цим комп'ютером (використовуючи не ім'я, а адресу) та передає йому пошту. Всі ці переговори та відправка пошти, як правило, відбувається протягом кількох секунд і користувач не помічає цього. Якщо машина example.org недоступна то тоді пошта на час, в якій неможливо зв'язатися з машиною example.org (наприклад під час профілактики каналу зв'язку) чекає своєї черги на пересилку на машині relay2.example.net. Це характерна для Internet-програм поведінка. Як правило, поштові програми подають доволі багато запитів службі DNS, і ці питання доволі складні. У більшості випадків у програмах користувачів намагаються дізнатися лише одне — яка ІР-адреса у машини з відповідним іменем. Зрозуміло, що всередині цієї системи імен існує маса нюансів, правил та хитрощів. Докладніше з ними можна ознайомитися в описах стандартів Internet або в спеціальних книгах. Компанія «Хостмайстер» спільно з ICANN в Україні ввела у дію локальний кореневий сервер DNS, що містить інформацію про домени верхнього рівня. Сервер є «дзеркалом» одного з 13-кореневих серверів ICANN, відомого під назвою «L-root». Ієрархічна структура системи DNSЯк вже було відмічено, існує домен кореневого рівня, який позначається крапкою Розглянемо доменне ім'я комп'ютера Типи серверів DNSІснує три основні типи серверів DNS, які відрізняються покладеними на них завданнями:
Основний сервер DNS керує зоною повноважень. Якщо потрібно додати/видалити домен або вузол або якось інакше модифікувати зону, зміни потрібно проводити на основному сервері DNS. Через певний час, який залежить від налаштувань сервера, основний сервер передасть зону резервному серверу DNS. Дане явище називається трансфером зони. Що ж до резервних серверів, то повинен бути хоч би один резервний сервер DNS. Тому є декілька причин: якщо клієнтів багато, то наявність резервного сервера DNS дозволить знизити навантаження на основний сервер DNS і прискорити доступ фізично віддалених від основного сервера клієнтів до бази даних доменних імен. Характеристики DNSDNS володіє такими характеристиками:
DNS важлива для роботи Інтернету, так як для з'єднання з вузлом необхідна інформація про його IP-адресу, а для людей простіше запам'ятовувати буквені (зазвичай осмислені) адреси, ніж послідовність цифр IP-адреси. У деяких випадках це дозволяє використовувати віртуальні сервери, наприклад, HTTP-сервери, розрізняючи їх по імені запиту. Спочатку перетворення між доменними та IP-адресами вироблялося з використанням спеціального текстового файлу hosts, який складався централізовано й автоматично розсилався на кожну з машин у своїй локальній мережі. З ростом Мережі виникла необхідність в ефективному, автоматизованому механізмі, яким і стала DNS. DNS була розроблена Полом Мокапетрісом в 1983 році; оригінальний опис механізмів роботи містяться в RFC 882 і RFC 883. У 1987 публікація RFC 1034 і RFC 1035 змінила специфікацію DNS і скасувала RFC 882, RFC 883 і RFC 973 як застарілі. Термінологія і принципи роботиКлючовими поняттями DNS є:
Система DNS містить ієрархію DNS-серверів, відповідну ієрархії зон. Кожна зона підтримується як мінімум одним авторитетним сервером DNS (від англ. Authoritative — авторитетний), на якому розташована інформація про домен. Ім'я та IP-адреса не тотожні — одна IP-адреса може мати безліч імен, що дозволяє підтримувати на одному комп'ютері безліч вебсайтів (це називається віртуальний хостинг). Зворотне теж справедливо — одному імені може бути зіставлено безліч IP-адрес: це дозволяє створювати балансування навантаження. Для підвищення стійкості системи використовується безліч серверів, що містять ідентичну інформацію, а в протоколі є засоби, що дозволяють підтримувати синхронність інформації, розташованої на різних серверах. Існує 13 кореневих серверів, їх адреси практично не змінюються. Протокол DNS використовує для роботи TCP-або UDP-порт 53 для відповідей на запити. Традиційно запити та відповіді відправляються у вигляді однієї UDP дейтаграми. TCP використовується для AXFR-запитів. Принцип роботиСистема імен DNS — це ієрархічна деревоподібна система. У цьому дереві існує корінь — він позначається «.» (root). Список кореневих серверів повинен бути у кожного сервера: він міститься у файлі Нехай користувач вводить у вікні браузера адресу Запит обробляється рекурсивно: кореневий сервер звертається до сервера, який відповідає за домен com, а той, у свою чергу, до сервера DNS домену yahoo.com. Сервер DNS домену yahoo.com повертає IP-адресу комп'ютера www — 64.58.76.222 або всі адреси, які зіставлені цьому імені (багато мережевих операційних систем, у тому числі і Linux, дозволяють одному імені зіставляти декілька IP-адрес). А офіційне ім'я комп'ютера www.yahoo.com (це його канонічне ім'я — про канонічні імена і як їх використовувати буде сказано нижче) — Схеми запитів DNS-іменНерекурсивна процедура:
Рекурсивна процедура:
Після отримання відповіді сервер передає її клієнту. Таким чином, при рекурсивній процедурі клієнт фактично передоручає роботу власному серверу. Для прискорення пошуку IP-адрес DNS-сервери часто застосовують кешування (на час від годин до декількох днів) відповідей, які проходять через них. Записи DNSЗаписи DNS, або Ресурсні записи (англ. Resource Records, RR) — одиниці зберігання і передачі інформації в DNS. Кожний ресурсний запис складається з таких полів:
Найбільш важливі типи DNS-записів:
Зарезервовані доменні іменаДокумент RFC 2606 (Reserved Top Level DNS Names — Зарезервовані імена доменів верхнього рівня) визначає назви доменів, які слід використовувати як приклади (наприклад, в документації), а також для тестування. Крім example.com, example.org і example.net, в цю групу також входять test, invalid і ін. Інтернаціональні доменні іменаДоменне ім'я може складатися тільки з обмеженого набору ASCII символів, дозволяючи набрати адресу домену незалежно від мови користувача. ICANN затвердив засновану на Punycode систему IDNA, перетворюючи будь-який рядок в кодуванні Unicode в допустимий DNS набір символів. БезпекаПідміна відповідейПротокол DNS не містить вбудованих засобів, які дозволяють відрізнити відповідь від легітимного сервера від відповіді, надісланої зловмисником. Це дозволяє зловмиснику шляхом підробки відповідей DNS перенаправляти трафік на контрольовані хости. Цей недолік виправляється за допомогою DNSSEC. Використання у DDos-атакахРозмір DNS-запита може бути відносно невеликим (60-70 байтів), тоді як розмір відповідей при неправильній конфігурації сервера може досягати 1000—2000 байт. Зловмисник може підробити IP-адресу відправника у DNS-запиті, замінивши її на IP-адресу хоста, що атакується (хост-жертва). Відповідь на такий підроблений DNS-запит надійде не зловмиснику, а до хоста-жертви. Таким чином, витративши відносно невеликі ресурси, зловмисник може організувати потужну DDoS-атаку[1]. Така техніка називається DNS-ампліфікацією. Отруєння кешуDNS cache poisoning (отруєння кешу DNS) — пошкодження цілісності даних у системі DNS шляхом заповнення кешу DNS-сервера даними, що не походять від авторитетного DNS-джерела. DNS hijackingДив. такожПримітки
Посилання
|
Portal di Ensiklopedia Dunia