NB Esta é uma repostagem deminha pergunta anterior, que foi colocado em espera e solicitado a ser reformulado para maior clareza (espero que faça mais sentido)
Eu tenho um único servidor DNS bind
instalado, que estou tentando configurar para hospedar um domínio pai ( example.org
) e dois subdomínios ( cnc.example.org
e report.example.org
) para que os dispositivos dentro de qualquer um dos domínios possam ter consultas DNS atendidas pelo único servidor DNS.
Minha primeira pergunta é isso possível?
Em caso afirmativo, por que receberia os seguintes erros?
Quando faço nslookup host1
do report.example.org
domínio recebo
server can't find host1: SERVFAIL
Quando faço nslookup host2
do cnc.example.org
domínio recebo
server can't find host1: SERVFAIL
Configure da seguinte forma:
anfitrião1:
- IP 192.168.252.21/24
- DNS 192.168.252.22
/etc/hosts
contémhost1.cnc.example.org
anfitrião2:
- IP 192.168.252.20/24
- DNS 192.168.252.22
/etc/hosts
contémhost2.report.example.org
Servidor dns:
- IP 192.168.252.22/24
- DNS 127.0.0.1
/etc/hosts
contémDNSServer.example.org
named.conf.local
configuração
/
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "example.org" {
type master;
file "/etc/bind/zones/example.org";
# allow-transfer { 192.168.252.22; };
};
zone "cnc.example.org" {
type master;
file "/etc/bind/zones/cnc.example.org";
# allow-transfer { 192.168.252.22; };
};
zone "report.example.org" {
type master;
file "/etc/bind/zones/report.example.org";
# allow-transfer { 192.168.252.22; };
};
zone "252.168.192.in-appr.arpa" {
type master;
file "/etc/bind/zones/reverse/rev.252.168.192";
allow-transfer { 192.168.252.22; };
};
example.org
configuração
;
; BIND data for example.org or report.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
;delegated zones
cnc.example.org. IN NS DNSServer.example.org.
report.example.org. IN NS DNSServer.example.org.
* saída de /etc/resolv.conf no DNSServer *
# Generated by NetworkManager
search example.org
nameserver 127.0.0.1
* saída de /etc/resolv.conf no host1 *
# Generated by NetworkManager
search report.example.org
nameserver 192.168.252.22
* saída de /etc/resolv.conf no host2 *
# Generated by NetworkManager
search cnc.example.org
nameserver 192.168.252.22
* saída de dig DNSServer no DNSServer *
root@DNSServer:/etc/bind/zones/reverse# dig DNSServer
; <<>> DiG 9.10.3-P4-Debian <<>> DNSServer
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 45573
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;DNSServer. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov 27 10:47:23 GMT 2017
;; MSG SIZE rcvd: 38
* saída usando dig DNSServer.example.org *
root@DNSServer:/home/osboxes# dig DNSServer.example.org
; <<>> DiG 9.10.3-P4-Debian <<>> DNSServer.example.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12335
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;DNSServer.example.org. IN A
;; ANSWER SECTION:
DNSServer.example.org. 10800 IN A 192.168.252.22
;; AUTHORITY SECTION:
example.org. 10800 IN NS DNSServer.example.org.
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov 27 11:01:19 GMT 2017
;; MSG SIZE rcvd: 79
* saída de dig host1 no DNSServer *
root@DNSServer:/etc/bind/zones/reverse# dig host1
; <<>> DiG 9.10.3-P4-Debian <<>> host1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 19414
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;host1. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov 27 10:48:15 GMT 2017
;; MSG SIZE rcvd: 40
cnc.example.org
configuração
;
; BIND data for example.org or report.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
;192.168.252.0/24 - A Records
host1.cnc.example.org. IN A 192.168.252.21
report.example.org
configuração
;
; BIND data for example.org or report.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
;192.168.252.0/24 - A Records
host2.report.example.org. IN A 192.168.252.20
obrigado
Responder1
Você pode usar a delegação, mas, a menos que realmente precise, sugiro que você mantenha as coisas simples 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:
No DNSServer quando eu
nslookup host1
receboroot@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
razão nslookup
para não retornar uma resposta. Nesse caso, você precisaria substituir o domain example.org
no seu /etc/resolv.conf
por search example.org report.example.org
ou procurar nslookup host2.report
.
De host1 ou host2 eu recebo
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) /etc/resolv.conf
não inclui o componente que contém, host2
portanto nslookup
não é possível ver o nome não qualificado host2
em lugar nenhum.
Presumo que os arquivos
/etc/hosts
e/etc/hostname
em host1 e host2 ainda devam serhost1.cnc.example.org
ehost2.report.example.org
Não tenho ideia do que você quer dizer quando diz que /etc/hosts
deveria ser host1.cnc.example.org
. O /etc/hosts
arquivo é uma forma alternativa de mapeamento 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 apenas colocar essas entradas em /etc/hosts
. Por outro lado, se você tiver um número razoável de hosts, o DNS será uma boa solução centralizada para uma rede local. (Tenha em mente, porém, que isso nslookup
ignora intencionalmente /etc/hosts
.)
De qualquer um dos hosts quando eu faço isso
nslookup host1.cnc.example.org
ounslookup host2.report.example.org
ele resolve corretamente o endereço IP
Sim. Você forneceu um nome totalmente qualificado, que nslookup
(e bind
) pode ser resolvido corretamente. Isso prova que o DNS está funcionando bem.
Eu preciso de um único servidor DNS para lidar com qualquer consulta
example.org
ecnc.example.org
parareport.example.org
que quando um novo dispositivo se comunique de volta à rede para solicitar novos comandos para executar, ele consultecnc.example.org
e seja direcionado parahost1.cnc.example.org
(192.168.252.21), mas quando quiser enviar relatórios de volta à rede ele consulta oreport.example.org
domínio e é direcionado parahost2.report.example.org
(192.168.252.20)
Para fazer isso você usaria um CNAME
registro (alias) no DNS, para que uma consulta report.example.org
fosse mapeada para o host host2.report.example.org
. Observe que não há razão técnica na sua pergunta para host2
não ser chamado host2.example.org
. CNAME
os registros podem apontar para qualquer lugar, não apenas para hosts no (sub)domínio atual.
Responder2
Sim. Mas não há necessidade de criar configurações específicas para o subdomínio.
Um .
no final significa um nome de domínio completo e sem .
significa um subdomínio do domínio original.
Adicione uma entrada como esta apenas cnc.example.com
na example.com
configuração.
host1.cnc IN A 192.168.252.21
Então, você precisa das seguintes atualizações
- Remover
cnc.example.org
ereport.example.com
denamed.conf.local
Adicione todas as entradas correspondentes ao subdomínio sem
.
final na configuração do domínio pai. Você também pode mencioná-los explicitamente na zona dos pais, comohost1.cnc.example.com. IN A 192.168.252.21
- Remova os arquivos de zona correspondentes
cnc.example.com
ereport.example.com
reinicieBIND
o servidor.