Наличие нескольких CNAME


11

У нас есть DNS-домен с 5 уровнями CNAME по историческим причинам. Некоторые вещи были переданы на аутсорсинг для высокой доступности и т. Д., Но это не главное. У меня вопрос, есть ли у 5 CNAME избыточное разрешение для DNS-преобразователя? Я не смог найти ни одного известного веб-сайта с более чем 2-3 уровнями вложенных CNAME, указывающих на разные домены DNS.

Наши прыжки CNAME выглядят следующим образом: (я использую xyz только в качестве примера)

www.xyz.com -> xyz.akadns.net -> xyz.worldwide.akadns.net -> xyz.cedexis.net -> xyz.msedge.net -> host1.msedge.net (финальная запись A \ AAAA)

Я вижу, как многие клиенты жалуются на проблемы с разрешением DNS на нашем сайте, когда другие сайты работают для них нормально, хотя когда я использую http://check-host.net/check-dns?host=www.xyz.com для тестирования нашего DNS разрешающая способность.

Кажется, во всем мире все работает нормально. Мой вывод заключается в том, что DNS-провайдер локальных интернет-провайдеров облажается, когда не удается разрешить один из указанных выше переходов. nslookup не работает на этих клиентских компьютерах только для нашего веб-сайта, и это слишком спорадически.

Является ли этот вид многоуровневого CNAME плохим дизайном в целом?


1
Я работал на Akamai несколько лет назад, и один из наших клиентов сообщил, что у определенного маршрутизатора была проблема с 5 уровнями вложенности. Я думаю, что прошивка маршрутизатора была в конечном итоге исправлена.
Бармар

Ответы:


15

Является ли этот вид многоуровневого CNAME плохим дизайном в целом?

Цепочки CNAME to CNAME не запрещены, но, как вы уже знаете, это не очень надежное решение.

Каждый дополнительный CNAME увеличивает глубину рекурсии для резольвера, и эта глубина не всегда неограничена. Также вы рискуете создать петли или запустить алгоритм обнаружения петель.

Чтобы получить представление о том, сколько и какие запросы должен выполнить ваш сервер имен пользователей, выполните трассировку DNS:

dig +trace www.example.com 

или в Windows

nslookup -debug www.example.com

11

Бруджин прав, но на самом деле глубина рекурсии намного хуже, чем что-либо, что dig +traceвам покажет. Глубина рекурсии - это то, над чем часто насмехаются и слишком упрощают, но эти люди забывают, что вы не просто решаете ~ 5 CNAMEзаписей. Это связано с тем, что при разрешении цели CNAMEзаписи возникает необходимость поиска каждого сервера имен в пути, что зачастую намного больше, чем кажется на первый взгляд.

Живет ли CNAMEцель в другом домене? Вам нужно будет вернуться к его серверам имен, что требует не только NSпоиска записей, но и A(AAA)поиска, где нет клея. Находятся ли серверы имен для этих серверов имен в другом домене верхнего уровня? Если эти ДВУ не разделяют серверы имен, скорее всего, склеенные записи не будут включены, и вам также придется проходить через другие серверы имен ДВУ. И так далее.

Каждая CNAMEзапись, добавленная в цепочку, может экспоненциально увеличивать количество запросов на поиск в зависимости от количества серверов имен, которые необходимо рекурсивно просматривать. Эти цепочки поиска CNAME+ NS+ A(AAA)записей могут, в свою очередь, запутаться до безумия, достигнув более 150 уровней в кэш-памяти emtpy. Вот где пределы глубины рекурсии могут быть очень неприятными, что приводит к временным сбоям при поиске вашего домена в пустом кеше, и по причинам, которые часто не сразу очевидны.

Короче говоря, вы можете сделать это, но действуйте осторожно и серьезно относитесь к подобным отзывам. Вы не можете контролировать частоту перезапуска или очистки рекурсивных DNS-серверов в Интернете.


Мое клиентское программное обеспечение находится на множестве машин, выполняющих удаленные http-вызовы. Будет ли справедливым повторять все CNAME с клиента, уменьшая глубину рекурсии \ нагрузку на распознаватель? Это звучит хорошо или я что-то упустил? Я знаю, что CNAME не будут меняться в разных регионах.
Вишал Найду

Не очень хороший подход. Обычно сервер, который не смог найти данные, собирается временно кэшировать сбой. Запрос может быть выполнен снова в будущем (скажем, через 5 минут), но вряд ли он будет выполнен сразу же после повторной попытки. Если вы предоставите имя своей записи DNS, я могу сообщить вам, действительно ли это проблема глубины рекурсии или что-то менее очевидное. Я бы не хотел, чтобы мы спускались не по той кроличьей норе.
Андрей Б

0

Многоуровневые CNAMEs часто удобны на практике. Каждый уровень перенаправления обеспечивает уровень контроля в потенциально отдельной административной зоне или в совершенно другой организации. Хотя это вряд ли является технически необходимым, оно может обойти организационные проблемы.

Как отметили другие люди, это может вызвать трудности, но к ним можно обратиться:

  • контролировать все DNS-серверы. Может быть, кто-то работает со сбоями. Мониторинг внешних серверов, а также свои собственные. Вам может потребоваться сообщить о проблеме Akamai или другим поставщикам.

  • TTLЗначения должны быть достаточно высокими, чтобы разрешить кэширование, но достаточно низкими, чтобы можно было достаточно быстро перемещать трафик для вашего приложения.


2
Я не уверен, что понимаю рекомендацию по мониторингу. Мало того, что пределы глубины рекурсии варьируются от продукта к продукту, как вы предлагаете отслеживать их? Вы не можете легко определить первопричину чьей-либо рекурсивной инфраструктуры.
Эндрю Б
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.