วิธีกำหนดค่า BIND forward zone สำหรับเซิร์ฟเวอร์ DNS ภายในอย่างถูกต้อง


15

ฉันมี:

  1. เซิร์ฟเวอร์ DNS ภายในกับทรัพย์สินทางปัญญาns1.internal192.168.0.4
  2. DNS เซิร์ฟเวอร์ภายนอกกับ TLD ภายนอกmydns.example.comและภายใน 192.168.0.5IP สามารถเข้าถึงได้ทั้งจากอินเทอร์เน็ต (ผ่านกฎ NAT แบบคงที่) และจากเครือข่ายท้องถิ่น

ฉันกำลังพยายามตั้งค่าเซิร์ฟเวอร์ DNS ภายนอกของฉันเพื่อส่งต่อโซนsubzone.mydns.example.comไปยังเซิร์ฟเวอร์ DNS ภายใน เซิร์ฟเวอร์ DNS ภายในมีสิทธิ์สำหรับโซนนี้

สำคัญ: ฉันไม่สามารถแก้ไขการกำหนดค่าเซิร์ฟเวอร์ DNS ภายในได้ อย่างไรก็ตามฉันสามารถอ่านได้หากจำเป็นต้องวินิจฉัยปัญหา

ไฟล์/etc/named.confบนเซิร์ฟเวอร์ 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; };
};

ไฟล์/var/named/mydns.example.com.zoneบนเซิร์ฟเวอร์ 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.

ดังนั้นตอนนี้ฉันพยายามแก้ไขระเบียน DNS บางรายการ ดูเหมือนเซิร์ฟเวอร์โซนภายนอกจะทำงาน

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

แต่โซนที่ส่งต่อไม่ทำงาน:

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

ผลลัพธ์จะเหมือนกันเมื่อเรียกใช้คำสั่งเหล่านี้บนโฮสต์อินเทอร์เน็ตระยะไกลและบนโฮสต์ภายใน

ถ้าฉันพยายามแก้ไขsubzone.mydns.example.com.จากเนมเซิร์ฟเวอร์ภายนอกและระบุเซิร์ฟเวอร์ภายในอย่างชัดเจนฉันจะได้รับ:

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

เกิดอะไรขึ้น ฉันจะกำหนดค่าโซน DNS ที่ส่งต่อให้ทำงานตามที่ฉันคาดไว้ได้อย่างไร


ความสงสัยของฉัน (ฉันไม่แน่ใจว่าจะตรวจสอบอย่างไร) คือเซิร์ฟเวอร์ DNS ภายนอกดึงข้อมูลจากระเบียนภายในและไม่เขียนทับความจริงที่ว่า ns1.internal รับผิดชอบโซน ดังนั้นตัวแก้ปัญหาของไคลเอ็นต์จึงพยายามแก้ไขชื่อนั้น (ns1.internal) และล้มเหลว
vadipp

3
ลองใช้ dig + trace เพื่อดูว่าเกิดอะไรขึ้น นอกจากนี้ยังใช้ nscd เพื่อเปิดใช้งานการบันทึกแบบสอบถามและตรวจสอบข้อผิดพลาด
coredump

ขั้นแรกเพิ่มระดับการบันทึกของการเชื่อมโยงภายนอกเพื่อบันทึกการร้องขอแต่ละรายการ การเก็งกำไรของฉันคือจะต้องมีการมอบหมายของโซน subzone.mydns.example.com ไปยังเซิร์ฟเวอร์ DNS mydns.example.com เอง พยายามที่จะเพิ่มสิ่งนี้ไปยัง mydns.example.com zonefile: subzone IN NS mydns.example.com.(ฉันถือว่า zonefile มีที่ใดที่หนึ่งเช่น A ระเบียนสำหรับ @ = mydns.example.com ถูกต้องหรือไม่?)
Nils Toedtmann

คำตอบ:



0

คุณต้องกำหนดค่า A RR สำหรับ NS "subzone.mydns.example.com" บน DNS ภายนอกของคุณ มันชื่อ "บันทึกกาว" และจะสอดคล้องกับ IP ของ DNS ภายในของคุณ ในปัจจุบัน DNS ภายนอกของคุณไม่สามารถรู้จัก IP ของ DNS ภายในได้ ความนับถือ


0

ฉันทำและขั้นตอนอื่น ๆ อีกมากรายการแรกที่กล่าวถึงโดย @ brandon-xavier:

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

และอันใหม่:

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

แต่ฉันไม่รู้ว่าทำไมมันถึงจำเป็น ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.