Що насправді показує запит до DNS
Система доменних імен — це шар, який перетворює імена, зрозумілі людям, на адреси, якими насправді користуються машини. Її описали 1987 року в RFC 1034 і 1035, і конструкція виявилася настільки вдалою, що майже все додане відтоді — маршрутизація пошти, дозвіл на видачу сертифікатів, автентифікація листів, пошук служб — прикрутили новими типами записів, а не новою системою.
Запит питає, які записи прив'язані до імені. Ця сторінка питає поширені типи одразу, і це корисний спосіб: майже кожна реальна проблема виявляється як розбіжність між типами записів, а не всередині одного. Пошта не ходить, а сайт працює — це питання MX. Сертифікат не поновлюється — питання CAA. Сайт працює в одних людей і не працює в інших — зазвичай питання A проти AAAA.
Одне застереження до всього іншого: тут ви бачите те, що щойно сказали нашому резолверу. Якщо запис нещодавно змінили, резолвери світу ще віддаватимуть стару відповідь, доки не спливе їхня збережена копія. Це не наша застаріла інформація — це задуманий режим роботи, і розділ про TTL пояснює, як його передбачити.
Типи записів і для чого кожен
AіAAAA- Адреси, на які вказує ім'я:
A— IPv4,AAAA— IPv6. Кілька записів кожного типу — норма й означає або просте розподілення навантаження, або мережу доставки. Якщо в імені є обидва типи, а один із них недосяжний, ви отримуєте класичне «у мене працює» — чому вибір браузера тут вирішальний, пояснює тест IPv6. CNAME- Псевдонім: «це ім'я насправді он те, питай там». Правило, на якому ловляться всі: ім'я з CNAME не може мати жодних інших записів, — тому CNAME заборонений на вершині домену. Не можна зробити псевдонімом сам
example.com, тількиwww.example.com. Провайдери обходять це функцією, яку зазвичай називають ALIAS або сплощенням: вона розв'язує ціль за вас і віддає звичайні адреси. MX- Куди йде пошта домену. Кожен запис несе число переваги, і виграє менше — поширене й дороге хибне прочитання. Домен, який пошти не шле взагалі, має сказати це явно одним «нульовим» записом, самотньою крапкою з пріоритетом нуль: вона каже відправникам спинитися, а не повторювати спроби днями.
NS- Авторитетні сервери зони. Звірте їх із тим, що публікує реєстр у реєстровому записі домену: коли ці два списки розходяться, частина світу потрапляє на одні сервери, а частина на інші, і симптоми стають до нестями непослідовними.
TXT- Довільний текст, а на практиці — місце, де живе поштова політика. SPF стоїть тут, на вершині домену, ключі DKIM — під іменем селектора, DMARC — під
_dmarc. Тут же накопичуються рядки підтвердження власності від кожної служби, у якій ви колись реєструвались. SOA- Власні метадані зони: який сервер головний, серійний номер, за яким вторинні розуміють, що щось змінилося, таймери оновлення й повтору, а також час зберігання заперечних відповідей — тобто скільки пам'ятається «такого імені немає».
CAA- Які центри сертифікації мають право видавати сертифікати для домену. З вересня 2017 року кожен публічний центр зобов'язаний перевіряти цей запис перед видачею, — тож це єдиний запис DNS, здатний прямо заблокувати сертифікат.
SRV- Пошук служб: на якому вузлі й порту працює конкретна служба. Активно використовується чатами, голосовими й каталоговими протоколами, а надто середовищами Microsoft.
TTL і чому «поширення DNS» — хибний вислів
Кожен запис несе час життя в секундах. Це вказівка кешам: тримай цю відповідь стільки і лише потім питай знову. Нікуди нічого не розсилають. Коли кажуть, що зміна «поширюється», насправді відбувається інше: резолвери світу досі тримають відповідь, яку їм дозволили тримати, і візьмуть нову, коли дозвіл спливе.
Це робить затримку передбачуваною, а не загадковою, — і робить очевидним стандартний порядок: знижувати TTL треба до зміни, а не після. Опустіть його до кількох хвилин, дочекайтеся, доки скрізь спливе старий довгий TTL, тоді вносьте зміну, а тоді підніміть TTL назад. Пропустіть перший крок — і ви приречені чекати рівно стільки, скільки було опубліковано; для комфортних добових TTL це доба, протягом якої ходять дві різні відповіді.
Заперечні відповіді теж кешуються. Якщо хтось запитав ім'я до того, як воно з'явилося, відповідь «не існує» запам'ятовується на строк із запису SOA, — тож створення імені не полагодить ситуацію для цієї людини негайно. За цим стоїть неабияка частка повідомлень «я додав запис, а воно й далі не працює».
Поштові записи: те, що ламається найчастіше
Якщо проблема в пошті, майже все вирішують чотири записи, і приймальна система перевіряє їх у такому порядку.
- MX — куди доставляти. Відсутність MX узагалі означає, що відправники впадуть назад на A-запис домену, а це зазвичай вебсервер і зазвичай не те, чого хтось хотів.
- SPF — TXT-запис, що починається з
v=spf1: які сервери мають право слати від імені домену. Він мусить бути рівно один; два SPF-записи — це стала помилка, а не об'єднання. Крім того, під час перевірки діє жорсткий ліміт у десять DNS-запитів, і кілька складенихinclude:від різних поштових постачальників тихо його перевищують. Після цього все ламається незалежно від того, наскільки правильно воно виглядає. - DKIM — відкритий ключ, яким перевіряють підпис на вихідних листах; публікується під селектором, що його обирає система-відправник.
- DMARC — TXT-запис на
_dmarc: що робити приймальній стороні, коли SPF і DKIM не узгоджуються з видимою адресою відправника, і куди слати звіти про це. Опублікувати його з політикоюnone— правильний перший крок: на доставку це не впливає ніяк, зате запускає звіти, з яких видно, хто шле від вашого імені.
Якщо листи саме відхиляють, а не маршрутизують не туди, записи можуть бути справні, а проблема може бути в адресі відправника — це вже питання до перевірки чорних списків і до зворотного імені адреси.
Відмови і як їх розрізняти
- Імені не існує (NXDOMAIN)
- Авторитетно й однозначно: такого імені в зоні немає. Перевірте написання, а тоді — чи створювали ви запис у тій зоні, у якій думаєте.
- Ім'я є, але записів такого типу немає
- Зовсім інша річ, і це нормальна відповідь на запит AAAA до імені, у якого є тільки IPv4. Це не помилка.
- Відмова сервера (SERVFAIL)
- Резолвер не зміг отримати придатну відповідь. Дві звичайні причини: авторитетні сервери недосяжні або не пройшла перевірка DNSSEC — прострочений підпис прибирає зону з інтернету цілком для всіх, хто перевіряє, і водночас вона бездоганно працює для всіх, хто не перевіряє.
- Тайм-аут без жодної відповіді
- Часто це мережева проблема або фаєрвол, а не DNS. Великі відповіді не влазять в один UDP-пакет і вимагають переходу на TCP, а обладнання, яке блокує DNS через TCP, дає відмови, що виглядають випадковими і зачіпають лише частину доменів.
Дві перевірки, які варто робити щоразу
Чи збігаються NS-записи з реєстром? Делегування в реєстрі — це те, за чим іде решта світу; NS-записи всередині зони — це те, що зона каже про себе сама. Старі сервери імен, залишені після переїзду, продовжують відповідати старими даними, а оскільки резолвери обирають між ними, виходить, що сайт наче працює — у половини ваших колег.
Чи вказують адреси туди, куди ви думаєте? Подивіться A- і AAAA-записи, а тоді перевірте, хто тримає ці адреси. Запис, який досі вказує на хостинг, покинутий два роки тому, — поширена й тихо небезпечна знахідка: ім'я делеговане на інфраструктуру, якою ви більше не керуєте, і хто отримає цю адресу після вас, той успадкує й ім'я.