Você pode usar a delegação, mas, a menos que realmente precise, sugiro que simplifique e use uma zona que contenha example.org
, cnc.example.org
e report.example.org
.
;
; BIND data for example.org
;
$TTL 3h
@ IN SOA DNSServer.example.org. root.example.org. (
1 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ) ; minimum
;
; main domain name servers - NS records
IN NS DNSServer.example.org.
; main domain name servers - A records
DNSServer IN A 192.168.252.22
; public targets
cnc IN CNAME host1.cnc
report IN CNAME host2.report
; hosts delivering services
host1.cnc IN A 192.168.252.21
host2.report IN A 192.168.252.20
Citando comentários:
On the DNSServer when I do
nslookup host1
I getroot@host1:/home/osbixes# nslookup host2 Server: 127.0.0.1 Address 127.0.0.1#53 ** server can’t find host2: SERVFAIL
Não há caminho de pesquisa no DNSServer, mas o domínio é example.org
, o que significa que todos os nomes não qualificados devem estar nesse domínio. Não há host2.example.org
então nslookup
está deixando de responder corretamente. Nesse caso, você precisaria substituir o domain example.org
em seu /etc/resolv.conf
por search example.org report.example.org
ou procurar nslookup host2.report
.
From host1 or host2 I get
root@host1:/home/osbixes# nslookup host2 Server: 192.168.252.22 Address 192.168.252.22#53 ** server can’t find host2: SERVFAIL
Mesma razão. Seu domínio (caminho de pesquisa) em /etc/resolv.conf
não inclui o componente que contém host2
, então nslookup
não pode ver o nome não qualificado host2
em qualquer lugar.
I assume the
/etc/hosts
and/etc/hostname
files on host1 and host2 should still behost1.cnc.example.org
andhost2.report.example.org
Não tenho idéia do que você quer dizer quando diz que /etc/hosts
deve ser host1.cnc.example.org
. O arquivo /etc/hosts
é uma maneira alternativa de mapear entre nomes de host e endereços IP. Se você tiver apenas dois ou três nomes de host, é melhor evitar a complexidade do DNS interno e colocar essas entradas em /etc/hosts
. Por outro lado, se você tiver um número razoável de hosts, o DNS é uma boa solução centralizada para uma rede local. (Lembre-se, porém, que nslookup
intencionalmente ignora /etc/hosts
.)
From either of the hosts when I do
nslookup host1.cnc.example.org
ornslookup host2.report.example.org
it correctly resolves the IP address
Sim. Você forneceu um nome totalmente qualificado, que nslookup
(e bind
) pode resolver corretamente. Isso prova que o DNS está funcionando bem.
I need a single DNS Server to handle any queries for
example.org
andcnc.example.org
andreport.example.org
so that when a new device communicates back to the network to ask for new commands to execute, it queriescnc.example.org
and is directed tohost1.cnc.example.org
(192.168.252.21) but when it wants to send reports back to the network it queries thereport.example.org
domain and is directed tohost2.report.example.org
(192.168.252.20)
Para isso, use um registro CNAME
(alias) no DNS, para que uma consulta de report.example.org
seja mapeada para o host host2.report.example.org
. Note que não há nenhuma razão técnica na sua pergunta porque host2
não deveria ser chamado de host2.example.org
. CNAME
registros podem apontar para qualquer lugar, não apenas para hosts no (sub) domínio atual.