¿Cómo configurar correctamente la zona de reenvío BIND para un servidor DNS interno?

15

Yo tengo:

  1. Servidor DNS interno ns1.internalcon IP 192.168.0.4.
  2. servidor DNS externo con un TLD externo mydns.example.come IP interna 192.168.0.5. Es accesible tanto desde Internet (a través de una regla NAT estática) como desde la red local.

Estoy tratando de configurar mi servidor DNS externo para reenviar la zona subzone.mydns.example.comal servidor DNS interno. El servidor DNS interno tiene autoridad para esta zona.

Importante: no puedo modificar la configuración interna del servidor DNS. Sin embargo, puedo leerlo si es necesario para diagnosticar el problema.

Archivo /etc/named.confen el 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; };
};

Archivo /var/named/mydns.example.com.zoneen el 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.

Entonces, ahora trato de resolver algunos registros DNS. La zona del servidor externo parece funcionar.

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

Pero la zona reenviada no 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

Los resultados son idénticos cuando estos comandos se ejecutan en un host de Internet remoto y en un host interno.

Si intento resolver subzone.mydns.example.com.desde un servidor de nombres externo Y especificar el servidor interno explícitamente, obtengo:

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

Que pasa ¿Cómo configuro la zona DNS de reenvío para que funcione como esperaba?

vadipp
fuente
Mi sospecha (no estoy seguro de cómo verificarlo) es que el servidor DNS externo obtiene los registros del interno y no sobrescribe el hecho de que ns1.internal es responsable de la zona. Entonces, el solucionador del cliente intenta resolver ese nombre (ns1.internal) y falla.
vadipp
3
intente cavar + rastrear para ver qué está sucediendo exactamente. También use nscd para habilitar el registro de consultas y verificar si hay errores.
coredump
Primero, aumente el nivel de registro del enlace externo para registrar solicitudes individuales. Mi especulación es que debe haber una delegación de la zona subzone.mydns.example.com al servidor DNS mydns.example.com. Intente agregar esto al archivo de zona mydns.example.com: subzone IN NS mydns.example.com.(supongo que el archivo de zona tiene en algún lugar también el registro A para @ = mydns.example.com, ¿correcto?)
Nils Toedtmann

Respuestas:

14

Agregue un 'solo reenviar'; declaración a la zona reenviada:

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

Debe configurar el RR A para el NS "subzone.mydns.example.com". en su DNS externo. Se llama "registro de pegamento" y corresponderá a la IP de su DNS interno. Actualmente, su DNS externo no es capaz de conocer la IP del DNS interno. Saludos

Fabaxx
fuente
0

Lo hice y otro paso más, el primero mencionado por @ brandon-xavier:

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

y el nuevo:

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

Pero no sé por qué es necesario ...

Rfraile
fuente