Коли DNS ламається, сайт виглядає мертвим

Ти можеш мати живий сервер, робочий сайт і навіть правильний SSL-сертифікат — а домен усе одно не відкриється. Часто винен не сайт, а DNS. Це та частина інтернету, яка каже: «цей зрозумілий текст насправді веде ось на цю IP-адресу».

Уяви табличку на будинку. Людина бачить назву вулиці, а не координати фундаменту. DNS робить те саме для сайтів: перетворює доменне ім’я на IP-адресу.

Проблема / контекст

Коли щось «не відкривається», люди часто одразу дивляться на сервер, хостинг або код. Але ланцюжок довший:

  1. ти вводиш домен;
  2. твій пристрій питає рекурсивний резолвер;
  3. той іде до сервера імен;
  4. сервер повертає DNS-запис;
  5. відповідь кладеться в кеш DNS на певний час;
  6. клієнт іде вже на конкретну IP-адресу.

Якщо хоч один крок веде не туди, сайт виглядає як «помер». Насправді він просто губиться по дорозі.

Чому це важливо

DNS впливає не тільки на сайт. Через нього працюють:

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

Як це працює простими словами

У DNS є кілька базових ролей.

Сервер імен зберігає записи для домену.
Рекурсивний резолвер шукає відповідь для твоєї машини.
DNS-запис каже, куди саме вести домен.

Найчастіше ти побачиш такі записи:

Якщо дуже просто: A і AAAA вказують на сервер, а CNAME вказує на інше ім’я, яке вже потім розкручується до адреси.

Як перевірити DNS

Починай не з паніки, а з перевірки.

1. Подивись, що зараз бачить інтернет

dig example.com NS
dig example.com A
dig example.com AAAA
dig example.com CNAME

Якщо хочеш короткий варіант:

dig +short example.com

Що дивитися у відповіді:

Якщо запису нема, домен може бути просто без вказівки, або ще не встиг оновитися.

2. Порівняй із тим, що має бути

Постав собі просте питання: куди домен має вести зараз?

Для основної адреси сайту зазвичай використовують A та AAAA. Для окремих піддоменів часто зручний CNAME.

3. Не чіпай все одразу

Якщо переносиш сайт, краще міняти по одному шару:

  1. підготуй новий сервер;
  2. додай правильні записи;
  3. перевір їх через dig;
  4. тільки потім прибирай старі.

Так ти не створиш собі «вікно темряви», коли старе вже прибрано, а нове ще не працює.

4. Пам’ятай про TTL

TTL — це час життя запису в кеші. Якщо він великий, зміни розходяться повільніше. Якщо малий — швидше, але з більшим навантаженням на DNS.

Після зміни запису може бути таке:

Тому після правки інколи треба просто дочекатися TTL.

5. Очисти локальний кеш, якщо треба

Іноді проблема не на сервері, а в локальному кеші. Для швидкої перевірки:

Linux:

resolvectl flush-caches

macOS:

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

Windows:

ipconfig /flushdns

Після цього перевір ще раз dig або відкрий сайт з іншої мережі.

Типові сценарії поломки

Сайт переїхав, а DNS залишився старий

Найчастіша історія. Сервер уже новий, а домен ще вказує на стару адресу. Результат: сайт або не відкривається, або відкриває стару версію.

Є A-запис, але забули AAAA

Якщо в тебе є IPv6-маршрут, частина користувачів може йти саме ним. Якщо AAAA веде не туди, частина людей бачить проблему, а частина — ні. Це дуже дратує, бо виглядає «випадково».

CNAME і A на одному імені

Для одного імені краще не змішувати CNAME з іншими типами записів. Інакше поведінка стає дивною, а діагностика — ще гіршою.

Змінили DNS, але забули про кеш

Ти вже бачиш нову адресу в кабінеті, а користувачі ще годину чи дві бачать стару. Це не магія, це кеш.

Неправильні сервери імен

Іноді сам домен зареєстрований правильно, але в реєстратора вказані не ті сервери імен. Тоді всі записи ти можеш міняти хоч цілий день — зовнішній світ їх просто не бачить.

Анти-патерни

Висновок / план дії

DNS — це не «ще одна технічна дрібниця». Це адресна книга інтернету. Якщо вона веде не туди, сайт не відкриється, навіть якщо сервер здоровий.

Що робити щоразу, коли є підозра на DNS:

  1. перевірити NS, A, AAAA і CNAME;
  2. порівняти їх із очікуваною IP-адресою;
  3. подивитися TTL;
  4. зачекати кеші або очистити локальний кеш;
  5. повторно протестувати з іншої мережі.

Якщо коротко: спочатку дивишся, куди домен веде, потім — чи туди треба, і лише після цього щось чіпаєш. Це економить нерви краще за будь-який «ще раз перезавантажити все».