Оглавление

Всем привет! Сегодня я расскажу о том, как решить проблему с делегированием домена и конфликтами DNSSEC. Это будет полезно тем, кто сталкивался с ошибками SERVFAIL при использовании Google DNS или Cloudflare DNS. Разбираем на примере моего домена krivoshein.site.


Предыстория: от Cloudflare к Beget и обратно

Всё началось с того, что я решил перевести свой домен krivoshein.site с Cloudflare обратно на NS-серверы Beget. Думал, что это обычная процедура — сменил NS-записи у регистратора и жду, пока изменения обновятся. Однако всё пошло не так гладко.

Через пару часов я заметил, что часть пользователей не может открыть сайт. Проверка через Google DNS и Cloudflare DNS показала ошибку SERVFAIL.

Вот пример команды:

dig krivoshein.site @8.8.8.8

Ответ:

;; Got SERVFAIL reply from 8.8.8.8

Или так:

nslookup krivoshein.site 1.1.1.1

Ответ:

** server can't find krivoshein.site: SERVFAIL

Я начал разбираться, и вот что выяснил: проблема связана с DNSSEC.

Проверка через CLO

Чтобы уточнить проблему, я временно делегировал домен на NS-серверы CLO (ns1.clo.ru, ns2.clo.ru). Результат показал, что CLO успешно обработал записи, и DNS-запросы начали работать. Это подтвердило, что проблема была не в самом домене, а в остаточных DS-записях или конфликтах между DNSSEC и настройками предыдущего хостинга.

Пример проверки:

Как я решил проблему с делегированием домена и DNSSEC: реальная история с техподдержкой

В чём была проблема?

Когда домен был делегирован на Cloudflare, там автоматически активировался DNSSEC. При возврате домена на NS-серверы Beget записи DNSSEC (DS-записи) остались у регистратора. Это вызвало конфликт:

  • Yandex DNS (77.88.8.8) не проверяет DNSSEC, поэтому домен работал нормально.
  • Google DNS (8.8.8.8) и Cloudflare DNS (1.1.1.1) проверяют DNSSEC, и при наличии неподписанных записей возвращают SERVFAIL.

Итог: часть пользователей могла открыть сайт, а часть — нет.


Этапы решения проблемы

1. Связался с поддержкой Beget

Я описал ситуацию в тикете:

  • Домейн был делегирован с Cloudflare обратно на Beget.
  • Начались проблемы с DNS-разрешением.
  • Причина, как выяснилось, в DS-записях, оставшихся после использования Cloudflare.
Как я решил проблему с делегированием домена и DNSSEC: реальная история с техподдержкой

Поддержка оперативно проверила настройки и подтвердила наличие «лишних» DS-записей. Ответом было: «Запись удалена». На этом этапе я выдохнул, но проблема была решена не до конца.


2. Проверка обновлений через Google и Cloudflare

После удаления DS-записей я снова запустил проверку через терминал:

dig krivoshein.site @8.8.8.8

Ответ всё ещё был SERVFAIL. Cloudflare тоже возвращал ту же ошибку. Однако через Yandex DNS сайт открывался нормально:

dig krivoshein.site @77.88.8.8

Ответ:

krivoshein.site.        2218    IN      A       90.156.253.7

3. Очистка кэша и ожидание

Я воспользовался Google DNS Flush, чтобы ускорить обновление записей. Кроме того, просто ждал, пока изменения распространения завершатся.


4. Финальная проверка

Через несколько часов всё начало работать. Вот финальный результат:

nslookup krivoshein.site 8.8.8.8

Ответ:

Name:   krivoshein.site
Address: 90.156.253.7

Google и Cloudflare больше не возвращали SERVFAIL, и домен заработал для всех пользователей.


Выводы: как избежать подобных проблем

  1. Перед сменой NS-записей отключайте DNSSEC. Если вы планируете смену NS-серверов, проверьте, активировано ли DNSSEC. Если оно включено, удалите DS-записи до перехода.
  2. Проверяйте распространение изменений. После смены NS-записей не забудьте проверить, как разные DNS-серверы видят ваш домен: dig вашдомен @8.8.8.8 dig вашдомен @1.1.1.1 dig вашдомен @77.88.8.8
  3. Используйте поддержку. Если вы не уверены в правильности настроек, не стесняйтесь обращаться в поддержку вашего регистратора или хостинга.
  4. Проверяйте конфликты DNSSEC. Для анализа зоны используйте инструменты:

Эта ситуация помогла мне разобраться в тонкостях работы DNS и DNSSEC. Надеюсь, мой опыт будет полезен и вам! Если у вас есть похожие истории — делитесь в комментариях. 😊