Домени та DNS Технічні

Wildcard-домени: як одна зірочка замінює сотні DNS-записів і спрощує вам життя

Серверна кімната з обладнанням для налаштування wildcard домен DNS записів

Уявіть, що вам потрібно створити 200 піддоменів. Для кожного клієнта, для кожного міста, для кожної мовної версії. Ви відкриваєте панель DNS-менеджера і починаєте додавати записи один за одним. На п'ятнадцятому піддомені ви вже ненавидите свою роботу. На тридцятому - починаєте гуглити "як автоматизувати DNS". А на п'ятдесятому - дізнаєтесь про wildcard-записи. І тут настає момент, коли хочеться повернутися в минуле і сказати собі: "Слухай, є простіший спосіб." Саме про цей спосіб ми зараз і поговоримо.

Що таке wildcard-домен і чому він працює як магія

Wildcard-запис у DNS - це, по суті, одна маленька зірочка (*), яка перехоплює всі запити до неіснуючих піддоменів і направляє їх туди, куди ви вкажете. Замість того, щоб прописувати kyiv.example.com, lviv.example.com, odesa.example.com окремо, ви створюєте один запис *.example.com - і готово.

Технічно wildcard-запис виглядає так: *.example.com. IN A 192.0.2.1. Зірочка тут - це не просто символ. Це інструкція для DNS-сервера: "будь-який піддомен, який явно не вказаний в зоні, відправляй на цю IP-адресу". Простий приклад. Якщо хтось набере banana.example.com, а у вас немає такого запису - wildcard підхопить запит.

Ключовий момент: wildcard працює тільки на одному рівні вкладеності. Запис *.example.com обслуговуватиме test.example.com, але НЕ обслуговуватиме sub.test.example.com. Для другого рівня вам потрібен окремий wildcard: *.test.example.com. Це типова помилка, яку роблять навіть досвідчені адміністратори.

Цифровий замок захисту wildcard SSL сертифікат Let's Encrypt для піддоменів
Цифровий замок захисту wildcard SSL сертифікат Let's Encrypt для піддоменів

Де wildcard-домени справді рятують ситуацію

Я бачив десятки проєктів, де wildcard-записи перетворювали хаос на елегантне рішення. Ось найпоширеніші сценарії:

  • SaaS-платформи з персональними піддоменами - кожен клієнт отримує свій адресу типу companyname.yourapp.com. Slack, Notion, Freshdesk - всі вони використовують саме цей підхід.
  • Мультирегіональні сайти - коли кожне місто або країна мають свій піддомен для SEO або контенту.
  • Тестові середовища - розробники створюють feature-branch.dev.example.com для кожної нової функції, і не треба чекати, поки хтось додасть DNS-запис.
  • Електронна пошта з catch-all - wildcard MX-запис дозволяє приймати листи на будь-яку адресу вашого домену, навіть якщо поштову скриньку ніхто не створював.

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

Темний бік зірочки: ризики, про які мовчать туторіали

Більшість інструкцій в інтернеті радісно розповідають, як додати wildcard-запис за 30 секунд. І зупиняються. Але саме тут починається найцікавіше.

  1. SEO-катастрофа при неправильному налаштуванні. Пошуковий бот Google може проіндексувати сотні випадкових піддоменів з дубльованим контентом. Ви навіть не помітите, а ваш сайт вже отримає penalty. Рішення - правильна конфігурація веб-сервера, який повертатиме 404 або редирект для невідомих піддоменів.
  2. Фішинг на вашому домені. Зловмисник може створити посилання типу paypal-secure-login.example.com і використати ваш домен для обману. Якщо wildcard направляє все на один сервер без перевірки - це вразливість.
  3. Проблеми з SSL-сертифікатами. Звичайний сертифікат не покриває wildcard-піддомени. Вам потрібен спеціальний wildcard-сертифікат (*.example.com), який зазвичай коштує дорожче. Let's Encrypt видає їх безкоштовно, але тільки через DNS-challenge - а це окрема історія.
  4. Конфлікт з явними записами. Якщо у вас є запис mail.example.com, що вказує на один IP, а wildcard - на інший, DNS-сервер пріоритизує явний запис. Звучить логічно, але коли у вас 50 явних записів і один wildcard, дебаг перетворюється на квест.

"Wildcard DNS records are a powerful tool, but they should be treated like a chainsaw - incredibly useful when you know what you're doing, and incredibly dangerous when you don't." - Cricket Liu, автор книги "DNS and BIND", яка вважається біблією DNS-адміністрування.

