Módulo 3 · 3.2
CNAME e o domínio raiz
Módulo 3: Registos para o seu website · Tempo de leitura: 8 minutos
Objetivo de aprendizagem: Depois desta lição, saberá criar corretamente um registo CNAME e explicar por que não pode ser usado no domínio raiz.
Conceitos-chave: CNAME, alias, nome de destino, a regra do CNAME (nenhum outro registo ao lado), apex (domínio raiz), ALIAS/ANAME/CNAME flattening
Um nome que aponta para outro nome
Um registo A diz: "este nome vive neste endereço". Um registo CNAME (de canonical name) diz algo diferente: "este nome é na verdade outro nome, pergunte aí". Com ele cria um alias.
shop.example.com. 3600 IN CNAME shops.platform.example.Se um browser pedir o endereço de shop.example.com, o DNS responde: "isso é shops.platform.example". O resolver procura então o registo A ou AAAA desse nome e devolve esse endereço. Para o visitante não há diferença alguma: a barra de endereço mostra simplesmente shop.example.com.
Porque é que isto é útil? Porque o endereço IP passa a ser problema de outra entidade. Uma plataforma de loja online, um serviço de newsletter ou um fornecedor de cloud pode mudar os seus servidores e alterar os endereços sem que você tenha de alterar nada. Por isso muitos serviços pedem um CNAME em vez de um registo A: "faça o www apontar para shops.platform.example".
O ponto final
Na lição 2.2 viu que um nome sem ponto final é lido como relativo: o DNS acrescenta o seu próprio domínio a seguir. Num CNAME isso corre mal com muita frequência.
| O que escreve no valor | O que o DNS faz com isso |
|---|---|
shops.platform.example. | shops.platform.example (correto) |
shops.platform.example | shops.platform.example.example.com (não existe) |
Muitos painéis acrescentam atualmente o ponto automaticamente ou avisam o utilizador. Outros não. Por isso, depois de guardar, verifique na lista: se vir o seu próprio domínio a seguir ao valor, faltava o ponto.
A mesma regra aplica-se ao servidor de correio num registo MX e aos registos NS. Num endereço IP, num registo A, não se coloca ponto.
A regra do CNAME: nada ao lado
Um CNAME tem uma regra rígida na norma do DNS (RFC 1034, secção 3.6.2, e RFC 2181): um nome com um CNAME não pode ter outros registos. É lógico: o CNAME diz "eu sou na verdade esse outro nome". Se ainda existir também um registo A ou um registo MX, não fica claro qual é a resposta válida.
Disto resultam duas coisas que encontrará na prática:
- Se já existir um registo A para
shop, remova-o primeiro. Caso contrário, um painel recusa o registo CNAME ou, pior, aceita-o e o DNS passa a comportar-se de forma estranha. - Um CNAME no domínio raiz não é possível.
Porque não no domínio raiz?
O domínio raiz, example.com sem nada à frente, chama-se em terminologia técnica o apex ou o topo da zona. Nesse nome estão sempre registos que têm de existir:
- o registo SOA (o cabeçalho técnico da zona),
- os registos NS (quais os servidores de nomes que gerem a zona),
- normalmente também registos MX (correio) e registos TXT (SPF, verificação).
Como um CNAME não tolera outros registos ao lado, e o apex tem sempre SOA e NS, não pode existir um CNAME no apex. Não se trata de uma limitação do seu painel, mas do próprio DNS.
Se um serviço lhe pedir para ligar "o seu domínio principal", há três soluções:
- Um registo A (e eventualmente AAAA) com o endereço IP do serviço. A maioria das plataformas de loja online indica um endereço fixo para esse efeito. Isto funciona em todo o lado.
- Um registo ALIAS, ANAME ou "CNAME flattening". Alguns fornecedores de DNS oferecem um tipo de registo próprio que se comporta como um CNAME, mas que o servidor de nomes converte automaticamente num registo A antes de a resposta sair. Isto não é um tipo de registo oficial: só funciona em fornecedores que o suportem, e tem um nome diferente em cada um.
- Redirecionamento. Faça o domínio raiz apontar, com um registo A, para o seu próprio servidor web, e faça esse servidor redirecionar os visitantes para
www.example.com, que tem um CNAME para o serviço. Pode ler como funciona o redirecionamento na lição 3.4.
Onde mais um CNAME não é permitido
- Um registo MX não pode apontar para um CNAME (RFC 2181, secção 10.3). O servidor de correio num MX tem de ser um nome com o seu próprio registo A ou AAAA. Alguns servidores de correio até funcionam na mesma, mas não pode contar com isso.
- Nenhum CNAME num nome que também tenha como subdomínio no seu painel de hosting. Um subdomínio no painel recebe automaticamente registos próprios que apontam para o seu alojamento. Se quiser que o nome aponte para outro serviço, remova o subdomínio e crie apenas o registo CNAME.
- Cadeias são possíveis, mas limite-as. Um CNAME pode apontar para um nome que, por sua vez, também é um CNAME. Cada passo custa uma pesquisa adicional. Grandes plataformas fazem isto com frequência (vê-se então dois ou três CNAMEs seguidos), mas não crie cadeias longas por sua própria iniciativa.
Na prática: assim se apresenta num painel
Como exemplo, usamos o ecrã de DNS do O meu WebOké. Noutros painéis (DirectAdmin, cPanel, Plesk, Cloudflare, a maioria dos registrars) os botões têm nomes diferentes, mas preenche as mesmas três informações: tipo, nome e nome de destino.
- Abra o ecrã de DNS do seu domínio e clique em Adicionar registro.
- Escolha o tipo CNAME.
- Em Nome, indique apenas
shop, sem o seu domínio. - Em Aponta para, indique o nome de destino, com um ponto no final:
shops.platform.example. - Guarde e verifique na lista se não aparece o seu próprio domínio a seguir ao valor.
O painel usado no exemplo avisa se faltar o ponto. Nem todos os painéis o fazem.
Resumo
- Um CNAME transforma um nome num alias para outro nome; o endereço IP passa a ser gerido pela outra entidade.
- Coloque um ponto no final do nome de destino, caso contrário o DNS acrescenta o seu próprio domínio a seguir.
- Um nome com um CNAME não pode ter outros registos.
- Por isso, um CNAME não pode estar no domínio raiz: aí existem sempre SOA e NS. Use um registo A, um registo do tipo ALIAS do seu fornecedor de DNS, ou redirecionamento.
- Um registo MX não pode apontar para um CNAME.
Quiz
Exercício
Exercício Z3.2: Seguir um CNAME. Para que nome aponta o registo CNAME de en.wikipedia.org? Indique o nome de destino.
Exercício O3.2: Configurar na sua zona de treino. Crie na sua zona de treino um registo CNAME com o nome winkel que aponte para shops.shop-demo.dnspractice.eu. (com o ponto). Certifique-se de que não existe nenhum outro registo para winkel. Na zona de treino usa um serviço fictício; no seu domínio real, indique o nome de destino fornecido pelo serviço real. Depois clique em Verificar.
Exercício O3.2
Este exercício é feito na sua própria zona de treino: uma zona DNS real nos servidores de nomes da WebOké, só para si. Registe-se com o seu endereço de email. Recebe uma ligação de acesso por email e, de seguida, volta a esta lição. Utilizamos o seu endereço apenas para a finalidade do curso.
Para saber mais
Estes artigos descrevem os passos nos painéis da WebOké; noutros painéis funcionam de forma semelhante.
