¿Puedo usar CNAME con la dirección IP? ¿Por qué si funciona (a veces)?

13

Creo que la respuesta más fácil para la primera pregunta es "No, tienes" A "para esto", pero accidentalmente configuré algún subdominio usando CNAME apuntando a la dirección IP y funcionó en algunas computadoras de mi oficina. Me pregunto cómo fue posible.

Ahora, cuando lo reviso desde casa, tengo el siguiente error:

beast:~ viroos$ host somesubdomain.somedomain.com
Host somesubdomain.somedomain.com not found: 3(NXDOMAIN)

Estoy 100% acostumbrado a trabajar en mi oficina (actualmente parece que no, pero lo estoy revisando en una máquina diferente). Por lo tanto, no estoy al 100% si funcionó debido a alguna configuración de red especial o porque lo probé justo después de agregar la entrada DNS.

Sé que esta historia suena un poco loca / increíble, pero ¿alguien puede ayudarme a resolver este rompecabezas?

// edit: estoy agregando salida de excavación

; <<>> DiG 9.6-ESV-R4-P3 <<>> somesubdomain.somedomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 60224
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;somesubdomain.somedomain.com.      IN  A

;; ANSWER SECTION:
somesubdomain.somedomain.com.   67  IN  CNAME   xxx.xxx.xxx.xx1.

;; AUTHORITY SECTION:
.           1800    IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2012040901 1800 900 604800 86400

;; Query time: 72 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Apr 10 00:11:01 2012
;; MSG SIZE  rcvd: 136
Maciek Sawicki
fuente
2
¿Estás seguro de que no fue otra cosa lo que hizo funcionar las máquinas de oficina? Entradas en caché? ¿Servidor autorizado para ese dominio en la red local que anula la resolución pública? Hosts archivos?
Shane Madden
Para ser precisos, funcionó en dos máquinas, ambas son OSX. No funcionó en la máquina Ubuntu. Como estaba trabajando en dos máquinas, ignoré el problema "ubuntu" (eso fue un error) ya que creía que era un problema de propagación dns o dns cache. Solo verifiqué la configuración de DNS en cada cliente y fue lo mismo (esto dejó cierta incertidumbre con respecto a la teoría de propagación de DNS). Una de esas máquinas es mi MacBook y actualmente la estoy usando desde casa y el sitio web que configuré ya no funciona correctamente: "No se puede encontrar el servidor en somesubdomain.somedomain.com porque el DNS búsqueda fallida ".
Maciek Sawicki
¿Qué se devuelve cuando consulta el nombre usando dig?
Shane Madden
Agregué la salida de excavación, a la pregunta.
Maciek Sawicki
Sospecho firmemente que las computadoras OSX están usando algo diferente al DNS para hacer la búsqueda, como mDNS (que no es lo mismo en absoluto).
Chris S

Respuestas:

16

Los datos en un CNAMEregistro siempre deben ser otro nombre de DNS, ese es el objetivo de a CNAME.

Como se describe de manera sucinta en RFC 1034, los datos en a CNAMEdeberían ser:

            CNAME           a domain name.

Si bien, si está buscando apuntar a una dirección IP, su ticket es:

            A               For the IN class, a 32 bit IP address

CNAMEestá diseñado e implementado para ser un alias de DNS; no tiene idea de tener una dirección IP en ese campo de datos. Como tal, se interpreta como un alias a otro nombre DNS, según lo diseñado; después de todo, una dirección IP se ajusta a la sintaxis de un nombre DNS.

Entonces, por ejemplo, digamos que sus datos DNS son:

somesubdomain.somedomain.com.   60  IN  CNAME   192.0.2.1.

El servidor DNS recursivo que está consultando ve que el registro es un CNAME, y calcula que querrá los datos reales que contiene. No CNAMEse ha encontrado ningún otro registro que no sea el , por lo que no hay respuesta para darle al cliente.

Intenta consultar un registro para un nombre de host 192, dentro del dominio 0.2.1. No tiene nada en caché para ese nombre, por lo que pregunta a los servidores raíz. Sirven solicitudes de TLD como .comy .net, pero esta solicitud es una solicitud .1. Responden de inmediato que no existe, y eso es lo que el recurrente le envía.

La respuesta que está viendo diges que su servidor de nombres recursivo dice: "bueno, el nombre que buscaba apuntaba a otro lado, y ese lugar no existía; pregúntele al servidor raíz si no me cree".


Entonces, sí, poner una dirección IP en un CNAMEregistro nunca es válido, y sospecho que los sistemas que funcionan funcionan correctamente a través de algún otro mecanismo, como un archivo de hosts o una resolución de nombre local: investigue su comportamiento de resolución de nombre.

Shane Madden
fuente
2

cname es un nombre canónico, que es solo un alias de otro nombre, que generalmente es el registro A u otro cname, etc. Si configura cname para que apunte a una IP, entonces es solo un alias de esa IP. No creo que su servidor DNS verifique si el objetivo es legítimo o no, porque el RFC estándar realmente no dice cuál es el formato / validación de datos para el objetivo de cname. Este no es un uso habitual, pero si está funcionando para usted, entonces está funcionando. Creo que el hecho de que no funcione a veces debería ser suficiente para usar lo que se usa convencionalmente.

johnshen64
fuente
0

Tu puedes tener:

example IN CNAME 1.2.3.4.

donde 1.2.3.4 es una dirección IP que funciona. Sin embargo, observe el punto final en el CNAME. El hecho de que algunas máquinas en su oficina funcionen con esto, mientras que otras no me hacen creer que las que tienen el subdominio establecido en el archivo lmhostso /etc/hosts.

adamo
fuente
1
Si bien son datos válidos para un CNAME, estoy bastante seguro de que eso no provocará una búsqueda adicional ... excepto en los servidores raíz, para un TLD inexistente llamado 4?
Shane Madden
Se realizará una búsqueda adicional con CUALQUIER (por ejemplo host -a) consulta.
adamo
@ShaneMadden Por cierto, tu comentario me recordó a los TLD locales
adamo