Перейти до основного вмісту

Посібники / Виправити: посібники для помилок, з якими стикаються насправді

DNS error: що це означає і як знайти справжню причину

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

Що охоплює «DNS error»

За цією однією фразою ховаються кілька різних несправностей, у яких немає нічого спільного, крім місця, де вони трапляються. Браузер може сказати, що імені взагалі не існує. Може сказати, що резолвер так і не відповів. Може врешті завантажити сторінку, тільки повільно, після помітної паузи. Ціле офісне середовище може втратити здатність визначати будь-які імена, поки саме інтернет-з’єднання лишається живим. Або записи вашого власного сайту можуть перестати працювати для відвідувачів з одного регіону, лишаючись цілком нормальними для вас. У кожної з цих ситуацій своя причина і своє виправлення, і жодну з них не вирішує загальна порада «перезавантажте роутер і спробуйте ще раз», яка виправляє рівно один випадок із п’яти.

Решта цієї сторінки - короткий набір запитань. Дайте на них відповіді по черзі, і ви потрапите саме на той посібник, що відповідає ситуації, замість того щоб перебирати п’ять непов’язаних списків виправлень у надії, що якийсь із них допоможе.

Це лише на цьому пристрої, чи на всіх?

Спробуйте той самий пошук із телефону на мобільному інтернеті, а не на вашому Wi-Fi. Якщо там ім’я визначається, а на ноутбуці ні, проблема локальна: неправильне налаштування DNS саме на цій машині, застряглий кеш, VPN, прив’язаний до резолверів, що вже недоступні, або захисне ПЗ, яке саме перехоплює DNS. Якщо ж не працює і на телефоні, у зовсім іншій мережі, переходьте до наступного запитання, бо несправність не у вашому пристрої й навіть не у вашій локальній мережі.

Це лише один сайт, чи все зламано?

Спробуйте визначити добре відоме ім’я, у робочому стані якого ви впевнені, наприклад великого пошукового сайту. Якщо провалюється й воно, ваш власний резолвер недоступний чи не відповідає, а це проблема роутера чи мережі, а не самого сайту, який ви намагалися відкрити. Якщо відоме ім’я визначається нормально, а провалюється лише потрібний вам сайт, проблема саме в цьому домені: у його записах, у його nameserver-ах, або в зміні, що досі поширюється й дійшла не до всіх резолверів.

Чи спрацьовує пошук через публічний резолвер?

Цей єдиний тест виконує більше роботи з тріажу, ніж будь-що інше тут, бо однією командою розділяє «моя мережа» і «сам домен»:

nslookup example.com 8.8.8.8
dig example.com @1.1.1.1

Замініть example.com на реальне ім’я, що провалюється. Можливі три результати, і кожен вказує в інший бік:

  • Ви отримуєте звичайну відповідь. Домен нормально визначається ззовні. Ваш резолвер за замовчуванням, хай яким його налаштовано на пристрої чи роутері, і є зламаною частиною. Це DNS server not responding, якщо він мовчить узагалі, або проблема кешування, якщо пошук раніше працював, а тепер перестав.
  • Ви отримуєте явну відповідь «такого імені немає» (NXDOMAIN). Публічний резолвер, якому нема чого тримати в кеші, каже вам, що запис справді зараз не існує, або десь у ланцюжку закешована застаріла негативна відповідь. Саме це повідомлення й наступні кроки описані в DNS_PROBE_FINISHED_NXDOMAIN.
  • Ви отримуєте відповідь, але вона помітно довго йде або час помітно різниться між запусками. Резолвер працює, просто повільно. Додайте +stats до запиту dig або просто спостерігайте за затримкою. Це як виправити повільний DNS-пошук, інша причина й інше виправлення, ніж у двох попередніх випадках.

Що resolvectl status показує в Linux

На машині з Linux, що використовує systemd-resolved, одна команда показує, що ваша система насправді налаштована питати, і саме тут виявляється неправдивою чимала частка скарг «DNS зламано»:

resolvectl status

