如何为内部 DNS 服务器正确配置 BIND 转发区域?

如何为内部 DNS 服务器正确配置 BIND 转发区域?

我有:

  1. 内部 DNS 服务器ns1.internal的 IP 为192.168.0.4
  2. 具有外部 TLDmydns.example.com和内部 IP 的外部 DNS 服务器192.168.0.5。它既可从 Internet(通过静态 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

在远程 Internet 主机和内部主机上执行这些命令时,结果是相同的。

如果我尝试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 区域才能按预期工作?

答案1

向转发区域添加“仅转发;”语句:

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

答案2

我执行了其他步骤,其中第一个步骤由@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.

但我不知道为什么这是必要的...

答案3

您必须在外部 DNS 上为 NS“subzone.mydns.example.com”配置 A RR。它被命名为“glue record”,将对应于内部 DNS 的 IP。目前,您的外部 DNS 无法知道内部 DNS 的 IP。问候

答案4

如果要转发到的区域是活动目录域,则可能还需要将 dnssec-validation 配置为 no。默认值为 auto。

/etc/bind/named.conf.options

dnssec-validation no;

相关内容