Bagaimana cara mengkonfigurasi zona maju BIND dengan benar untuk server DNS internal?

15

Saya sudah:

  1. server DNS internal ns1.internaldengan IP 192.168.0.4.
  2. server DNS eksternal dengan TLD eksternal mydns.example.comdan IP internal 192.168.0.5. Ini dapat diakses baik dari Internet (melalui aturan NAT statis) dan dari jaringan lokal.

Saya mencoba mengatur server DNS eksternal saya untuk meneruskan zona subzone.mydns.example.comke server DNS internal. Server DNS internal adalah otoritatif untuk zona ini.

Penting: Saya tidak dapat mengubah konfigurasi server DNS internal. Namun, saya dapat membacanya jika perlu untuk mendiagnosis masalah tersebut.

File /etc/named.confdi server DNS eksternal:

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.zonedi server DNS eksternal:

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

Jadi, sekarang saya mencoba menyelesaikan beberapa catatan DNS. Zona server eksternal tampaknya berfungsi.

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

Tetapi zona penerusan tidak berfungsi:

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

Hasilnya identik ketika perintah ini dijalankan pada host Internet jarak jauh dan pada host internal.

Jika saya mencoba menyelesaikan subzone.mydns.example.com.dari server nama eksternal DAN menentukan server internal secara eksplisit, saya mendapatkan:

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

Apa yang salah? Bagaimana cara mengkonfigurasi zona DNS penerusan agar berfungsi seperti yang saya harapkan?

vadipp
sumber
Kecurigaan saya (saya tidak yakin bagaimana memeriksanya) adalah bahwa server DNS eksternal mengambil catatan dari yang internal dan tidak menimpa fakta bahwa ns1.internal bertanggung jawab atas zona tersebut. Jadi, resolver klien mencoba untuk menyelesaikan nama itu (ns1.internal) dan gagal.
vadipp
3
coba gali + jejak untuk melihat apa yang sebenarnya terjadi. Juga gunakan nscd untuk mengaktifkan pembuatan log permintaan dan memeriksa kesalahan.
coredump
Pertama, tingkatkan tingkat log dari ikatan eksternal untuk mencatat permintaan individu. Spekulasi saya adalah bahwa harus ada delegasi zona subzone.mydns.example.com ke server DNS mydns.example.com itu sendiri. Coba tambahkan ini ke mydns.example.com zonefile: subzone IN NS mydns.example.com.(saya anggap zonefile memiliki suatu tempat juga catatan A untuk @ = mydns.example.com, betul?)
Nils Toedtmann

Jawaban:

14

Tambahkan 'hanya maju;' pernyataan ke zona penerusan:

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

Anda harus mengkonfigurasi RR untuk "subzone.mydns.example.com" NS. pada DNS eksternal Anda. Ini bernama "catatan lem" dan akan sesuai dengan IP DNS internal Anda. Saat ini, DNS eksternal Anda tidak dapat mengetahui IP DNS internal. Salam

Fabaxx
sumber
0

Saya lakukan dan langkah lainnya, yang pertama disebutkan oleh @ brandon-xavier:

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

dan yang baru:

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

Tapi saya tidak tahu mengapa itu perlu ...

Rfraile
sumber