Tendo vários CNAMEs

11

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?

Vishal Naidu
fonte
1
Trabalhei para a Akamai há alguns anos e um de nossos clientes relatou que um determinado roteador tinha um problema com 5 níveis de aninhamento. Eu acho que o firmware do roteador acabou sendo corrigido.
Barmar 23/08/16

Respostas:

15

Esse tipo de CNAME multinível é um design ruim em geral?

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:

dig +trace www.example.com 

ou no Windows

nslookup -debug www.example.com
HBruijn
fonte
11

O HBrujin está correto, mas, na verdade, a profundidade da recursão é muito pior do que qualquer coisa dig +tracelhe mostrará. A profundidade da recursão é algo que geralmente é menosprezado e banalizado demais, mas essas pessoas esquecem que você não está apenas resolvendo ~ 5 CNAMEregistros. Isso ocorre porque a resolução do destino de um CNAMEregistro cria uma necessidade de procurar todos os servidores de nomes no caminho, o que geralmente é muito mais do que aparente à primeira vista.

O CNAMEdestino mora em outro domínio? Você precisará recursar em seus servidores de nomes, o que exige não apenas NSpesquisas de registro, mas também A(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 CNAMEregistro 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 registros CNAME+ 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.

Andrew B
fonte
Meu software cliente fica em um monte de máquinas fazendo chamadas http remotas. Será justo tentar novamente todos os CNAMEs do cliente, reduzindo a profundidade da recursão \ load no resolvedor? Parece uma boa abordagem ou estou faltando alguma coisa? Eu sei que os CNAMEs não mudam de região para região.
Vishal Naidu
Não é uma boa abordagem. Normalmente, o servidor que falhou ao procurar os dados armazenará temporariamente a falha em cache. A consulta poderá ter êxito novamente no futuro (por exemplo, daqui a 5 minutos), mas é improvável que seja bem-sucedida em uma nova tentativa imediata. Se você fornecer o nome do seu registro DNS, posso informar se esse é realmente um problema de profundidade de recursão ou algo menos óbvio. Eu odiaria que estivéssemos descendo a toca do coelho errada.
Andrew B
0

Os níveis múltiplos CNAMEsã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.

  • TTLs 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 aplicativo

pintinhos
fonte
2
Não sei se entendi a recomendação de monitoramento. Os limites de profundidade da recursão não apenas variam de produto para produto, como você propõe monitorar eles? Você não pode identificar facilmente a causa raiz da infra-estrutura recursiva de outra pessoa.
Andrew B