¿Se permite una cadena de CNAME a CNAME?

68

¿Está permitido en DNS tener un registro CNAME que apunte a otro registro CNAME?

La razón por la que necesitamos esto es porque tenemos un nombre de host que queremos que se busque en la dirección IP de la computadora de nuestro servidor web. También tenemos otra computadora servidor en espera que podría activarse en caso de que la primera muriera. En tal caso, tendríamos que apuntar rápidamente el nombre del host a la dirección IP de la computadora del servidor web.

Desafortunadamente, el nombre de host reside en un dominio DNS donde cualquier cambio tomaría mucho tiempo debido a la operación manual que depende de otros administradores de sistemas. Pero tenemos otro dominio DNS donde podemos realizar los cambios nosotros mismos rápidamente. Tener la cadena CNAME a CNAME parece una posible solución. ¿Pero está permitido? ¿Lo entenderán los navegadores web?

Erik Sjölund
fuente

Respuestas:

81

De RFC 1034 - Nombres de dominio - conceptos e instalaciones :

Los nombres de dominio en RR que apuntan a otro nombre siempre deben apuntar al nombre principal y no al alias. Esto evita indirecciones adicionales en el acceso a la información. Por ejemplo, la dirección para nombrar RR para el host anterior debe ser:

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

en lugar de apuntar a USC-ISIC.ARPA. Por supuesto, según el principio de robustez, el software de dominio no debe fallar cuando se presenta con cadenas o bucles CNAME; Las cadenas CNAME deben seguirse y los bucles CNAME deben señalarse como un error.

Entonces, sí, está permitido y el software correctamente escrito lo manejará simplemente bien. Sin embargo, las cadenas CNAME no se consideran buenas prácticas e imponen una sobrecarga a la infraestructura.

Paweł Brodacki
fuente
3
+1 para la referencia de RFC
Alnitak
16
Aunque hago esto todo el tiempo, la cita anterior está fuera de contexto. Justo encima de este párrafo se lee ..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
3
Mencionado por el tipo de red de Microsoft Azure , el encadenamiento CNAME es importante para hacer el equilibrio de carga de AnyCast para ellos.
Paul Lan
26

Claro que es posible.

Sin embargo, generalmente se desaconseja , por la razón obvia de que usa más recursos DNS. Por ejemplo:

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

Si consulta 'barra', CNAME foose consultará y luego someserver.somehost.com.se consultará, lo que dará como resultado una consulta adicional.

Para cada elemento en la cadena que agregará, se requerirá otra consulta.

Otra razón por la que esto se desaconseja es que, al crear cadenas como estas, aumentan las posibilidades de que de alguna manera cree bucles CNAME ; estos deberían ser detectados automáticamente por los servidores DNS actuales, pero seguirían imponiendo una gran carga en los servidores.

Aron Rotteveel
fuente
5

Sí, está permitido y funcionará, pero no se considera una buena práctica. Las búsquedas múltiples usan más recursos, y existe el riesgo de crear un bucle accidentalmente.

Mike Scott
fuente