Yandex Cloud DNS: публічні/приватні зони, Terraform, сертифікати

Зони та записи імен ламаються тихо: сервіс відповідає, а користувач упирається в помилку доступу. Ми налаштовуємо Yandex Cloud DNS під ключ — публічні та приватні зони, декларативний опис конфігурацій, сертифікати — і передаємо схему з регламентами. Розв'язання імен перестає бути точкою відмови, а зміни виходять передбачувано.
Часті запитання

Yandex Cloud DNS: налаштування — де ламається розв'язання імен

Збій розв'язання імен рідко виглядає як повна відмова: сервіс не знаходить сусідній, випуск сертифіката зависає на перевірці домену, застосунок іде на резервний вузол, а за десять хвилин усе працює саме собою.

Логи застосунку при цьому чисті — ім'я розв'язалося, але не туди, куди очікувалося, і до цього місця зазвичай доходить уже після нічного розбору.

Найчастіше причина — в одній із чотирьох точок. Застарілі та дубльовані записи залишаються від ручних правок у панелі: адреса на знятий вузол, два записи на одне ім'я з різними значеннями, забутий перевірочний запис, який блокує випуск сертифіката.

Друга точка — неправильна зона: домен випадково описано в публічній зоні замість приватної, або приватна зона перекриває зовнішні імена всередині мережі, і внутрішні сервіси починають ходити не туди.

Третя точка — кеш відповідей. Поки TTL завищений, клієнти, внутрішні резолвери й самі застосунки тримають старі адреси, і внесена правка «не застосовується» годинами.

Четверта — відсутність історії змін: запис виправили руками, відкочувати нічим, а наступний викат затирає його мовчки.

Розбираємо, як налаштування DNS у хмарі закривається декларативним описом: зони й записи в Yandex Cloud DNS живуть у репозиторії, проходять рев'ю, застосовуються за планом з усвідомленим TTL, а стан звіряється з описом. Тоді збій розв'язання імен локалізується за хвилини, а не за ніч перебору гіпотез.

Що дає керований сервіс імен: швидкість і передбачуваність

Керована зона — це ресурс провайдера, а не файл на одній машині: записи реплікуються, а розв'язання йде з найближчої до клієнта точки присутності.

Виведення серверів імен з обслуговування не потребує правок з нашого боку, тому планові роботи не перетворюються на вікно недоступності. Переводимо зони на Yandex Cloud і одразу фіксуємо параметри, від яких залежить поведінка при відмові.

Швидкість відгуку імен визначається близькістю резолвера і підібраним TTL. За розумного значення більшість запитів віддається з кешу, і клієнт не чекає повного рекурсивного обходу — ефект видно за часткою відповідей з кешу та за часом встановлення з'єднання.

Відмовостійкість розв'язання тримається на кількох серверах імен у різних зонах доступності. Втрата однієї точки не призводить до збою: запити йдуть на решту, а частка невдалих розв'язань залишається на рівні фонової. Ми знімаємо її до і після переїзду та порівнюємо, а не покладаємося на відчуття.

Історія змін записів закриває найдорожчий клас помилок — правку «руками» без сліду. Кожна зміна зберігає автора й час, відкат до попереднього стану займає хвилини, а самі записи живуть у декларативному описі (Terraform) з рев'ю до застосування. Там же вирішується перевірка домену для сертифікатів, яким потрібен запис у тій самій зоні.

Публічні та приватні зони: порівняння варіантів організації

Поділ на публічні та приватні зони вирішує не питання «де зберігати записи», а питання видимості: які імена розв'язуються з інтернету, а які — лише всередині хмарної мережі.

Це дві незалежні сутності з окремим життєвим циклом, і поєднувати їх в одній зоні не можна: приватні записи не повинні бути видні ззовні, а публічні зобов'язані.

На практиці обирають між чотирма схемами. Нижче — умови застосовності та те, чим кожна обмежує.

Схема Коли підходить Обмеження
Одна публічна зона Сайт, API і вітрина доступні з інтернету, внутрішніх імен немає Внутрішні імена йдуть у публічний резолв, межі між зовнішнім і внутрішнім трафіком немає
Приватна зона всередині мережі Внутрішні сервіси, бази, черги, звернення за іменами Ззовні не розв'язується; записи видні лише з прив'язаних мереж, на кожну мережу — своя зона
Гібридна схема зон Публічний зовнішній контур плюс закрите ядро — типовий продуктовий випадок Однакові імена живуть у двох зонах: розсинхрон конфігурацій дає рідкісні й складні відмови
Власні сервери імен Потрібен повний контроль над зоною, нестандартні записи, своя інфраструктура імен уже є Доступність і відмовостійкість — на вас; делегування, передача зони, резолв залежить від вашої площадки

