DNS (Domain Name System) - це розподілена система зберігання та обробки інформації про доменні імена. Якщо коротко, то DNS дає нам змогу використовувати зручні текстові імена сайтів замість складних числових IP-адрес.
Розуміння принципів роботи ДНС важливе як для IT-фахівців, так і для звичайних користувачів. Якщо ви розробник або сисадмін, то рано чи пізно зіткнетеся з налаштуванням DNS-записів для своїх проєктів. Якщо ви просто активно користуєтеся інтернетом, то базові знання про DNS допоможуть вам розібратися, чому сайт може бути недоступний і як це питання вирішується.
У цій статті ми детально розберемо, що таке ДНС, як він працює і які проблеми вирішує. Але для початку нам потрібно познайомитися з базовими поняттями - IP-адресами та доменними іменами.
Будь-який комп'ютер або сервер, підключений до інтернету, має свою унікальну IP-адресу. Це числовий ідентифікатор, що складається з 4 блоків цифр, розділених крапками. Наприклад, IP-адреса серверів Google - 142.250.185.78.
За своєю суттю IP-адреси схожі на телефонні номери або поштові індекси. Вони потрібні, щоб однозначно визначати відправника й одержувача інформації в мережі. Проблема в тому, що людям складно запам'ятовувати і використовувати ці набори цифр. Куди простіше ввести в браузері текстове ім'я сайту.
Може здатися, що IP-адрес має вистачити на всіх із запасом. Адже якщо взяти стандартний формат IPv4 (4 числа від 0 до 255), то виходить понад 4 млрд унікальних адрес (256^4 = 4 294 967 296). Але вже в 2011 році міжнародний пул IPv4 адрес був повністю вичерпаний!
Причини дефіциту IP-адрес:
Щоб вирішити проблему, було розроблено новий стандарт - IPv6, який використовує вже 128 біт для адреси замість 32. Це дає колосальний адресний простір у 340 секстильйонів (3.4×10^38) унікальних адрес.
Перехід на IPv6 уже триває, але займе ще багато років через необхідність оновлення мережевого обладнання та ПЗ. Поки ж основним способом економії адрес залишаються NAT і приватні підмережі.
А ось із запам'ятовуваністю IP-адрес людиною відмінно справляється система доменних імен - DNS. Вона дає змогу зіставити числову IP-адресу (142.250.185.78) з текстовим ім'ям (google.com).
Доменні імена мають ієрархічну структуру і читаються справа наліво. Крайній правий елемент - домен верхнього (першого) рівня. Далі йдуть домени другого, третього рівня тощо.
Ось як виглядає структура доменного імені на прикладі www.blog.example.com:
Будь-хто може зареєструвати доменне ім'я, якщо воно ще не зайняте. За процедуру реєстрації та підтримання роботи доменів верхнього рівня відповідає міжнародна організація ICANN та уповноважені реєстратори.
Зареєструвавши домен, ви отримуєте можливість вказувати для нього ДНС-записи і тим самим пов'язувати його з IP-адресами потрібних серверів. Після цього люди зможуть відкривати ваш сайт, пошту або інші сервіси, просто набираючи зручне доменне ім'я.
Аналогію для кращого розуміння зв'язку IP-адрес і доменів можна провести з квартирами і багатоповерховим будинком. IP-адреса - це наче номер конкретної квартири, в якій розташовується сайт. А доменне ім'я - це адреса будинку, в якому розташована ця квартира.
Коли ви вводите в браузері www.example.com, то за лаштунками відбувається складний процес опитування кількох DNS-серверів. У результаті доменне ім'я перетворюється на IP-адресу, і ви потрапляєте на потрібний сайт. У наступному розділі ми детально розберемо етапи цього процесу.
.jpg)
DNS можна уявити як величезну розподілену базу даних, яка зберігає інформацію про відповідність доменних імен та IP-адрес. Ця база не зосереджена на одному сервері, а розбита на багато ДНС-серверів по всьому світу.
Ключові компоненти розподіленої DNS-системи:
Щоб зрозуміти, як працює процес перетворення доменного імені в IP-адресу (резолвінг), розберемо на прикладі:
[Картинка з послідовністю резолвінгу].
Якщо один із ДНС-серверів у ланцюжку не відповідає, то резолвінг не завершиться і сайт не відкриється. Тому так важливо забезпечувати відмовостійкість DNS-інфраструктури.
Зверніть увагу, що фінальну IP-адресу браузер отримує саме від локального DNS-сервера, а не безпосередньо з example.com. Локальний сервер кешує (тимчасово зберігає) відповіді, щоб під час повторних запитів не починати ланцюжок заново.
Ключову роль у цьому процесі відіграють кореневі ДНС-сервери (root name servers). Це 13 логічних серверів (a-m.root-servers.net), які відповідають за домени верхнього рівня і перенаправляють запити на нижчі рівні. Фізично ці сервери дублюються і розподілені по всьому світу за допомогою техніки Anycast для підвищення відмовостійкості та швидкості відповіді.
Наприклад, кореневий сервер i.root-servers.net має 69 адрес у різних точках світу (дані на 2023 рік). Завдяки цьому час відгуку при запитах не перевищує 300 мс.
Система DNS має ієрархічну структуру, яка визначає рівні та підпорядкованість доменів один одному. Можна уявити її як перевернуте дерево
На самому верху знаходиться корінь (.), за ним ідуть домени верхнього рівня (TLD), потім домени другого рівня (SLD) і т.д. Що нижчий домен в ієрархії, то він більш специфічний і підпорядковується вищим.
Приклади доменів різних рівнів:
Доменне ім'я читається справа наліво. Останній (крайній правий) елемент називається доменом першого (верхнього) рівня. Кожен наступний зліва елемент - це домен нижчого рівня по відношенню до попереднього.
Наприклад, в імені blog.example.com - .com це домен першого рівня, example - другого рівня, blog - третього.
Домени верхнього рівня бувають:
За делегування імен у доменах верхнього рівня відповідає ICANN (Internet Corporation for Assigned Names and Numbers) - міжнародна некомерційна організація. Вона визначає правила реєстрації, затверджує реєстраторів і стежить за стабільністю роботи системи DNS.
Щоб зареєструвати домен другого рівня, ви звертаєтеся до реєстратора, акредитованого ICANN для роботи в потрібній доменній зоні. Наприклад, якщо ви хочете домен у зоні .UA, то йдете до українського реєстратора. Якщо потрібен домен .COM - до міжнародного.
При цьому на ваш домен другого рівня ви вже самі можете створювати піддомени (третього, четвертого рівня тощо) і повністю ними керувати. Ця схема дає змогу забезпечити як глобальне адміністрування доменного простору (через ICANN), так і гнучкість управління для кінцевих користувачів.
Розуміння ієрархії доменів важливе для правильного налаштування DNS-інфраструктури. Імена мають бути унікальними на своєму рівні, але можуть повторюватися на нижчих рівнях у різних гілках.
Наприклад, існують домени blog.example.com і blog.sample.com - вони розташовані на одному рівні (третьому), але в різних піддеревах (example.com і sample.com). А ось два домени blog.example.com і wiki.example.com конфліктувати не будуть, оскільки перебувають на різних рівнях одного піддерева.
Така деревоподібна система дає змогу гнучко структурувати доменний простір і уникати конфліктів імен. У наступному розділі ми детально розберемо типи ДНС-записів, які дають змогу пов'язувати домени з IP-адресами та іншими даними.
.jpg)
Уся інформація в DNS зберігається у вигляді записів певного типу (Resource Record, RR). Кожен запис складається з декількох текстових полів і завжди прив'язаний до конкретного доменного імені.
Основні типи записів:
Це далеко не повний список, але наведені типи записів зустрічаються найчастіше. Ось як вони можуть використовуватися для сайту www.example.com:
| example.com. | IN | A | 192.0.2.1 |
| www.example.com. | IN | CNAME | example.com. |
| example.com. | IN | MX 10 | mail.example.com. |
| example.com. | IN | TXT | "v=spf1 a mx ~all" |
| _sip._tcp.example.com | IN | SRV 0 | 5 5060 sip.example.com. |
У цій конфігурації:
Змінюючи DNS-записи, ви можете гнучко керувати маршрутизацією запитів до вашого домену і балансувати навантаження між серверами. Під час переїзду сайту на інший хостинг досить поміняти всього один A-запис, щоб трафік пішов на нову IP-адресу.
Система доменних імен ДНС несе величезну практичну користь для всіх користувачів інтернету. Вона робить мережу більш дружелюбною і розширює можливості власників сайтів. Виділимо основні переваги:
Уявіть, що DNS не існує. Тоді для переходу на сайт вам довелося б щоразу вводити в браузері IP-адресу, наприклад, 104.18.18.18 замість example.com. Сумнівно, що в такому разі інтернет став би настільки масовим.
DNS дає змогу використовувати текстові імена сайтів, які легко запам'ятовуються, замість числових IP-адрес. Набагато зручніше набрати wikipedia.org, ніж 208.80.154.224. Це особливо важливо для комерційних проєктів - домен apple.com буде ефективнішим за номерну адресу як для реклами, так і для лояльності користувачів.
За допомогою DNS-записів власники доменів отримують масу можливостей для управління роботою своїх ресурсів:
DNS - це розподілена система, і нею ніхто не володіє одноосібно. Управління доменами верхнього рівня децентралізовано між ICANN і сотнями реєстраторів. А за піддомени вже відповідають мільйони звичайних власників сайтів.
Така схема забезпечує гнучкість, масштабованість і стійкість ДНС. Немає єдиної точки відмови, локальні збої не впливають на всю систему. Сервери DNS працюють як злагоджений механізм без єдиного центру керування.
У систему DNS вбудовано правило кешування відповідей. Це означає, що під час повторного запиту локальний DNS-сервер не буде заново опитувати авторитативні сервери, а поверне домен зі своєї пам'яті.
Завдяки цьому в більшості випадків резолвінг відбувається дуже швидко - у межах 1-100 мс. Користувачі отримують відгук практично миттєво, хоча під капотом відбувається складний процес опитування безлічі географічно розподілених серверів.
DNS надає бізнесу додаткові можливості для брендингу, залучення клієнтів і автоматизації процесів:
Але навіть для невеликих некомерційних сайтів користь ДНС неоціненна. Домен другого рівня коштує недорого (5-20 доларів на рік), але дає змогу запам'ятатися людям, легко ділитися посиланнями й експериментувати з різними сервісами та хостингами.
Без перебільшення, DNS стала фундаментом сучасного інтернету і дозволила йому завоювати масову популярність серед звичайних користувачів. Але за цією зручністю стоять складні технології, і питання безпеки виходять на перший план.
DNS - критично важлива інфраструктура для роботи інтернету. Якщо система перестане функціонувати, то всі сайти стануть недоступними. А якщо дані в ДНС виявляться неправильними, то користувачі можуть потрапити на підроблені або шкідливі ресурси.
Тому питання безпеки, стабільності та захисту від атак виходять на перший план під час проєктування та підтримки DNS. Розберемо основні ризики та методи їх запобігання.
За останні роки було зафіксовано численні спроби атак на інфраструктуру DNS як загалом, так і на окремих провайдерів і власників доменів. Найпоширеніші типи атак:
Часто атаки використовуються в комбінації - наприклад, спочатку змінюються ДНС-записи домену, а потім сайт виводять з ладу величезною кількістю запитів.
Для захисту від атак, помилок і підвищення стабільності DNS використовується комплекс організаційних і технічних заходів:
Ці заходи забезпечують базовий рівень захисту, але важливо розуміти, що на 100% захиститися від усіх загроз неможливо. Нові атаки і вразливості з'являтимуться, і DNS-система повинна адаптуватися до мінливого ландшафту загроз.
.jpg)
За майже 40 років свого існування система DNS постійно розвивалася, отримувала нові функції та обростала додатковими стандартами. Поточна специфікація DNS (включно з DNSSEC) займає понад 2000 сторінок тексту RFC. І цей процес триває.
Серед нових пропозицій щодо розвитку DNS:
Ці та багато інших нововведень поступово реалізуються різними гравцями - браузерами, операційними системами, провайдерами DNS-серверів і реєстраторами доменів. Але поки що жодне з них не стало загальноприйнятою реальністю.
Також DNS не ідеальна, і в неї є принципові недоліки:
Це породжує інтерес до альтернативних систем дозволу імен, серед яких:
Ці альтернативи поки що не набули масового поширення (за винятком ENS у світі криптовалют), але вони показують запит суспільства на вільнішу, стійкішу до цензури та менш централізовану систему імен.
Цікавим напрямком розвитку є інтеграція DNS з технологіями децентралізованого вебу та peer-to-peer мережами. Це дасть змогу пов'язати ДНС-імена не тільки з IP-адресами, а й із хешами файлів у таких мережах, як IPFS, BitTorrent, Filecoin.
Також є запит на людинозрозумілі адреси для конкретних сторінок сайтів, а не тільки доменів. Поточний стандарт URL занадто складний для запам'ятовування і передачі іншим людям. Простіша і коротша форма адресації може дати новий поштовх розвитку інтернету.
Підбиваючи підсумок - DNS розвивається і адаптується до нових викликів. Поява таких технологій, як блокчейн і глобальні децентралізовані сховища, дає основу для експериментів і еволюції традиційної системи доменних імен. Які з нововведень отримають масове визнання і які альтернативи будуть затребувані - багато в чому залежить від потреб користувачів і бізнесу.