Como configurar corretamente a zona de encaminhamento BIND para um servidor DNS interno?

15

Eu tenho:

  1. servidor DNS interno ns1.internalcom IP 192.168.0.4.
  2. servidor DNS externo com um TLD externo mydns.example.come um IP interno 192.168.0.5. É acessível a partir da Internet (através de uma regra NAT estática) e da rede local.

Estou tentando configurar meu servidor DNS externo para encaminhar a zona subzone.mydns.example.compara o servidor DNS interno. O servidor DNS interno é autoritário para esta zona.

Importante: Não consigo modificar a configuração interna do servidor DNS. Posso ler, no entanto, se for necessário para diagnosticar o problema.

Arquivo /etc/named.confno servidor DNS externo:

options {
  directory "/var/named";
  version "get lost";

  recursion yes;
  allow-transfer {"none";};
  allow-query { any; };
  allow-recursion { any; };
};

logging{
  channel example_log{
   file "/var/log/named/named.log" versions 3 size 2m;
   severity info;
   print-severity yes;
   print-time yes;
   print-category yes;
 };
 category default{
  example_log;
 };
};

// Zones:

zone "mydns.example.com" {
  type master;
  file "mydns.example.com.zone";
  allow-update{none;};
};

zone "subzone.mydns.example.com" {
  type forward;
  forwarders { 192.168.0.4; };
};

Arquivo /var/named/mydns.example.com.zoneno servidor DNS externo:

$TTL 1
$ORIGIN mydns.example.com.
@             IN      SOA   mydns.example.com. root.mydns.example.com. (
                        2003080800 ; se = serial number
                        60         ; ref = refresh
                        60         ; ret = update retry
                        60         ; ex = expiry
                        60         ; min = minimum
                        )

@             IN      NS      mydns.example.com.

Então, agora eu tento resolver alguns registros DNS. A zona do servidor externo parece funcionar.

workstation$ dig mydns.example.com NS +tcp +short
mydns.example.com.

Mas a zona encaminhada não funciona:

workstation$ dig subzone.mydns.example.com NS +tcp

; <<>> DiG 9.8.1-P1 <<>> subzone.mydns.example.com NS +tcp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 36887
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;subzone.mydns.example.com.        IN      NS

;; AUTHORITY SECTION:
mydns.example.com.    1       IN      SOA     mydns.example.com. root.mydns.example.com. 2003080800 60 60 60 60

;; Query time: 3 msec
;; SERVER: 91.144.182.3#53(91.144.182.3)
;; WHEN: Thu Jul 19 17:27:54 2012
;; MSG SIZE  rcvd: 108

Os resultados são idênticos quando esses comandos são executados no host remoto da Internet e em um host interno.

Se eu tentar resolver a subzone.mydns.example.com.partir do servidor de nomes externo E especificar o servidor interno explicitamente, obtenho:

mydns$ dig @192.168.0.4 subzone.mydns.example.com NS

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> @192.168.0.4 subzone.mydns.example.com NS
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 87
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 3

;; QUESTION SECTION:
;subzone.mydns.example.com.        IN      NS

;; ANSWER SECTION:
subzone.mydns.example.com. 3600 IN NS      ns1.internal.

;; ADDITIONAL SECTION:
ns1.internal.      3600    IN      A       192.168.0.4

;; Query time: 613 msec
;; SERVER: 192.168.0.4#53(192.168.0.4)
;; WHEN: Thu Jul 19 18:20:55 2012
;; MSG SIZE  rcvd: 163

O que há de errado? Como faço para configurar a zona DNS de encaminhamento para funcionar conforme o esperado?

vadipp
fonte
Minha suspeita (não sei como verificá-lo) é que o servidor DNS externo busca os registros do interno e não substitui o fato de que o ns1.internal é responsável pela zona. Portanto, o resolvedor do cliente tenta resolver esse nome (ns1.internal) e falha.
vadipp
3
tente um dig + trace para ver o que exatamente está acontecendo. Use também o nscd para habilitar o log de consultas e verificar se há erros.
Coredump
Primeiro, aumente o nível de log da ligação externa para registrar solicitações individuais. Minha especulação é que deve haver uma delegação da zona subzone.mydns.example.com no servidor DNS mydns.example.com. Tente adicionar isso à mydns.example.com zonefile: subzone IN NS mydns.example.com.(i assumir o zonefile tem algum lugar também o registro para @ = mydns.example.com, correto?)
Nils Toedtmann

Respostas:

14

Adicione um 'somente encaminhamento'; declaração para a zona encaminhada:

zone "subzone.mydns.example.com" {
    type forward;
    forward only;
    forwarders { 192.168.0.4; };
};
Brandon Xavier
fonte
0

Você precisa configurar o RR para o NS "subzone.mydns.example.com". no seu DNS externo. É nomeado "registro de cola" e corresponderá ao IP do seu DNS interno. Atualmente, seu DNS externo não é capaz de conhecer o IP do DNS interno. Saudações

Fabaxx
fonte
0

Eu fiz e outro passo mais, o primeiro mencionado por @ brandon-xavier:

zone "subzone.mydns.example.com" {
    type forward;
    forward only;
    forwarders { 192.168.0.4; };
};

e o novo:

$ORIGIN subzone.mydns.example.com.
@             IN      NS      ns1.subzone.mydns.example.com.

Mas não sei por que é necessário ...

Rfraile
fonte