Гібрид — те, до чого приходять майже всі продуктові контури: назовні віддається мінімум записів, внутрішні імена живуть у приватній зоні, прив'язаній до конкретних мереж. Варіант визначає не зручність, а межі відмови: чим публічніша зона, тим дорожча помилка в записі.

Порядок впровадження: від інвентаризації зон до передачі

Впровадження розбито на етапи так, щоб кожну зміну можна було перевірити й відкотити, не чекаючи спливання TTL.

Спершу фіксуємо поточний стан і власників записів, потім переносимо зони і лише потім перемикаємо трафік — на кожному кроці є точка повернення й критерій, за яким зрозуміло, що можна йти далі.

  1. Інвентаризація записів. Вивантажуємо всі записи з чинних зон — A, AAAA, CNAME, MX, TXT, SRV, CAA — і звіряємо з фактичним трафіком та активними сервісами. Для кожного запису знаходимо власника: без відповідального за призначення запис у перенесення не йде.

  2. Схема зон. Розмічаємо, що залишається в публічній зоні, а що йде в приватну — внутрішні сервіси, бази, службові імена. Приватні зони прив'язуємо до конкретних мереж, щоб внутрішні імена не відповідали назовні.

  3. Опис конфігурації як коду. Зони й записи описуємо декларативно, стан зберігаємо віддалено, зміни проходять рев'ю. Наявні записи імпортуємо, щоб опис збігався з реальністю, а не розходився з нею.

  4. Зниження TTL і підготовка вікна. На записах, які змінюватимуться, заздалегідь зменшуємо TTL — вікно відкату скорочується з годин до хвилин. Це робиться до перемикання, інакше швидкість повернення задає старий кеш резолверів.

  5. Контрольоване перемикання. Спершу переносимо тестовий домен і переконуємося, що відповіді збігаються з еталоном, потім змінюємо делегування бойової зони. Стара зона залишається робочою — обидва набори серверів відповідають однаково.

  6. Перевірка після зміни. Опитуємо записи із зовнішніх резолверів і з кожної мережі, звіряємо з інвентарним вивантаженням, перевіряємо поштові записи й випуск сертифікатів: домен-підтвердження і CAA мають проходити без ручних правок.

  7. Відкат і передача. До кінця вікна спостереження тримаємо стару зону в актуальному стані, відкат — повернення делегування. В експлуатацію передаємо доступи, порядок правок через код, моніторинг відповідей і контроль строків поновлення сертифікатів.

Що передаємо на руки: конфігурації, схеми, регламенти

Передаємо не архів файлів, а робочу конфігурацію, яку можна розгорнути з нуля й далі вести без нас. Усі артефакти лежать у репозиторії та проходять перевірку до застосування, тому стан зон у Yandex Cloud DNS не розходиться з тим, що описано в коді.

  • Опис зон і записів у декларативному вигляді — файли з публічними й приватними зонами, записами, значеннями TTL і прив'язкою до середовищ. Будь-яка правка йде через рев'ю та перевірку плану, ручні зміни в панелі керування виключені.
  • Схема мережі та зв'язків — як зони співвідносяться з мережами, підмережами й сервісами, де розв'язання імен іде назовні, а де залишається всередині контуру. Окремо позначені точки, де найчастіше виникають конфлікти.
  • Правила доступу до керування зонами — ролі для інженерів, окремі сервісні облікові записи для автоматизації, розподіл прав між бойовим і тестовим контуром.
  • Розподіл середовищ — параметри й стани для продакшену та стендів рознесені, тому експерименти не потрапляють у бойові зони й не ламають розв'язання імен у користувачів.
  • Документація — порядок додавання запису, випуску й оновлення сертифікатів, перевірки відповідності опису реальному стану.
  • Регламент реагування на інциденти — контрольні точки моніторингу, порядок відкату до попередньої конфігурації, критерії ескалації та зона відповідальності на боці замовника.
  • Порядок передачі — склад доступів, послідовність запуску з нуля та перевірочний сценарій, за яким ваша команда переконується, що інфраструктура працює без нас.

Кейс: переведення зон без простою та зростання успішних відповідей

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

Зріз до міграції: частка успішних відповідей трималася на 96–97%, після кожної правки зони розв'язання імені просідало до 40 секунд, а внутрішні імена частина сервісів не знаходила взагалі.

