Posso usar CNAME com endereço IP? Por que se funciona (às vezes)?

13

Acredito que a resposta mais fácil para a primeira pergunta é "Não, você tem" A "para isso", mas acidentalmente configurei algum subdomínio usando CNAME apontando para o endereço IP e funcionou em alguns computadores no meu escritório. Eu me pergunto como isso foi possível?

Agora, quando estou verificando em casa, tenho o seguinte erro:

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

Eu sou 100% do que costumava trabalhar no meu escritório (atualmente parece que não funciona, mas estou verificando em outra máquina). Portanto, não estou 100% se funcionou devido a alguma configuração de rede especial ou porque o testei logo após adicionar a entrada DNS.

Eu sei que essa história parece um pouco louca / incrivelmente, mas alguém pode me ajudar a resolver esse quebra-cabeça.

// edit: estou adicionando saída dig

; <<>> 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
fonte
2
Tem certeza de que não foi outra coisa que fez as máquinas de escritório funcionarem? Entradas em cache? Servidor autoritário para esse domínio na rede local substituindo a resolução pública? Hospeda arquivos?
Shane Madden
Para ser mais preciso, funcionou em duas máquinas, ambas são OSX. Não funcionou na máquina Ubuntu. Como estava funcionando em duas máquinas, ignorei o problema "o ubuntu" (que foi um erro), pois acreditava que era um problema de propagação de DNS ou cache de DNS. Eu verifiquei apenas a configuração do DNS em cada cliente e foi o mesmo (isso deixou alguma incerteza em relação à teoria de propagação do DNS). Uma dessas máquinas é o meu MacBook e, atualmente, estou usando-o em casa e o site que eu configuro não funciona mais corretamente: "O servidor em somesubdomain.somedomain.com não pode ser encontrado, porque o DNS pesquisa falhou. "
Maciek Sawicki
O que é retornado quando você consulta o nome usando dig?
Shane Madden
Eu adicionei dig output, para questionar.
Maciek Sawicki
Eu suspeito fortemente que os computadores OSX estejam usando algo diferente do DNS para fazer a pesquisa, como o mDNS (que não é a mesma coisa).
Chris S

Respostas:

16

Os dados em um CNAMEregistro sempre devem ter outro nome DNS - esse é o objetivo de a CNAME.

Como dito sucintamente pela RFC 1034, os dados em a CNAMEdevem ser:

            CNAME           a domain name.

Enquanto isso, se você deseja apontar para um endereço IP, seu ticket é:

            A               For the IN class, a 32 bit IP address

CNAMEfoi projetado e implementado para ser um alias de DNS; não tem a concepção de ter um endereço IP nesse campo de dados. Como tal, é interpretado como um alias para outro nome DNS, conforme projetado; afinal, um endereço IP se ajusta à sintaxe de um nome DNS.

Então, por exemplo, digamos que seus dados de DNS sejam:

somesubdomain.somedomain.com.   60  IN  CNAME   192.0.2.1.

O servidor DNS recursivo que você está consultando vê que o registro é a CNAMEe calcula que você deseja os dados reais que ele contém. Nenhum registro diferente do CNAMEencontrado foi encontrado; portanto, não há resposta a ser dada ao cliente.

Ele tenta consultar um registro para obter um nome de host 192, dentro do domínio 0.2.1. Ele não possui nada armazenado em cache para esse nome, por isso solicita aos servidores raiz. Eles atendem a pedidos de TLDs como .come .net, mas esse é um pedido .1. Eles prontamente respondem que não existe, e é isso que o recursor envia a você.

A resposta que você vê digé o seu servidor de nomes recursivo dizendo: "bem, o nome que você procurou apontou para outro lugar e que não existia - pergunte ao servidor raiz se você não acredita em mim".


Portanto, sim, CNAMEnunca é válido inserir um endereço IP em um registro, e suspeito que os sistemas que estão funcionando estejam funcionando corretamente através de algum outro mecanismo, como um arquivo host ou resolução de nomes local - investigem o comportamento da resolução de nomes.

Shane Madden
fonte
2

cname é um nome canônico, que é apenas um alias de outro nome, que geralmente é o registro A ou outro cname, etc. Se você configurar o cname para apontar para um IP, será apenas um alias desse IP. Eu não acho que seu servidor DNS verifique se o destino é legítimo ou não, porque o RFC padrão não diz realmente qual é o formato / validação de dados para o destino de cname. Esse não é um uso usual, mas se estiver funcionando para você, está funcionando. O fato de que às vezes não está funcionando deve ser suficiente para você usar o que é convencionalmente usado, eu acho.

johnshen64
fonte
0

Você pode ter:

example IN CNAME 1.2.3.4.

onde 1.2.3.4 é um endereço IP de trabalho. Observe o ponto final no CNAME. O fato de algumas máquinas em seu escritório funcionarem com isso, enquanto outras não me levam a acreditar que aquelas que possuem o subdomínio definido no arquivo lmhostsou /etc/hosts.

adamo
fonte
1
Embora sejam dados válidos para um CNAME, tenho certeza de que isso não provocará uma pesquisa adicional .. exceto nos servidores raiz, para um TLD inexistente chamado 4?
Shane Madden
Uma pesquisa adicional será realizada com uma host -aconsulta QUALQUER (por exemplo ).
Adamo
@ShaneMadden BTW, seu comentário me lembrou os TLDs locais
adamo