У нас есть 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 плохим дизайном в целом?
Является ли этот вид многоуровневого CNAME плохой конструкцией в целом?
Цепочки CNAME в CNAME не запрещены , но, как вы уже знаете, это не очень надежный решение.
Каждый дополнительный CNAME увеличивает глубину рекурсии для резолвера, и эта глубина не всегда неограничена. Также вы рискуете создать петли или запустить алгоритм обнаружения петель.
Чтобы получить представление о том, сколько и какие запросы нужно сделать серверу имен ваших пользователей, запустите трассировку DNS:
dig +trace www.example.com
или в Windows
nslookup -debug www.example.com
HBrujin верен , но на самом деле глубина рекурсии намного хуже, чем что-либо dig + trace
собирается вам показать. Глубина рекурсии - это то, над чем часто насмехаются и преувеличивают, но эти люди забывают, что вы не просто разрешаете ~ 5 CNAME
записей. Это связано с тем, что при разрешении цели записи CNAME
возникает необходимость искать каждый сервер имен на пути, что часто намного больше, чем кажется на первый взгляд.
Есть цель CNAME
находится в другом домене? Вам нужно будет выполнить рекурсию на его серверах имен, что потребует не только поиска записей NS
, но также поиска A (AAA)
, где клей отсутствует. Живут ли серверы имен для тех серверов имен в другом домене верхнего уровня? Если у этих TLD нет общих серверов имен, скорее всего, связующие записи не будут включены, и вам также придется рекурсивно пройти через серверы имен других TLD. И так далее.
Каждая запись CNAME
, добавляемая в цепочку, может экспоненциально увеличивать количество требуемых поисков в зависимости от количества серверов имен, через которые необходимо выполнить рекурсию. Эти цепочки поиска записей CNAME
+ NS
+ A (AAA)
, в свою очередь, могут быть безумно запутанными, достигая более 150 уровней в пустом кэше. Здесь ограничения глубины рекурсии могут стать чрезвычайно неприятными, что приведет к временным сбоям в поиске вашего домена в пустом кэше и по причинам, которые часто не сразу очевидны.
Короче говоря, вы можете это сделать, но действуйте осторожно , и серьезно относитесь к отзывам такого рода. Вы не можете контролировать, как часто рекурсивные DNS-серверы в Интернете перезапускаются или очищаются.
Многоуровневые CNAME
часто удобны на практике. Каждый уровень перенаправления обеспечивает уровень контроля в потенциально отдельной административной зоне или в совершенно другой организации. Хотя это вряд ли каждый технически необходимый, он может обойти организационные проблемы.
Как отмечали другие люди, это может вызвать трудности, но их можно решить:
монитор все DNS-серверы. Может, один неисправен. Контролируйте как внешние серверы, так и свои собственные. Возможно, вам потребуется сообщить о проблеме в Akamai или других поставщиков.
TTL
s должен быть достаточно высоким, чтобы разрешить кэширование, но достаточно низким, чтобы вы могли перемещать трафик достаточно быстро для вашего приложения