Як правильно налаштувати зону переадресації BIND для внутрішнього DNS-сервера?


15

Я маю:

  1. внутрішній DNS-сервер ns1.internalз IP 192.168.0.4.
  2. зовнішній DNS-сервер із зовнішнім TLD mydns.example.comта внутрішнім IP-адресом 192.168.0.5. Він доступний як з Інтернету (через статичне правило 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
спробуйте копати + слід, щоб побачити, що саме відбувається. Також використовуйте nscd для ввімкнення журналу запитів та перевірки на помилки.
coredump

По-перше, підвищити рівень журналу зовнішнього прив'язки для журналу окремих запитів. Мої міркування полягають у тому, що повинна бути делегована зона subzone.mydns.example.com на сам сервер DNS mydns.example.com. Спробуйте додати це до файла mydns.example.com: subzone IN NS mydns.example.com.(я припускаю, що у файлу zone десь також є запис A для @ = mydns.example.com, правильно?)
Nils Toedtmann,

Відповіді:


14

Додати "лише вперед"; заява до перенаправленої зони:

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

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.

Але я не знаю, чому це необхідно ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.