Eu tenho duas sub-zonas, digamos:
zone "first.com" { type master; file "/etc/bind/zones/first.com.primary";};
zone "second.com" { type master; file "/etc/bind/zones/second.com.primary";};
Dentro Primeiro eu defino
$TTL 300
@ IN SOA ns1.org.com. postmaster.org.com. (
2022050902 ; serial
14400 ; refresh
1800 ; retry
604800 ; expire
86400 ) ; minimum
@ IN NS ns1.org.com.
subdomain IN A 127.0.0.1
Em segundo eu quero referenciar primeiro
$TTL 86400
@ IN SOA ns1.org.com. postmaster.org.com. (
2019032601 ; serial
14400 ; refresh
1800 ; retry
604800 ; expire
86400 ) ; minimum
@ IN NS ns1.org.com.
@ IN CNAME subdomain.first.com.
www IN CNAME @
localhost IN A 127.0.0.1
loopback IN CNAME localhost
Isso é possível?
Um
CNAME
registro especifica que o nome do lado esquerdo doCNAME
registro é um alias do nome do lado direito - para todos os tipos de registros DNS , não apenas paraA
registros. O bit em negrito é o que está causando o problema aqui, porque "todos os tipos de registro" também incluem a zonaSOA
e osNS
registros.Você está tentando usar um
CNAME
registro no ápice dasecond.com
zona, onde oSOA
registro também reside. Assim escrito de uma forma totalmente qualificada, seu primeiroCNAME
diz:Como resultado, quando o registro SOA de
second.com
é solicitado, o registro SOA desubdomain.first.com
deve ser retornado. Mas então o registro SOA real desecond.com
ficará inacessível e, sem esse registro SOA, todo osecond.com
domínio será quebrado - o que significa que oCNAME
registro apontadosubdomain.first.com
não é realmente válido.Além disso, se
subdomain.first.com
não for o ápice de sua própria zona, mas apenas um subdomínio em uma zona de nível superior, ele não terá registro SOA próprio: seguir o mapeamento CNAME significaria que uma solicitação parasecond.com
o registro SOA de 's teria que ser respondido com um "não existe tal registro, definitivamente". Mas se não houver registro SOA para asecond.com
zona, a zona não existe.Da mesma forma, quando os registros NS de
second.com
são solicitados,CNAME
seria necessário responder com os registros NS desubdomain.first.com
. Mas os servidores de nomes dosubdomain.first.com
não são obrigados a saber nada sobresecond.com
.Para evitar situações paradoxais como esta, a Seção 3.6.2 da RFC 1034 diz :
(Observe que a RFC 1034 é anterior à convenção de usar as palavras DEVE , DEVE e PODE estritamente de acordo com o nível de exigência, conforme definido na RFC 2119. Embora diga "nenhum outro dado deve estar presente", isso é uma exigência, não uma recomendação, pois a exatidão do cache DNS depende disso.)
Essa regra impossibilita que um
CNAME
registro viva no ápice de uma zona, porque os registrosSOA
eNS
são necessários no ápice para que a zona exista de forma significativa, e qualquerCNAME
registro junto com eles violaria essa regra.Para obter mais detalhes, consulte: https://www.isc.org/blogs/cname-at-the-apex-of-a-zone/
Além disso, apontar um
CNAME
registro para outroCNAME
registro é ineficiente e de mau estilo, embora tecnicamente funcione. Você deve sempre ir diretamente para o nome canônico no final da cadeia: