CNAME
El RR CNAME (Canonical Name, RFC 1035) se utiliza para asignar un alias a un nombre que ya exista, tanto interno como externo al dominio. Su sintaxis es la siguiente:
nombre-alias ttl-RR IN CNAME nombre-real
El ejemplo más habitual del RR CNAME es el siguiente:
$ORIGIN fp.com.
prof IN A 192.168.1.12
www IN CNAME prof
ftp IN CNAME prof
No se aconseja que el campo nombre-real sea a su vez un alias, pues enlentece el proceso de búsqueda de la IP y además puede llevarnos al error de crear un bucle, donde se crea un alias a otro alias, y este último, a su vez, hace referencia al primero.
Un ejemplo de la mala práctica explicada en el párrafo anterior es el siguiente:
$ORIGIN fp.com.
prof IN A 192.168.1.12
www IN CNAME ftp
ftp IN CNAME prof
donde la respuesta a la consulta de www.fp.com implicaría resolver primero ftp.fp.com, y luego todavía habría que resolver prof.fp.com. Este sobrecarga en el proceso de resolución no tiene importancia con ficheros de zona pequeños, pero con ficheros más grandes puede tener su impacto negativo en el rendimiento.
Por otro lado, los servidores de los RR NS y MX no deberían ser alias, sino referencias a registros A o AAAA, aunque según el tipo de software DNS podría funcionar. Por lo tanto, no se aconseja una escritura como la siguiente:
IN MX mail
mail IN CNAME www
www IN A 192.168.1.1
es mejor hacerlo así:
IN MX mail
mail IN A 192.168.1.1
www IN CNAME mail
Se puede pensar en la siguiente regla: si un nombre aparece en la parte derecha de un RR no debería aparecer en la parte izquierda de un RR CNAME.
Otra consecuencia a tener en cuenta con el uso de los RR CNAME, es que las consultas de un alias, por ejemplo ftp.fp.com, llevan acarreada una respuesta compuesta por el registro CNAME y todos aquellos involucrados indirectamente para resolver el alias, por lo que se podrían superar los 512 bytes máximo que permiten los paquetes UDP en los que viaja el protocolo DNS.
El RR CNAME puede sustituirse por el uso del RR A o AAAA, pero hay una situación en la que es obligatorio su uso, y es cuando queremos crear una referencia a un nombre externo al dominio con un nombre interno. Ya se puso un ejemplo de esta situación en el fichero de zona que se utilizó en la explicación general; consistía en crear el nombre interno ftp.asir.com como referencia al servidor FTP externo de nombre ftp.asir.net:
...
$ORIGIN asir.com.
...
ftp IN CNAME ftp.asir.net. ; Para hacer esta referencia externa es obligatorio el uso de CNAME
...
Otro uso de CNAME es cuando tenemos un servicio instalado y queremos que se acceda a él tanto con el nombre del servidor como con el nombre del dominio. Por ejemplo, la situación más habitual es la siguiente, tenemos un servidor web en la máquina www.fp.com y queremos que se acceda también usando solo el nombre del dominio, es decir, poniendo solamente en la url del navegador fp.com; las siguientes líneas implementan el ejemplo y además se ha supuesto que el sitio web lo tenemos en tres equipos distintos con el objetivo de balancear la carga gracias al DNS:
...
$ORIGIN fp.com.
...
@ IN A 192.168.1.50
IN A 192.168.1.51
IN A 192.168.1.52
www IN CNAME fp.com.
...
Evidentemente, también se puede hacer lo mismo solo con RR A:
...
$ORIGIN fp.com.
...
@ IN A 192.168.1.50
IN A 192.168.1.51
IN A 192.168.1.52
www IN A 192.168.1.50
IN A 192.168.1.51
IN A 192.168.1.52
...
Licencia: licencia de software libre GPL