Что не так с DNS от Яндекса?
Можно пропустить и сразу перейти к Анализу DNS топ-сайтов в зоне .RU
Так исторически сложилось, что с момента открытия Яндексом в 2010 году своего DNS-хостинга, сотни наших проектов размещались там. Тогда это была «Почта для домена», в 2017 это стал «Яндекс.Коннект», а уже сейчас в личном кабинете красуется надпись, что панель «Коннекта» будет закрыта и теперь это «Яндекс 360 для бизнеса»
Тогда выбор определили следующие доводы:
Бесплатная почта для домена, бесплатный DNS для доменов от любого регистратора, «Метрика» и« Вебмастер» – все в одном аккаунте.
Возможность выставить TTL в 90 секунд, что не раз спасало, когда нужно было быстро изменить А-запись.
«Ну это же Яндекс, он-то не упадет!»
Проблемы начались в последние несколько лет. Главное даже не сам факт наличия проблем, а как в Яндексе на них реагировали. На днях снова произошла следующая история.
Примерно с 21:15 16.02.22 мониторинг начал фиксировать «невозможность разрешить удаленное имя» по сайтам, которые использовали DNS-сервера: dns1.yandex.net, dns2.yandex.net. Начали сыпаться ошибки вида cURL error 6: Could not resolve host
, ответы от DNS чередовали статусы REFUSED
, SERVFAIL
и NOERROR
, а клиенты – начали писать нам в поддержку.
Решил и я написать в техподдержку Яндекса, там меня встретил позитивный чат-бот, который сообщил, что с людьми позволено разговаривать только обладателям платного Яндекс 360. Ладно, думаю, информации о проблеме в публичных источниках найти не могу – надо ведь достучаться! Вдруг они и не знают о проблеме, а я первым им сообщу – быстрее устранят. Сказано – сделано: покупаю подписку на «Яндекс 360 для бизнеса». Открываю чат, а там меня ждёт уже другой бот, сообщающий, что в платной поддержке по будням люди работают с 09:00 до 18:00. Яндекс, ну вы же используете Slack? Поставьте Telebot, дайте пользователям писать в Telegram и оперативно получать ответы? Вон Beget ответил ночью в Telegram за 9 минут, в ITSOFT – 2 минуты, от вас ответ в чат мне так и не пришёл.
Написал в чат, написал на почту, приложил логи, скриншоты, пояснил, что проблема наблюдается абсолютно на всех, доступных мне, доменах, делегированных Яндексу.
В 09:37 17.02.22 пришло письмо с просьбой отправить результат mtr и telnet до mx.yandex.ru:
… отправил 🤷♂️. И всё, больше добавить нечего: DNS продолжил огорчать клиентов и восстановился примерно лишь к 21:00 17.02.22, Яндекс всё молчит, а последний ответ на мой запрос выглядит так:
Подобные ситуации наблюдались и ранее, из последнего: 2022.02.13 ~15:00-22:00. Хорошо запомнилось 2018.10.31 ~19:40-00:40, когда сайты нельзя было зарезолвить даже из подмосковных Химок, а их владельцы спешно меняли DNS.
Всё это побудило меня оглядеться и задаться вопросом: что изменилось за последние годы и какой DNS-хостинг используют наиболее посещаемые сайты. Тем более, самое свежее, что нашел на Хабре на эту тему: Список бесплатных DNS-сервисов – датирован 2013 годом.
Какой DNS-хостинг у топ-сайтов в зоне .RU?
Берём список наиболее посещаемых сайтов из Alexa (кстати, 2022.05.01 она «все»): этот от 2016 года мог немного устареть (альтернативы: 1, 2), но под нашу задачу, с учётом миллиона записей – достаточно. В списке нашлось 45457 сайтов в зоне .ru.
Пишем магический однострочник:
wget -q -O - https://raw.githubusercontent.com/zer0h/top-1000000-domains/master/top-1000000-domains | grep "^.*\.ru$" | xargs dig SOA +noall +answer +short | cut -d " " -f1 | cut -d "." -f2- | sort | uniq -c | sort -nr > ns_top1m.txt
– и отправляемся курить.
Если немного причесать результаты, то соотношение среди топ-20 списка будет выглядеть так:
Исходные данные результатов можно посмотреть на GitHub.
А если сравнить с распределением среди топ-100к и топ-10к Alexa (3600 и 300 сайтов в зоне .ru соответственно)?
Три сегмента на одном графике:
Интересные наблюдения:
Хостинг от Яндекса всё ещё используется существенной частью сайтов.
На фоне Cloudflare, регистраторов и хостинг-провайдеров открытием стала популярность cloudns.net.
Доля nic.ru и cloudns.net среди наиболее посещаемых сайтов выше, чем на других отрезках (см. таблицу).
Cloudflare.com и selectel.ru наиболее популярны среди топ-3600.
Среди топ-300 часто используется nic.ru как Secondary.
Сравнение DNS-сервисов и выбор
Какими допущениями я руководствовался:
В эпоху «суверенного чебурнета» хочется иметь Primary DNS в РФ. Вдруг опять забанят Cloudflare?
Самостоятельно поднимать, администрировать и защищать DNS-сервер не хочется. Но и от возможностей сервиса ожидается большее, чем указать IP для A-записи.
DNS-хостинг может (должен?) быть платный. Если ты не платишь за услугу, то либо она некачественная, либо ты переплатил в другом месте.
Основная аудитория сайта находится в РФ. Но идеально – иметь возможность трансфера зоны, используя альтернативный (зарубежный?) Secondary.
Возможность выставить минимальный TTL.
Хорошо, если публичный «track record» без глобальных падений за последние 5 лет.
Если DNS ляжет – импакт должен быть на существенную долю сайтов рунета. Бизнесу не так обидно, когда о падении пишут на всех новостных ресурсах.
Исходя из этих вводных я протестировал шорт-лист из 13 популярных сервисов и собрал в сравнительную таблицу со следующими критериями: наличие бесплатного тарифа, наличие и стоимость платного тарифа, возможность трансфера зоны и использования как Secondary, минимальный TTL, возможность импорта и экспорта зоны, наличие API, наличие защиты от DDoS и использование Anycast, наличие поддержки и дата последнего падения.
Что хотелось отметить отдельно:
В прошлом году у Яндекса появился платный Cloud DNS в составе «Яндекс.Облако». Но его нет в выборке выше, как и, например, DNS-хостинга от Mail.ru (ой, простите, VK?), в силу низкой распространенности. Но и он падает: 1, 2, 3.
Выбрав nic.ru, можно быть уверенным, что если упадет ваш DNS – упадет и большая часть рунета. А исходя из допущений про «импортозамещение» выше: альтернатива Яндексу – лишь nic.ru и reg.ru, которые (вместе с r01.ru и spaceweb.ru) теперь есть одно и то же. Однако, обе компании вызывают бурю негативных эмоций: nic.ru взвинтил цены, разогнал партнеров, навязывает услуги (я сам до сих пор не на всех доменах смог отключить всяких Персональных менеджеров и прочее мракобесие, которое они включили по умолчанию). Reg.ru оскандалился с Beget и продает «Премиум» DNS, который не отличается от бесплатного, о чем хорошо говорит заголовок на searchengines. При этом «премиум» не предоставляет возможность указать дополнительные сторонние Secondary: либо сервера reg.ru, либо чужие. В общем, если в сравнительную таблицу добавить колонку с модным нынче словом «токсичность», то и выбирать-то будет не из кого.
Зарегистрировавшись в Timeweb, я просто не смог добавить свой двухсимвольный домен :(
Beget прямо давит на тебя блокировкой с главной страницы своей панели управления. Надеюсь, DNS-то не заблокируют, если вовремя не оплатишь хостинг?
Выводы
Все данные и исходники выложены, чтобы каждый мог добавить свои критерии или методологию и выбрать сам. Для себя же я сделал следующий вывод с учётом вводных выше:
Бесплатно лучше размещаться вместе с доменом на reg.ru.
Платно – Primary на nic.ru с Secondary на cloudns.net.
Disclaimer: статья родилась из необходимости решить задачу выбора для себя и получить обратную связь от сообщества, в ней нет реферальных ссылок на сайты DNS-провайдеров, а упомянутые в тексте её не спонсировали.
Обновлено 2022.02.21: недоступность сервисов Яндекс с ~ 9:00 до 11:00.
Обновлено 2022.02.22: спустя 5 дней на повторный запрос деталей по инциденту Яндекс ответил, что «уже все работает, но почему и как долго не работало — не скажем»
Обновлено 2022.03.14: недоступность DNS Яндекса в промежутках 15:20 – 15:40, 19:50 – 20:21, 22:05 – 22:28.
Обновлено 2022.03.16: частичная деградация DNS Яндекса с 19:35 до 20:30.