Wie konfiguriere ich die BIND Forward Zone für einen internen DNS Server?

15

Ich habe:

  1. interner DNS-Server ns1.internalmit IP 192.168.0.4.
  2. externer DNS-Server mit externer TLD mydns.example.comund interner IP 192.168.0.5. Der Zugriff erfolgt sowohl über das Internet (über eine statische NAT-Regel) als auch über das lokale Netzwerk.

Ich versuche, meinen externen DNS-Server so einzurichten subzone.mydns.example.com, dass die Zone an den internen DNS-Server weitergeleitet wird. Der interne DNS-Server ist für diese Zone maßgeblich.

Wichtig: Ich kann die interne DNS-Serverkonfiguration nicht ändern. Ich kann es jedoch lesen, wenn dies zur Diagnose des Problems erforderlich ist.

Datei /etc/named.confauf dem externen DNS-Server:

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

Datei /var/named/mydns.example.com.zoneauf dem externen DNS-Server:

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

Also versuche ich jetzt einige DNS-Einträge aufzulösen. Die externe Serverzone scheint zu funktionieren.

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

Die weitergeleitete Zone funktioniert jedoch nicht:

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

Die Ergebnisse sind identisch, wenn diese Befehle auf einem Remote-Internet-Host und einem internen Host ausgeführt werden.

Wenn ich versuche, subzone.mydns.example.com.vom externen Nameserver aufzulösen UND den internen Server explizit anzugeben, erhalte ich Folgendes:

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

Was ist los? Wie konfiguriere ich die DNS-Weiterleitungszone so, dass sie wie erwartet funktioniert?

vadipp
quelle
Mein Verdacht (ich bin nicht sicher, wie ich es überprüfen soll) ist, dass der externe DNS-Server die Datensätze vom internen abruft und nicht die Tatsache überschreibt, dass ns1.internal für die Zone verantwortlich ist. Daher versucht der Resolver des Clients, diesen Namen aufzulösen (ns1.internal), und schlägt fehl.
Vadipp
3
versuchen Sie eine dig + trace, um zu sehen, was genau passiert. Verwenden Sie auch nscd, um die Abfrageprotokollierung zu aktivieren und nach Fehlern zu suchen.
Coredump
Erhöhen Sie zunächst die Protokollstufe der externen Bindung, um einzelne Anforderungen zu protokollieren. Ich spekuliere, dass es eine Delegation der Zone subzone.mydns.example.com an den DNS-Server mydns.example.com selbst geben muss. Versuchen Sie, dies zu der Zonendatei mydns.example.com hinzuzufügen: subzone IN NS mydns.example.com.(Ich nehme an, die Zonendatei enthält irgendwo auch den A-Datensatz für @ = mydns.example.com, richtig?)
Nils Toedtmann

Antworten:

14

Fügen Sie ein "nur vorwärts" hinzu. Anweisung an die weitergeleitete Zone:

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

Sie müssen die A RR für den NS "subzone.mydns.example.com" konfigurieren. auf Ihrem externen DNS. Es heißt "Glue Record" und entspricht der IP Ihres internen DNS. Derzeit ist Ihr externer DNS nicht in der Lage, die IP des internen DNS zu ermitteln. Grüße

Fabaxx
quelle
0

Ich habe es getan und noch einen Schritt weiter, den ersten, der von @ brandon-xavier erwähnt wurde:

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

und das neue:

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

Aber ich weiß nicht, warum es notwendig ist ...

Rfraile
quelle