У нас есть 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
s часто бывают полезны на практике. Каждый уровень перенаправления обеспечивает определенный уровень контроля в потенциально отдельной административной зоне или в совершенно другой организации. Хотя это далеко не каждый технически необходимо это может обойти организационная проблемы.
Как отмечали другие люди, это может вызвать трудности, но их можно решить:
монитор все DNS-серверы. Может, один неисправен. Контролируйте как внешние серверы, так и свои собственные. Возможно, вам потребуется сообщить о проблеме в Akamai или других поставщиков.
TTL
s должен быть установлен достаточно высоким, чтобы разрешить кеширование, но достаточно низким, чтобы вы могли достаточно быстро перемещать трафик для своего приложения