У підтримку надходило близько тридцяти звернень на місяць із формулюванням «сервіс не відкривається», і розбирали їх руками — причин могло бути три: кеш, застарілий запис або сертифікат, що відвалився.

Що змінили

Зони й записи перенесли в Yandex Cloud DNS і описали в Terraform: публічні — декларативно, приватні — прив'язкою до мереж, щоб внутрішні імена розв'язувалися лише всередині контуру.

За добу до перемикання знизили TTL до хвилини, дали старим кешам сплисти і лише потім змінили сервери імен у реєстратора. Перевірку домену для сертифікатів перевели на DNS-записи, поновлення стало автоматичним.

Зріз після: частка успішних відповідей — 99,9% і вище, розв'язання імені вкладається в десятки мілісекунд. Перемикання пройшло без простою — вікно зайняло 40 хвилин, і весь цей час сервіс коректно відповідав через обидва набори серверів імен.

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

Чим приватна DNS-зона відрізняється від публічної

Публічна зона відповідає на запити з інтернету: її записи віддають авторитативні сервери імен, а батьківська зона делегує на них домен. Приватна зона живе всередині хмарної мережі — її бачать лише запити звідти, і делегування назовні в неї немає. Тому однаково названий домен може існувати у двох зонах одночасно і не конфліктувати між собою.

Область видимості записів — головна відмінність. У публічній зоні будь-який зовнішній резолвер отримає адресу, і приховати частину записів не вийде: піддомени рано чи пізно потрапляють у відкриті переліки.

У приватній ім'я для інтернету не існує — ззовні запит поверне відмову, а зсередини потрібну адресу.

На приватній зоні будуються внутрішні імена сервісів. Ім'я виду db.prod.internal створюється поряд із мережею і не залежить від адрес конкретних інстансів: при заміні чи масштабуванні змінюється лише запис, а конфігурації застосунків залишаються незмінними. Те саме ім'я використовується в правилах доступу між сервісами.

При розділенні зовнішнього й внутрішнього розв'язання одне ім'я може відповідати різними адресами — ззовні на вхідну точку, зсередини напряму на сервіс. Так службовий трафік не ходить через зовнішній периметр, а вибір середовища задається зоною, а не правкою коду.

У Yandex Cloud DNS обидві зони описуються декларативно разом із прив'язкою до мереж, тому стан відтворюваний.

Сертифікати для внутрішніх імен випускає приватний центр сертифікації, для публічних — підтвердження володіння доменом; і те й інше спливає за розкладом, тому оновлення ставимо регулярною задачею, а не ручною операцією.

Часті питання: час життя записів, міграція, сертифікати

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

Зони, записи, сертифікати й права описуємо кодом і зберігаємо в репозиторії — стан зони завжди можна порівняти з описом і відкотити. Це ж знімає головний біль передачі: новий інженер бачить, чому запис виглядає саме так.

Який час життя записів вибрати?

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

Як переїхати на нову площадку без простою?

Спершу імпортуємо поточні записи в опис, звіряємо розходження і лише потім перемикаємо сервери імен, перевіряючи резолв із кількох мереж. Старий контур тримаємо до спливання найдовшого часу життя запису і лише потім знімаємо. Відкат — повернути попередній опис зони.

Як не пропустити поновлення доменів і сертифікатів?

Випуск і поновлення сертифікатів ставимо на автоматику з перевіркою валідації на тестовому контурі, а не в день спливання. За доменами й зонами налаштовуємо оповіщення за кілька тижнів до строку, щоб поновлення не перетворювалося на аварійну роботу у вихідні.

Що входить у передачу експлуатації?

Схема зон, опис у репозиторії, регламенти випуску сертифікатів і правок записів, розмежування доступів та інструкція з відкату. Проводимо розбір із вашою командою і залишаємося на зв'язку на період, поки чергування не перейде до вас.

Обговоримо вашу схему зон і повернемося з планом робіт

Щоб оцінка робіт була не «на око», нам достатньо поточної картини зон: які домени обслуговуються, де зони публічні, а де приватні всередині Yandex Cloud.

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

На дзвінку розберемо:

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

Що надіслати заздалегідь:

  • перелік доменів і піддоменів із призначенням;
  • схему мереж: де живуть сервіси й кому потрібні внутрішні імена;
  • поточні конфігурації або вивантаження зон;
  • перелік сертифікатів і місць, де вони використовуються.

Після цього повернемося з оцінкою та планом впровадження: черговість перенесення зон, спосіб опису конфігурації, точки перевірки й порядок відкату. Опишіть задачу у двох абзацах — цього вистачить, щоб назвати строки та склад робіт.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139