Адміністратор налаштовує DNS записи wildcard домен на сервері
Адміністратор налаштовує DNS записи wildcard домен на сервері

Покрокове налаштування: від зони DNS до працюючого піддомену

Давайте пройдемо весь процес від початку до кінця. Без магії, без скорочень.

Крок 1. Зайдіть у панель управління DNS вашого реєстратора або хостинг-провайдера. Це може бути Cloudflare, Namecheap, GoDaddy, або будь-хто інший - принцип однаковий.

Крок 2. Створіть новий A-запис. У полі "Host" або "Name" введіть символ зірочки: *. У полі "Value" або "Points to" вкажіть IP-адресу вашого сервера. TTL залиште 3600 секунд або менше, якщо плануєте часті зміни.

Крок 3. Налаштуйте веб-сервер. Ось тут багато хто спотикається. Сам по собі DNS-запис лише направляє трафік. Ваш Nginx або Apache повинен знати, що робити з цим трафіком.

Приклад конфігурації Nginx для wildcard:

server { server_name *.example.com; root /var/www/sites/$subdomain; ... }

Крок 4. Отримайте wildcard SSL-сертифікат через Let's Encrypt із DNS-01 challenge. Команда виглядає приблизно так: certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d "example.com"

Крок 5. Перевірте. Відкрийте браузер, введіть будь-який випадковий піддомен. Працює? Вітаю. Не працює? Дайте DNS 15-30 хвилин на пропагацію і спробуйте знову.

Wildcard vs явні записи: коли що обирати

Це не питання "або-або". Це питання архітектури. Ось порівняння, яке допоможе вам прийняти рішення:

Критерій Wildcard-запис Явні DNS-записи
Кількість піддоменів Необмежена, один запис Кожен прописується окремо
Контроль Мінімальний - все йде в одне місце Повний - кожен піддомен на свій IP
Швидкість додавання Миттєво, без змін у DNS Від 1 до 48 годин на пропагацію
SSL-сертифікат Потрібен wildcard-сертифікат Окремий або мультидоменний
Безпека Вища поверхня атаки Точкова, краще контрольована
SEO Ризик дублікатів контенту Кожен піддомен керується окремо

Мій улюблений підхід - комбінований. Критичні піддомени (mail, www, api, app) прописуються явно. Для всього іншого - wildcard. Так ви отримуєте і контроль, і гнучкість.

Ілюстрація технології блокчейн та піддомени налаштування wildcard домен
Ілюстрація технології блокчейн та піддомени налаштування wildcard домен

Поширені помилки, які перетворюють wildcard на головний біль

За останні кілька років я зібрав колекцію типових фейлів. Деякі з них - мої власні. Не повторюйте їх.

  • Забути про CNAME-обмеження. Wildcard CNAME-запис (*.example.com CNAME target.cdn.com) працює, але він конфліктуватиме з будь-яким іншим типом запису на тому ж рівні. Якщо у вас є MX-записи для піддомену - CNAME все зламає.
  • Ігнорувати логи веб-сервера. Коли wildcard увімкнено, на ваш сервер літимуть запити на піддомени, про існування яких ви навіть не підозрюєте. Боти, сканери, випадкові користувачі. Моніторте логи хоча б перший тиждень після налаштування.
  • Не налаштувати default virtual host. Якщо ваш веб-сервер не має правила для "невідомих" піддоменів, він покаже дефолтний сайт. Іноді це адмін-панель. Іноді - зовсім інший проєкт на тому ж сервері. Класика жанру.

Золоте правило wildcard-доменів: налаштуйте catch-all на стороні веб-сервера, який повертає 404 або редиректить на основний домен. Це закриває 90% потенційних проблем з безпекою і SEO одним ходом.

А ще один нюанс, який часто випускають з уваги: wildcard-записи і DNSSEC. Якщо ви підписуєте зону DNSSEC, відповіді на запити до неіснуючих піддоменів будуть підтверджуватися через NSEC або NSEC3-записи. Це означає додаткове навантаження на DNS-сервер і трохи повільніші відповіді. Для більшості проєктів це непомітно, але для високонавантажених систем - варто враховувати.

Wildcard-домени - це один з тих інструментів, які здаються тривіальними на поверхні, але ховають під собою цілий айсберг нюансів. Ви можете налаштувати wildcard за 2 хвилини. А можете витратити 2 тижні, розбираючись, чому він працює не так, як ви очікували. Різниця - у розумінні того, що відбувається під капотом. Тепер у вас це розуміння є. Питання лише одне: який із ваших проєктів першим отримає зірочку?