Comment configurer correctement la zone de transfert BIND pour un serveur DNS interne?

15

J'ai:

  1. serveur DNS interne ns1.internalavec IP 192.168.0.4.
  2. serveur DNS externe avec un TLD externe mydns.example.comet une IP interne 192.168.0.5. Il est accessible à la fois depuis Internet (via une règle NAT statique) et depuis le réseau local.

J'essaie de configurer mon serveur DNS externe pour transférer la zone subzone.mydns.example.comvers le serveur DNS interne. Le serveur DNS interne fait autorité pour cette zone.

Important: je ne peux pas modifier la configuration du serveur DNS interne. Je peux le lire, cependant, si cela est nécessaire pour diagnostiquer le problème.

Fichier /etc/named.confsur le serveur DNS externe:

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

Fichier /var/named/mydns.example.com.zonesur le serveur DNS externe:

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

Donc, maintenant j'essaie de résoudre certains enregistrements DNS. La zone du serveur externe semble fonctionner.

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

Mais la zone redirigée ne fonctionne pas:

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

Les résultats sont identiques lorsque ces commandes sont exécutées sur un hôte Internet distant et sur un hôte interne.

Si j'essaie de résoudre à subzone.mydns.example.com.partir du serveur de noms externe ET de spécifier le serveur interne explicitement, j'obtiens:

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

Qu'est-ce qui ne va pas? Comment configurer la zone DNS de transfert pour qu'elle fonctionne comme prévu?

vadipp
la source
Mon soupçon (je ne sais pas comment le vérifier) ​​est que le serveur DNS externe récupère les enregistrements de celui interne et n'écrase pas le fait que ns1.internal est responsable de la zone. Ainsi, le résolveur du client essaie de résoudre ce nom (ns1.internal) et échoue.
vadipp
3
essayez un dig + trace pour voir ce qui se passe exactement. Utilisez également nscd pour activer la journalisation des requêtes et vérifier les erreurs.
coredump
Tout d'abord, augmentez le niveau de journalisation de la liaison externe pour consigner les demandes individuelles. Ma spéculation est qu'il doit y avoir une délégation de la zone subzone.mydns.example.com au serveur DNS mydns.example.com lui-même. Essayez d'ajouter ceci au fichier de zone mydns.example.com: subzone IN NS mydns.example.com.(je suppose que le fichier de zone a quelque part également l'enregistrement A pour @ = mydns.example.com, correct?)
Nils Toedtmann

Réponses:

14

Ajoutez un «transfert uniquement»; déclaration à la zone transmise:

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

Vous devez configurer le RR A pour la NS "subzone.mydns.example.com". sur votre DNS externe. Il s'appelle "glue record" et correspondra à l'IP de votre DNS interne. Actuellement, votre DNS externe n'est pas capable de connaître l'IP du DNS interne. Cordialement

Fabaxx
la source
0

J'ai fait et une autre étape plus, la première mentionnée par @ brandon-xavier:

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

et le nouveau:

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

Mais je ne sais pas pourquoi c'est nécessaire ...

Rfraile
la source