É permitida uma cadeia CNAME para CNAME?

68

É permitido no DNS ter um registro CNAME que aponte para outro registro CNAME?

A razão pela qual precisamos disso é que temos um nome de host que queremos procurar no endereço IP do computador do servidor da web. Também temos outro servidor da Web em espera que pode ser ativado caso o primeiro morra. Nesse caso, precisaríamos rapidamente apontar o nome do host para o endereço IP do computador do servidor da Web em espera.

Infelizmente, o nome do host reside em um domínio DNS em que qualquer alteração levaria muito tempo devido à operação manual dependente de outros administradores de sistema. Mas temos outro domínio DNS onde podemos realizar as alterações rapidamente. Ter CNAME em cadeia CNAME parece ser uma solução possível. Mas isso é permitido? Os navegadores da Web entenderão isso?

Erik Sjölund
fonte

Respostas:

81

Do RFC 1034 - Nomes de domínio - conceitos e facilidades :

Os nomes de domínio nos RRs que apontam para outro nome sempre devem apontar para o nome principal e não o alias. Isso evita indiretos extras no acesso a informações. Por exemplo, o endereço para nomear RR para o host acima deve ser:

52.0.0.10.IN-ADDR.ARPA  IN      PTR     C.ISI.EDU

em vez de apontar para USC-ISIC.ARPA. Obviamente, pelo princípio da robustez, o software de domínio não deve falhar quando apresentado com cadeias ou loops CNAME; As cadeias CNAME devem ser seguidas e os loops CNAME sinalizados como um erro.

Então, sim, é permitido e o software escrito corretamente irá lidar com isso apenas OK. As cadeias CNAME não são consideradas boas práticas e impõem uma sobrecarga na infraestrutura.

Paweł Brodacki
fonte
3
+1 para a referência RFC
Alnitak
16
Embora eu faça isso o tempo todo, a citação acima está fora de contexto. Logo acima deste parágrafo, ele lê ..Domain names in RRs which point at another name should always point at the primary name and not the alias. This avoids extra indirections in accessing information.
Molomby 30/04
3
Mencionado pelo cara de rede do Microsoft Azure , o encadeamento CNAME é importante para fazer o balanceamento de carga do AnyCast para eles.
Paul Lan
26

Claro, é possível.

No entanto, geralmente é desencorajado , pelo motivo óbvio de que ele usa mais recursos de DNS. Por exemplo:

foo   IN      CNAME  someserver.somehost.com.
bar   IN      CNAME  foo

A consulta à "barra" resultaria na fooconsulta de CNAME e , em seguida someserver.somehost.com., na consulta, resultando em uma consulta extra.

Para cada elemento da cadeia que você adicionar, será necessária outra consulta.

Outro motivo pelo qual isso é desencorajado é que, ao criar cadeias como essas, as chances de você de alguma forma criar loops CNAME são aumentadas; estes devem ser detectados automaticamente pelos servidores DNS atuais, mas ainda assim imporão uma grande carga nos servidores.

Aron Rotteveel
fonte
5

Sim, é permitido e funcionará, mas não é considerado uma boa prática. As várias pesquisas usam mais recursos e existe o risco de criar um loop acidentalmente.

Mike Scott
fonte