Jak poprawnie skonfigurować strefę przekazywania BIND dla wewnętrznego serwera DNS?

15

Mam:

  1. wewnętrzny serwer DNS ns1.internalz adresem IP 192.168.0.4.
  2. zewnętrzny serwer DNS z zewnętrzną TLD mydns.example.comi wewnętrznym adresem IP 192.168.0.5. Jest dostępny zarówno z Internetu (poprzez statyczną regułę NAT), jak iz sieci lokalnej.

Próbuję skonfigurować mój zewnętrzny serwer DNS, aby przekazywał strefę subzone.mydns.example.comdo wewnętrznego serwera DNS. Wewnętrzny serwer DNS jest autorytatywny dla tej strefy.

Ważne: Nie mogę zmodyfikować wewnętrznej konfiguracji serwera DNS. Mogę go jednak przeczytać, jeśli jest to potrzebne do zdiagnozowania problemu.

Plik /etc/named.confna zewnętrznym serwerze DNS:

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

Plik /var/named/mydns.example.com.zonena zewnętrznym serwerze DNS:

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

Więc teraz próbuję rozwiązać niektóre rekordy DNS. Wygląda na to, że strefa zewnętrznego serwera działa.

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

Ale strefa przekazana nie działa:

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

Wyniki są identyczne, gdy polecenia te są wykonywane na zdalnym hoście internetowym i na hoście wewnętrznym.

Jeśli spróbuję rozwiązać subzone.mydns.example.com.z zewnętrznego serwera nazw ORAZ jawnie określić serwer wewnętrzny, otrzymam:

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

Co jest nie tak? Jak skonfigurować strefę DNS przesyłania dalej, aby działała zgodnie z oczekiwaniami?

vadipp
źródło
Podejrzewam (nie jestem pewien, jak to sprawdzić), że zewnętrzny serwer DNS pobiera rekordy z wewnętrznego i nie zastępuje faktu, że ns1.internal jest odpowiedzialny za strefę. Program tłumaczący klienta próbuje rozwiązać tę nazwę (ns1.internal) i kończy się niepowodzeniem.
vadipp,
3
spróbuj dig + trace, aby zobaczyć, co dokładnie się dzieje. Użyj także nscd, aby włączyć rejestrowanie zapytań i sprawdzić błędy.
coredump
Najpierw zwiększ poziom dziennika zewnętrznego wiązania, aby rejestrować pojedyncze żądania. Spekuluję, że musi istnieć delegacja strefy podstrefa.mydns.example.com na sam serwer DNS mydns.example.com. Spróbuj dodać to do pliku strefy mydns.example.com: subzone IN NS mydns.example.com.(zakładam, że plik strefy ma również rekord A dla @ = mydns.example.com, prawda?)
Nils Toedtmann

Odpowiedzi:

14

Dodaj „tylko do przodu”; instrukcja do przekazanej strefy:

zone "subzone.mydns.example.com" {
    type forward;
    forward only;
    forwarders { 192.168.0.4; };
};
Brandon Xavier
źródło
0

Musisz skonfigurować A RR dla NS „subzone.mydns.example.com”. na twoim zewnętrznym DNS. Nazwany jest „rekordem kleju” i będzie odpowiadał adresowi IP twojego wewnętrznego DNS. Obecnie twój zewnętrzny DNS nie jest w stanie rozpoznać adresu IP wewnętrznego DNS. pozdrowienia

Fabaxx
źródło
0

Zrobiłem i jeszcze jeden krok, pierwszy wspomniany przez @ brandon-xavier:

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

i nowy:

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

Ale nie wiem, dlaczego jest to konieczne ...

Rfraile
źródło