J'ai:
ns1.internal
avec IP 192.168.0.4
.mydns.example.com
et IP interne 192.168.0.5
. Il est accessible à la fois depuis Internet (via une règle statique NAT) et depuis le réseau local.J'essaie de configurer mon serveur DNS externe pour transférer la zone subzone.mydns.example.com
au 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.conf
sur 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.zone
sur 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 transmise 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.
du serveur de noms externe ET spécifiez 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?
Ajoutez un "transfert uniquement"; déclaration à la zone transmise:
zone "subzone.mydns.example.com" {
type forward;
forward only;
forwarders { 192.168.0.4; };
};
Vous devez configurer le RR A pour le 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.
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 ...