Коли DNS ламається, сайт виглядає мертвим
Ти можеш мати живий сервер, робочий сайт і навіть правильний SSL-сертифікат — а домен усе одно не відкриється. Часто винен не сайт, а DNS. Це та частина інтернету, яка каже: «цей зрозумілий текст насправді веде ось на цю IP-адресу».
Уяви табличку на будинку. Людина бачить назву вулиці, а не координати фундаменту. DNS робить те саме для сайтів: перетворює доменне ім’я на IP-адресу.
Проблема / контекст
Коли щось «не відкривається», люди часто одразу дивляться на сервер, хостинг або код. Але ланцюжок довший:
- ти вводиш домен;
- твій пристрій питає рекурсивний резолвер;
- той іде до сервера імен;
- сервер повертає DNS-запис;
- відповідь кладеться в кеш DNS на певний час;
- клієнт іде вже на конкретну IP-адресу.
Якщо хоч один крок веде не туди, сайт виглядає як «помер». Насправді він просто губиться по дорозі.
Чому це важливо
DNS впливає не тільки на сайт. Через нього працюють:
- вебсайти й піддомени;
- пошта;
- перевірка домену;
- міграція на новий хостинг;
- балансування між серверами;
- швидкі релізи без зміни коду.
Найпідступніше в DNS те, що зміна може виглядати правильною, але ще не дійти до всіх через TTL. Тобто ти вже все виправив, а старий запис ще сидить у чужих кешах.
Як це працює простими словами
У DNS є кілька базових ролей.
Сервер імен зберігає записи для домену.
Рекурсивний резолвер шукає відповідь для твоєї машини.
DNS-запис каже, куди саме вести домен.
Найчастіше ти побачиш такі записи:
- A-запис — веде на IPv4-адресу.
- AAAA-запис — веде на IPv6-адресу.
- CNAME-запис — робить одне ім’я псевдонімом іншого.
Якщо дуже просто: 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
Що дивитися у відповіді:
- чи є взагалі запис;
- чи правильна IP-адреса;
- чи не лишився старий CNAME;
- чи правильні сервери імен;
- який показано TTL.
Якщо запису нема, домен може бути просто без вказівки, або ще не встиг оновитися.
2. Порівняй із тим, що має бути
Постав собі просте питання: куди домен має вести зараз?
- новий сервер?
- інший хостинг?
- окремий піддомен?
Для основної адреси сайту зазвичай використовують A та AAAA. Для окремих піддоменів часто зручний CNAME.
3. Не чіпай все одразу
Якщо переносиш сайт, краще міняти по одному шару:
- підготуй новий сервер;
- додай правильні записи;
- перевір їх через
dig; - тільки потім прибирай старі.
Так ти не створиш собі «вікно темряви», коли старе вже прибрано, а нове ще не працює.
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, але забули про кеш
Ти вже бачиш нову адресу в кабінеті, а користувачі ще годину чи дві бачать стару. Це не магія, це кеш.
Неправильні сервери імен
Іноді сам домен зареєстрований правильно, але в реєстратора вказані не ті сервери імен. Тоді всі записи ти можеш міняти хоч цілий день — зовнішній світ їх просто не бачить.
Анти-патерни
- міняти записи навмання;
- видаляти старі записи до перевірки нових;
- забувати про TTL;
- не перевіряти A і AAAA одночасно;
- плутати домен, піддомен і сервер;
- робити висновок через 2 хвилини після зміни;
- переносити сайт і пошту одним безладним комком.
Висновок / план дії
DNS — це не «ще одна технічна дрібниця». Це адресна книга інтернету. Якщо вона веде не туди, сайт не відкриється, навіть якщо сервер здоровий.
Що робити щоразу, коли є підозра на DNS:
- перевірити NS, A, AAAA і CNAME;
- порівняти їх із очікуваною IP-адресою;
- подивитися TTL;
- зачекати кеші або очистити локальний кеш;
- повторно протестувати з іншої мережі.
Якщо коротко: спочатку дивишся, куди домен веде, потім — чи туди треба, і лише після цього щось чіпаєш. Це економить нерви краще за будь-який «ще раз перезавантажити все».