Управління портами на VPS і виділених серверах: як перевірити відкриті порти, правильно налаштувати фаєрвол, уникнути типових помилок і підвищити безпеку інфрас...
Блог компанії 3v-Hosting
13 хв.
ERR_NAME_NOT_RESOLVED - це одна з найбільш дратівливих помилок браузера, тому що вона виглядає так, ніби сайт помер, хоча насправді сервер може бути живішим за всіх живих. Ви запускаєте проект, переносите домен на новий VPS, викатуєте Ingress в Kubernetes, підключаєте CDN або просто хочете зайти на адмінку, як раптом замість сторінки отримуєте відповідь, що це доменне ім'я не визначено.
Ця помилка майже завжди стосується DNS, а DNS - річ підступна, оскільки за своєю архітектурою вона має розподілену природу, вона кешується, а також система доменних імен залежить від купи проміжних вузлів. Тому у одного користувача сайт може відкриватися, у іншого - ні, а у третього взагалі браузер видає помилку ERR_NAME_NOT_RESOLVED.
У цій статті ми спробуємо розібратися, що саме призводить до появи даної помилки, як швидко зрозуміти, де саме проблема, у вас або в зоні домену, як діагностувати NXDOMAIN/SERVFAIL і що робити в різних сценаріях - від банального очищення кешу до перевірки делегування вашого домену.
Для того, щоб розуміти, про що ми будемо говорити, потрібно спочатку розібратися в тому, що таке DNS і як працює ця служба.
DNS (Domain Name System) - це сервіс, який перекладає зрозумілі людині доменні імена в IP-адреси, зрозумілі мережі. Браузер не вміє переходити на домен сам по собі, він завжди підключається до конкретної IP-адреси. Тому, коли ви вводите в адресному рядку браузера example.com, спочатку відбувається DNS-запит - тобто пошук відповіді на питання, якій IP-адресі відповідає це доменне ім'я. Зазвичай ця відповідь береться з кешу (браузера/операційної системи/провайдера) або запитується у рекурсивного DNS-сервера, який при необхідності пересилає запит до авторитетних DNS-серверів домену і отримує A/AAAA/CNAME-записи. Спрощено, ланцюжок резолва можна представити такими кроками:
example.com;І ось якщо на будь-якому з цих етапів IP отримати не вдалося, то браузер показує ERR_NAME_NOT_RESOLVED, тобто ваш браузер просто не знає, до якого сервера звертатися.
У практичному сенсі проблема майже завжди зводиться до одного з трьох варіантів:
Тепер, коли ми розібралися в самій суті проблеми - давайте детальніше розглянемо основні причини.
Нижче ми розділимо причини на дві групи і пояснимо, чому цей поділ буде нам корисним.
Головна помилка будь-якої діагностики - це хаотична поведінка, наприклад відразу намагатися лізти в панель управління доменом, хоча проблема локальна або навпаки намагатися чистити кеш, коли домен не делегований, а може бути його і зовсім не існує. Тому ми і повинні розділити можливі проблеми на такі групи.
Найбільш яскравими ознаками, що свідчать на користь того, що проблема виникла на стороні користувача, можуть бути:
Типовими причинами в таких випадках можуть бути такі:
/etc/hosts присутні якісь застарілі або блокуючі записи;Ця група майже завжди проявляється наступним чином:
dig повертає NXDOMAIN, SERVFAIL або порожній ANSWER;
Типовими причинами в цьому випадку можуть бути такі:
Тепер, коли ми розібралися в можливих причинах, що призводять до появи помилки, ми можемо проводити самоперевірку і швидко з'ясувати, на чиєму боці проблема, і не метатися, пробуючи все підряд, смикаючи підтримку свого провайдера даремно.
| Симптом | Що це найчастіше означає | Що зробити насамперед |
|---|---|---|
| Не відкривається лише у вас | Локальний DNS, кеш, VPN або файл hosts | Перевірити через мобільний інтернет, змінити DNS на 1.1.1.1 / 8.8.8.8 |
| Не відкривається ні в кого | Проблема із DNS-зоною або делегуванням | Виконати dig example.com і dig NS example.com |
| Відкривається за IP, але не за доменом | Відсутній або некоректний A-запис | Перевірити A/CNAME у панелі DNS |
Працює example.com, але не www |
Немає запису для www |
Додати A/CNAME для www |
| Після зміни записів то працює, то ні | Триває DNS-пропагація / кешування | Перевірити TTL і дочекатися оновлення кешу |
| В офісі не працює, а вдома працює | Корпоративний DNS або фільтрація | Перевірити резолвери, split DNS, conditional forwarding |
Ця таблиця допоможе вам швидко визначитися, в якому напрямку копати, що в підсумку заощадить купу часу.
Тепер час переходити до практики. По суті, для локалізації проблеми вам потрібно відповісти лише на три питання:
Давайте розберемо пару команд і з'ясуємо, на що саме дивитися у відповіді.
dig - перевіряємо, чи віддається IP, чи існує A/AAAA записСинтаксис даної команди гранично простий:
dig example.com
На що звертати увагу:
status: NOERROR- означає, що домен існує, відповідь коректна, але A-запис може бути порожнім, якщо не прописаний;status: NXDOMAIN- домен взагалі не існує в DNS, він або не делегований, або існує помилка імені або зони;status: SERVFAIL - сервер не зміг обробити запит. Часто це означає, що проблеми на авторитетних NS, DNSSEC, недоступність.ANSWER SECTION: чи є A/AAAA-записи.Якщо розділ ANSWER порожній - це і є причина, що означає, що IP не знайдено.
dig NS - перевіряємо делегуванняЗа синтаксисом знову ніяких сюрпризів:
dig NS example.com
У відповіді повинні бути NS-сервери. Якщо NS немає або вони явно не ті, які ви очікуєте, проблема може бути в делегуванні у реєстратора цього домену.
Далі логіка проста:
Якщо ви знаєте, що NS домену - ns1.example.net, можна запитати його безпосередньо:
dig @ns1.example.net example.com A
Якщо публічний dig example.com дає дивні результати, а прямий запит до NS показує іншу інформацію - це з великою ймовірністю означає, що десь по шляху інформація або закешувалася, або по шляху є зайвий резолвер.
dig +trace - де саме зламалосяНабираємо в командному рядку:
dig +trace example.com
Ця команда показує ланцюжок від кореня до авторитетних NS. Це найкращий спосіб побачити, де саме виникає проблема, наприклад, делегація не сходиться, NS не відповідає або зона не віддає запис.
Один з найнервовіших моментів при роботі з DNS - це ситуація, коли після зміни записів сайт починає поводитися неоднаково. У одного користувача відкривається нова версія, у іншого - стара, а у третього взагалі відображається помилка. З боку це виглядає як хаос або нестабільність сервера, хоча найчастіше причиною служить звичайне кешування DNS запитів.
Нам з вами важливо розуміти, що DNS не оновлюється миттєво по всьому світу. Це розподілена система, і зміни, внесені в дані про домен, поширюються поступово від одного сервера до вищого в ієрархії, а від них вниз до інших.
Існує ще такий параметр, як TTL (Time To Live) - це час життя DNS-запису в кеші. По суті, це інструкція резолверу про те, скільки секунд можна зберігати той чи інший запит, не перевіряючи його знову.
Якщо у запису встановлено TTL 3600, це означає, що резолвер має право зберігати отриману IP-адресу протягом однієї години і не запитувати її заново у авторитетного сервера. Поки TTL не закінчився, резолвер буде продовжувати віддавати стару відповідь, навіть у випадку, якщо ви вже змінили запис.
Так чому ж виникає ефект нестабільної роботи? Все просто.
Проблема в тому, що кешування відбувається не в одному місці. У ланцюжку кешування беруть участь і рекурсивні DNS-сервери провайдерів, і корпоративні DNS всередині компаній тощо, аж до кешу самого браузера. Кожен з них може зберігати стару відповідь до закінчення TTL і в результаті виходить, що частина користувачів вже отримує новий IP, а частина все ще бачить старий. А якщо при зміні запису була допущена помилка, деякі резолвери і зовсім можуть тимчасово кешувати навіть негативну відповідь (наприклад, NXDOMAIN).
З боку це виглядає як нестабільність сайту, але насправді це нормальна робота механізму кешування, до розуміння якого ми щойно наблизилися.
Якщо ви плануєте перенесення вашого сайту або зміну IP, то не варто змінювати запис в останній момент. Набагато правильніше і безпечніше буде заздалегідь, за 24-48 годин, знизити TTL (наприклад, до 300 секунд). Тоді кеш буде оновлюватися швидше, і перемикання відбудеться м'якше і передбачуваніше.
Після завершення міграції TTL можна повернути до більш високого значення, щоб знизити навантаження на DNS-сервери.
Тепер переходимо до конкретики - що робити, якщо помилка вже виникла. Нагадаємо, що в цьому випадку важливо діяти не хаотично, а виходячи з того, що ми вже вивчили: спочатку зрозуміти, де проблема, а потім усувати її на відповідному рівні.
Як ми вже визначилися, всі ситуації умовно діляться на дві групи: проблема локальна (у конкретного користувача) і проблема на стороні домену або DNS-зони. Підхід в цих випадках буде різним.
Локальна проблема означає, що домен в цілому існує і у більшості користувачів відкривається, але на конкретному комп'ютері або в конкретній мережі виникають проблеми. Це найчастіший сценарій після недавніх змін DNS. Що робити в такому випадку?
Очищення DNS-кешу
Операційна система і браузер можуть зберігати старі відповіді DNS. Навіть якщо запис вже оновлено на сервері, локальний резолвер може продовжувати використовувати старий IP. Очищаємо кеш на Windows:
ipconfig /flushdns
На Linux (systemd-resolved):
sudo resolvectl flush-caches sudo systemctl restart systemd-resolved
Якщо використовується nscd:
sudo systemctl restart nscd
Після очищення кешу система перестане використовувати застарілий IP і запросить свіжі дані у DNS-сервера.
Файл hosts має пріоритет над DNS, тому якщо в ньому є запис для вашого домену, то система взагалі не буде звертатися до зовнішніх DNS-серверів.
На Linux/macOS файл знаходиться за адресою:
/etc/hosts
На Windows:
C:\Windows\System32\drivers\etc\hosts
Шукайте рядки з вашим доменом і перевіряйте, що там написано. Особливо зверніть увагу, якщо поруч з вашим доменом стоїть або стара IP-адреса, або локальна 127.0.0.1, або навіть 0.0.0.0.Виправте цей запис на дійсну IP-адресу і перезапустіть систему.
Іноді проблема не в домені, а в DNS-сервері провайдера. Він може кешувати застарілі дані або тимчасово працювати нестабільно.
Для перевірки можна тимчасово вказати інші, публічні DNS-сервери в налаштуваннях мережі вашого комп'ютера. Найбільш популярними публічними DNS є сервери Cloudflare - 1.1.1.1 і 1.0.0.1, а також сервери Google - 8.8.8.8 і 8.8.4.4.
Це в жодному разі не означає, що публічні DNS чимось кращі. У деяких випадках, при падінні такого публічного сервера - проблеми спостерігаються в більшій частині інтернету, так як дуже багато хто їх використовує. Ні, це просто спосіб перевірки, так як якщо з новим DNS все працює, значить, проблема була саме на стороні вашого провайдера.
VPN часто підміняє DNS-запити і використовує власні резолвери. Це може призводити до таких проблем, як:
Вимкніть ваш VPN і якщо без нього сайт відкривається, тоді проблема саме в налаштуваннях VPN.
Цей сценарій є більш критичним для власників сайтів. Адже якщо ваш домен не резолвується глобально, то користувачі просто не можуть потрапити на проект. Тут вже потрібно перевіряти інфраструктуру DNS.
Перше, що варто зробити - це переконатися, що домен активний і термін його реєстрації не закінчився. Якщо термін реєстрації закінчився, то домен може перейти в стадію утримання або блокування, і резолвінг буде працювати нестабільно або зовсім припиниться.
У панелі реєстратора зазвичай відразу видно, чи активний домен, чи не заблокований він, а також чи не відключена делегація.
Якщо домен делегований на неправильні NS-сервери, то будь-які зміни в правильній панелі DNS не матимуть значення, адже Інтернет буде звертатися туди, куди вказав реєстратор. Тому наступним кроком потрібно перевірити:
Дуже часто зустрічається помилка, коли зона налаштована в одній панелі у одного реєстратора, а домен делегований на інші NS-сервери, наприклад, які зовсім не належать до цього реєстратора.
Навіть якщо NS вказані правильно, вони повинні реально відповідати на запити. Тоді слід виконати перевірку безпосередньо:
dig @ns1.example.net example.com A
Якщо сервер не відповідає або повертає помилку, значить проблема в роботі DNS-сервера або в конфігурації зони.
Найбанальніша, але й найпоширеніша причина - це коли запис просто відсутній або вказаний невірно.
У панелі управління вашим доменом перевірте:
www, якщо використовується;
І ще раз нагадуємо, що при локалізації та усуненні проблеми ERR_NAME_NOT_RESOLVED потрібно діяти послідовно:
Коли ви рухаєтеся по цьому ланцюжку, то ймовірність швидкого пошуку і виправлення причин помилки збільшується.
Про DNS зазвичай згадують тільки тоді, коли щось вже зламалося. Але на практиці саме DNS є вашою, навіть вхідною точкою у ваш проект. Можна мати ідеально налаштований сервер, відмовостійкий кластер і продуманий CI/CD, але якщо домен перестав резолвитися, то користувачі просто не потраплять на сайт.
А щоб уникнути таких ситуацій, достатньо впровадити всього кілька базових практик.
Для публічного домену нормою вважається наявність як мінімум двох NS-серверів, бажано в різних мережах або локаціях. Це не надмірність заради галочки, а захист від ситуації, коли один сервер стає недоступним.
Частою помилкою є моніторинг тільки HTTP/HTTPS. Але якщо DNS перестав працювати, до веб-сервера справа просто не дійде. Тому має сенс контролювати також:
www;
Це можна налаштувати в Zabbix, Prometheus (через blackbox_exporter) або в будь-якому зовнішньому сервісі моніторингу. Головне - це перевіряти резолвінг саме зовні, з інтернету, а не зі своєї інфраструктури.
Багато раптових падінь бувають пов'язані не з технічними проблемами, а з організаційними, коли термін дії домену закінчився, лист від реєстратора потрапив у спам або платіж за інвойсом не пройшов.
Мінімальний набір заходів для виключення цих варіантів - це:
Це банально, але саме такі дрібниці часто стають причиною реальних простоїв.
Якщо ви плануєте зміну IP або перенесення проекту, не змінюйте запис в останній момент. Краще за 1-2 дні до міграції знизьте TTL (наприклад, до 300 секунд) і тоді кеші будуть оновлюватися швидше, а перемикання пройде набагато спокійніше.
Після стабілізації можна повернути TTL до більш високого значення.
Якщо ви керуєте зоною самостійно (наприклад, через BIND), корисно перевіряти її перед перезапуском DNS-сервера:
named-checkzone example.com /etc/bind/zones/db.example.com
Так можна виявити синтаксичні помилки до того, як вони стануть проблемою для користувачів.
У підсумку профілактика DNS - це не про побудову складної архітектури, а про акуратність і контроль. Коли зона коректна, сервери зарезервовані, домен продовжений, а резолвінг моніториться, то ERR_NAME_NOT_RESOLVED стає рідкісним винятком, а не регулярним головним болем.
Тому що DNS не повертає IP. Сервер живий, але домен не вказує на нього (немає A-запису або він неправильний).
Ні. SSL починається після отримання IP і встановлення з'єднання. При ERR_NAME_NOT_RESOLVED до SSL не доходить.
Залежить від TTL і кешів. Зазвичай від хвилин до доби. 48 годин - це верхня планка для погано керованих кешів, але на практиці найчастіше це відбувається набагато швидше.
Так. Особливо при неправильних NS у реєстратора, вимкненій зоні, конфлікті DNSSEC, помилках у записах всередині CDN.
Ні. Firewall може дати timeout, connection refused і подібне. ERR_NAME_NOT_RESOLVED виникає раніше - коли IP ще не отримано.
Помилка ERR_NAME_NOT_RESOLVED - це не падіння сервера і не проблема браузера. Це зупинка на найпершому етапі - етапі DNS-розв'язання. Браузер просто не отримав IP-адресу і тому не може почати з'єднання.
У більшості випадків причина виявляється досить приземленою, наприклад відсутній A-запис, неправильно налаштовано делегування, домен закінчився або кеш ще тримає старі дані після міграції. Рідше бувають більш глибинні проблеми, коли не відповідають авторитетні NS, виникає SERVFAIL, конфліктує DNSSEC, некоректно налаштований split DNS в корпоративній мережі або є помилки в CoreDNS всередині Kubernetes.
Ключем до успішного і швидкого вирішення є не гадання про причини, а методичні дії за простим алгоритмом. Кілька простих команд, таких як dig з параметрами, дозволяють швидко зрозуміти, де саме стався збій, на рівні кешу, резолвера, делегування або самої зони. Коли точка відмови знайдена, помилка перестає бути великою проблемою і перетворюється вже на звичайне інфраструктурне завдання, яке потрібно вирішити.
Що таке WHOIS і як його використовувати: перевірка домену, IP та ASN, статус, делегування, GDPR, відмінність від RDAP та практичні сценарії для адміністраторів ...
Фавікон - що це таке, навіщо він потрібен і як правильно налаштувати для всіх браузерів і пристроїв. Розміри, формати, вплив на SEO та типові помилки в одному г...
Перемикання користувачів в Ubuntu: su, sudo, sudo -i, sudo -u і SSH. Практичний посібник з безпечної роботи з правами, середовищем і сесіями на серверах і дескт...