Прочитайте рядок «Current DNS Server» для інтерфейсу, яким користуєтеся. Якщо там вказана адреса, що не є очікуваним резолвером, наприклад внутрішній сервер VPN, що вже недоступний, або стара адреса роутера з мережі, яку ви покинули, ця розбіжність і є всією проблемою, і жодне очищення кеша не виправить неправильну адресу. Якщо вказаний сервер збігається з очікуваним, а пошуки все одно провалюються, конфігурація резолвера тут ні до чого, і несправність далі в ланцюжку, поверніться до запитань вище.

Нещодавно змінювали DNS-запис?

Якщо ви чи хтось із вашої команди редагував запис, переносив хостинг або змінював DNS-провайдера за останню добу-дві, і помилка непослідовна, працює для одних людей і не працює для інших, це не зламаний запис. Це очікувана поведінка, поки старі кешовані відповіді спливають у власному темпі на різних резолверах. Саме ця ситуація, зокрема як перевірити, чи зміна справді збереглася правильно, розкрита в як перевірити поширення DNS. Не переслідуйте «DNS error» як баг, якщо часові рамки збігаються з нещодавньою зміною; спершу дайте їй вікно TTL.

Часті запитання

Який посібник мені потрібен, якщо браузер показує конкретний код помилки?

Шукайте саме цей код. DNS_PROBE_FINISHED_NXDOMAIN означає, що імені не існує, і покритий на власній сторінці, посилання на яку є вище. Загальне повідомлення «DNS server not responding» чи «cannot find server» без конкретного коду відповідає другому запитанню на цій сторінці: перевірте публічний резолвер напряму й подивіться, який із трьох результатів ви отримаєте.

Я виконав перевірки, і тепер усе визначається нормально. Що сталося?

Більшість збоїв DNS минущі: резолвер на мить перевантажився, запис кеша сплив посеред усунення несправності, або мережевий збій зник сам собою. Якщо зараз усе визначається чисто і лишається так, більше нічого виправляти не треба. Якщо повертається періодично, цей самий патерн уже підказка, і варто перевірити, чи він збігається з конкретним часом доби, мережею чи застосунком.

Чи DNS error - те саме, що сайт лежить?

Ні, і різниця важлива. DNS error означає, що ім’я так і не визначилося в адресу, тож жодного з’єднання взагалі не намагалися встановити. Сайт, що лежить, зазвичай означає, що ім’я визначилося нормально, але сервер не відповів, відмовив у з’єднанні або повернув сторінку помилки. Тест із публічним резолвером вище показує, в якій із цих двох ситуацій ви опинилися: адреса повертається, чи ні.

Чому той самий домен працює для мене, але не для колеги?

Це майже завжди кешування, а не зламаний запис. Різні мережі використовують різні резолвери, кожен із власною кешованою копією відповіді й власним терміном придатності. Хтось із вас, можливо, бачить застарілий кешований результат, поки резолвер іншого вже оновився. Перш ніж припускати, що щось справді не так, звірте поточний, правильний запис напряму з власними nameserver-ами домену.

Чи варто просто перейти на публічний DNS-резолвер і припинити пошук причини?

Перехід на 1.1.1.1 чи 8.8.8.8 - розумний постійний вибір, і він швидко виключає зламаний резолвер провайдера чи роутера. Це реальне виправлення, коли ваш резолвер за замовчуванням виявляється проблемою, а не просто обхідний шлях, але воно не допоможе, якщо несправність насправді у власних nameserver-ах домену, а не в резолвері, що вам відповідає.

Де перевірити, чи ім’я визначається по-різному в різних країнах?

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

Перевірити зараз

Запустіть безкоштовну перевірку власного сайту - обліковий запис не потрібен.

Dns query

Стежити за цим постійно

Отримуйте сповіщення в момент збою: HostTracker перевіряє з понад 300 локацій і повідомляє вас електронною поштою, SMS, у Slack, Telegram та інших каналах.

Можливості HostTracker

Ще в цьому розділі: Виправити: посібники для помилок, з якими стикаються насправді