Come configurare correttamente la zona forward di BIND per un server DNS interno?


15

Io ho:

  1. server DNS interno ns1.internalcon IP 192.168.0.4.
  2. server DNS esterno con un TLD esterno mydns.example.come un IP interno 192.168.0.5. È accessibile sia da Internet (tramite una regola NAT statica) sia dalla rete locale.

Sto cercando di configurare il mio server DNS esterno per inoltrare la zona subzone.mydns.example.comal server DNS interno. Il server DNS interno è autorevole per questa zona.

Importante: non riesco a modificare la configurazione del server DNS interno. Posso leggerlo, tuttavia, se è necessario per diagnosticare il problema.

File /etc/named.confsul server DNS esterno:

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; };
};

File /var/named/mydns.example.com.zonesul server DNS esterno:

$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.

Quindi, ora provo a risolvere alcuni record DNS. La zona del server esterno sembra funzionare.

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

Ma la zona inoltrata non funziona:

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

I risultati sono identici quando questi comandi vengono eseguiti sull'host Internet remoto e su un host interno.

Se provo a risolvere subzone.mydns.example.com.da un server dei nomi esterno E specifica esplicitamente il server interno, ottengo:

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

Cosa c'è che non va? Come configuro la zona DNS di inoltro per funzionare come mi aspetto?


Il mio sospetto (non sono sicuro di come controllarlo) è che il server DNS esterno recupera i record da quello interno e non sovrascrive il fatto che ns1.internal è responsabile della zona. Quindi, il resolver del client tenta di risolvere quel nome (ns1.internal) e fallisce.
vadipp,

3
prova a scavare + traccia per vedere cosa sta succedendo esattamente. Utilizzare anche nscd per abilitare la registrazione delle query e verificare la presenza di errori.
coredump,

Innanzitutto, aumentare il livello di registro del bind esterno per registrare le singole richieste. La mia ipotesi è che ci debba essere una delegazione della zona subzone.mydns.example.com al server DNS mydns.example.com stesso. Prova ad aggiungere questo al file di zona mydns.example.com: subzone IN NS mydns.example.com.(suppongo che il file di zona abbia da qualche parte anche il record A per @ = mydns.example.com, giusto?)
Nils Toedtmann,

Risposte:


14

Aggiungi un 'solo forward;' istruzione nella zona inoltrata:

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

0

Devi configurare un RR per l'NS "subzone.mydns.example.com". sul tuo DNS esterno. Si chiama "record di colla" e corrisponderà all'IP del tuo DNS interno. Attualmente, il tuo DNS esterno non è in grado di conoscere l'IP del DNS interno. Saluti


0

Ho fatto e un altro passo in più, il primo menzionato da @ brandon-xavier:

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

e quello nuovo:

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

Ma non so perché sia ​​necessario ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.