Existem dois casos que podem fazer a mensagem "dangling CNAME" aparecer:

- Quando um CNAME aponta para um nome de host externo.
- Quando um CNAME possui erros de escrita ou o host que o CNAME aponta está com erro de escrita.

### CNAMEs apontando para nomes de host externos

As vezes, as pessoas podem desejar ter nomes locais apontando para entradas externas com registros CNAME. Por exemplo, pode ser desejável ter o atalho "google" para "www.google.com." Um modo que a pessoa possa desejar fazer isto é:

    google.example.com. +86400 CNAME www.google.com.

A configuração padrão do MaraDNS não completará o registro. Em outras palavras, algumas pessoas podem esperar que o Mara produza o seguinte para "google.example.com":

    	google.example.com. +86400 CNAME www.google.com.
    	www.google.com. +900 A 66.102.7.104

Ao invés, Mara simplesmente reproduz:

    	google.example.com. +86400 CNAME www.google.com.

Eu chamo isto de um registro "dangling CNAME", já que o registro CNAME não é resolvível por alguns servidores toscos. Para solucionar o dangling CNAME, MaraDNS pode ser configurado desta maneira:

- Executarmos dois servidores MaraDNS em dois IPs diferentes.
- Por causa deste exemplo, supormos que a pessoa do servidor envie requisições para solucionar nomes de hosts que tem o IP 192.168.1.1. Vamos supor mais adiante que há um servidor que tem o dangling CNAME com o IP 192.168.1.2
- Configure 192.168.1.1 para usar 192.168.1.2 como um servidor upstream usando a variável upstream_servers do mararc.
- Configure 192.168.1.2 para ser tanto um servidor autoritativo e recursivo de DNS, e tenha registros de dangling CNAME dentro da metade do autoritativo.

Isto resolverá completamente o problema de dangling CNAME; aqui é o que os dois servidores MaraDNS fazem para solucionar tal registro:

1. Um determinador servidor tosco pergunta para 192.168.1.1 o endereço de IP para, digamos "google.example.com"
2. 192.168.1.1 pede para 192.168.1.2 o endereço de IP "google.example.com"
3. 192.168.1.2 diz que 192.168.1.1 "google.example.com é um CNAME para www.google.com, e eu não tenho um IP para isto"
4. 192.168.1.1, vendo que tem um CNAME sem um IP, pede para 192.168.1.2 o IP "www.google.com"
5. 192.168.1.2 recursivamente soluciona o IP para www.google.com, e dá este IP para 192.168.1.1
6. Agora que 192.168.1.1 têm um registro completo, enviará este registro ao tosco. Em outras palavras, 192.168.1.1 contará ao tosco que google.example.com é um CNAME para www.google.com, e então distribuirá o IP para www.google.com.

Aqui é um exemplo do arquivo `mararc` para 192.168.1.1:

    ipv4_bind_addresses = "192.168.1.1"
    chroot_dir = "/ etc/maradns"
    recursive_acl = "192.168.1.0/24"
    upstream_servers = "192.168.1.2"

Aqui é um exemplo do arquivo `mararc` para 192.168.1.2:

    ipv4_bind_addresses = "192.168.1.2"
    chroot_dir = "/ etc/maradns"
    recursive_acl = "192.168.1.1"
    csv2 = {}
    csv2 ["example.com".] = "db.example.com"

Se dangling CNAME não é problema para uma determinada configuração, ou se foi resolivido através dos exemplos anteriores, as advertências sobre dangling CNAME podem ser desabilitadas adicionando o seguinte num arquivo mararc:

    no_cname_warnings = 1

### Um erro de digitação pode causar um registro dangling CNAME

Um erro de digitação também pode causar um registro de dangling CNAME. Por exemplo:

    www.example.com. CNAME hoost1.example.com.
    host1.example.com. A 10.1.2.3

Aqui, nós cometemos um erro no registro CNAME; pretendíamos digitar "host1.example.com" mas digitamos "hoost1.example.com." . Nós também podemos adquirir um CNAME oscilando deste modo:

    www.example.com. CNAME host1.example.com.
    hoost1.example.com. A 10.1.2.3

Ou por um erro no arquivo arquivo `mararc:`

    csv2 ["exammple.com".] = "db.example.com"

(Nós digitamos exammple.com quando nós deveríamos ter digitado "example.com")

Seguido por um arquivo de zona que se parece:

    www.example.com. CNAME host1.example.com.
    host1.% A 10.1.2.3

Desde que o % se expandirá a "exammple.com" em vez de "example.com."

Em todos estes casos, os avisos de dangling CNAME desapareceram quando o erro for encontrado e corrigido.