Temos nosso domínio DNS com CNAMEs de 5 níveis por razões históricas. Algumas coisas foram terceirizadas para alta disponibilidade, etc., mas esse não é o ponto aqui. Minha pergunta é ter 5 CNAMEs um exagero para o resolvedor de DNS? Não consegui encontrar nenhum site famoso com mais de 2-3 níveis de CNAMEs aninhados apontando para domínios DNS diferentes.
Nossos saltos CNAME têm a seguinte aparência: (estou usando xyz apenas como exemplo)
www.xyz.com -> xyz.akadns.net -> xyz.worldwide.akadns.net -> xyz.cedexis.net -> xyz.msedge.net -> host1.msedge.net (registro A \ AAAA final)
Estou vendo muitos clientes reclamando sobre problemas de resolução de DNS em nosso site quando outros sites funcionam bem para eles, embora quando eu uso http://check-host.net/check-dns?host=www.xyz.com para testar nosso DNS resolução.
Parece sempre funcionando bem em todo o mundo. Minha conclusão é que, principalmente, o resolvedor de DNS dos provedores de provedores de serviços de Internet locais estraga tudo quando um dos saltos acima não consegue resolver. O nslookup falha nesses computadores clientes apenas no nosso site e isso é esporadicamente.
Esse tipo de CNAME multinível é um design ruim em geral?
fonte
Respostas:
As cadeias CNAME para CNAME não são proibidas, mas como você já experimenta, não é uma solução muito robusta.
Cada CNAME adicional aumenta a profundidade da recursão para o resolvedor, e essa profundidade nem sempre é ilimitada. Além disso, você corre o risco de criar loops ou acionar o algoritmo de detecção de loop.
Para ter uma impressão de quantas e quais consultas o servidor de nomes de usuários precisa fazer, execute um rastreamento DNS:
ou no Windows
fonte
O HBrujin está correto, mas, na verdade, a profundidade da recursão é muito pior do que qualquer coisa
dig +trace
lhe mostrará. A profundidade da recursão é algo que geralmente é menosprezado e banalizado demais, mas essas pessoas esquecem que você não está apenas resolvendo ~ 5CNAME
registros. Isso ocorre porque a resolução do destino de umCNAME
registro cria uma necessidade de procurar todos os servidores de nomes no caminho, o que geralmente é muito mais do que aparente à primeira vista.O
CNAME
destino mora em outro domínio? Você precisará recursar em seus servidores de nomes, o que exige não apenasNS
pesquisas de registro, mas tambémA(AAA)
pesquisas onde a cola não está presente. Os servidores de nomes para esses servidores de nomes vivem em um domínio de nível superior diferente? Se esses TLDs não compartilharem servidores de nomes, é provável que os registros de cola não sejam incluídos e você também precisará recorrer pelos servidores de nomes dos outros TLDs. E assim por diante.Cada
CNAME
registro adicionado à cadeia pode aumentar exponencialmente o número de pesquisas necessárias, dependendo do número de servidores de nomes que precisam ser recorridos. Essas cadeias de pesquisas de registrosCNAME
+NS
+A(AAA)
podem, por sua vez, ficar incrivelmente complicadas, atingindo mais de 150 níveis de profundidade em um cache vazio. É aqui que os limites de profundidade da recursão podem ser extremamente desagradáveis, resultando em falhas temporárias na pesquisa de seu domínio em um cache vazio e por razões que geralmente não são aparentes imediatamente.Em resumo, você pode fazer isso, mas continue com cuidado e leve a sério esse feedback dessa natureza. Você não tem controle sobre a frequência com que os servidores DNS recursivos na Internet são reiniciados ou eliminados.
fonte
Os níveis múltiplos
CNAME
são frequentemente úteis na prática. Cada nível de redirecionamento fornece um nível de controle em uma zona administrativa potencialmente distinta ou em uma organização totalmente diferente. Embora isso quase não seja tecnicamente necessário, ele pode solucionar problemas organizacionais .Como outras pessoas observaram, isso pode causar dificuldades, mas elas podem ser abordadas:
monitorar todos os servidores DNS. Talvez um esteja com defeito. Monitore servidores externos e também os seus. Pode ser necessário relatar um problema à Akamai ou a outros fornecedores.
TTL
s devem ser altos o suficiente para permitir armazenamento em cache, mas baixos o suficiente para que você possa mudar o tráfego com rapidez suficiente para o seu aplicativofonte