如何转发子区域

时间:2013-03-11 12:09:38

标签: dns subdomain forward

我正在使用Bind9作为我办公室的DNS服务器。

我们有一个区域:example.com。必须从我们的DNS服务器解析为权威。

另一方面,我们有一个sub.example.com。区域,必须转发到其他DNS服务器。

当我们在example.com上查询任何记录时绑定答案。区。但是对于sub.example.com的查询失败了。因为它不做转发。它一直在寻找当地的答案。

这是named.conf文件

zone "sub.example.com" IN { type forward;
        forwarders {172.21.238.229;172.21.238.230;};
        forward only;
};


zone "example.com" {
        type master;
        forwarders {};
        file "/etc/named/example.com.db";
};

这是example.com.db文件内容:

$ORIGIN example.com.
$TTL 1W
@   IN  SOA     dnsldes.example.com. postmaster.example.com. (
                               6            ; serial number
                               3600         ; refresh   [1h]
                               600          ; retry     [10m]
                               86400        ; expire    [1d]
                               3600 )       ; min TTL   [1h]
;


      IN     NS      dnsldes.example.com.

bdred           IN      A       172.22.2.150
dnsldes IN      A       172.21.229.159

这是使用dig客户端的bdred.example.com查询的输出(可以):

; <<>> DiG 9.8.1-P1 <<>> bdred.sub.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 9764
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;bdred.sub.example.com.         IN      A

;; AUTHORITY SECTION:
example.com.            3600    IN      SOA     dnsldes.example.com. postmaster.example.com. 6 3600 600 86400 3600

;; Query time: 4 msec
;; SERVER: 172.21.229.159#53(172.21.229.159)
;; WHEN: Mon Mar 11 12:55:02 2013
;; MSG SIZE  rcvd: 94

这就是挖掘查询的答案,它不起作用:

; <<>> DiG 9.8.1-P1 <<>> bdred.sub.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 26555
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;bdred.sub.example.com.         IN      A

;; AUTHORITY SECTION:
example.com.            3600    IN      SOA     dnsldes.example.com. postmaster.example.com. 6 3600 600 86400 3600

;; Query time: 4 msec
;; SERVER: 172.21.229.159#53(172.21.229.159)
;; WHEN: Mon Mar 11 13:09:07 2013
;; MSG SIZE  rcvd: 94

拜托,我们做错了什么?

3 个答案:

答案 0 :(得分:10)

解决方法是不在named.conf中创建区域。解决方案是使用区域委派如下:

$ORIGIN example.com.
$TTL 1W
@   IN  SOA     dnsldes.example.com.  postmaster.example.com. (
                               6            ; serial number
                               3600         ; refresh   [1h]
                               600          ; retry     [10m]
                               86400        ; expire    [1d]
                               3600 )       ; min TTL   [1h]
;


      IN     NS      dnsldes.example.com.


dnsldes IN  A   XXX.XXX.XXX.XXX
bahamas IN  CNAME   bdred



; Delegations and Glue
$ORIGIN sub.example.com.
@       IN      NS      lmzdns1.sub.example.com.

        IN      NS      lmzdns2.sub.example.com.

lmzdns1 IN      A       XXX.XXX.XXX.XXX
lmzdns2 IN      A       XXX.XXX.XXX.XXX

答案 1 :(得分:4)

这是一个子域委派问题:

将NS记录添加到区域的数据文件中,将子域委派给名称服务器。

示例:

域名:one.domain 子域名:sub.one.domain

我只需要使用google public dns解析sub.one.domain。

要将sub.one.domain委托给名称服务器externalns.one.domain,您可以将此NS记录添加到one.domain区域数据文件中:

sub.one.domain.    IN    NS    externalns.one.domain.

您还需要为externalns.one.domain添加A记录:

externalns.one.domain    IN    A    8.8.8.8

答案 2 :(得分:0)

关于我的经验和测试,当您希望在服务器对父区域进行授权时转发子区域时,您必须:

  • 在named.conf中将要转发的子区域声明为转发区域类型
  • 添加与名称服务器相关的NS记录,您将在父区域中转发该子区域

使用该配置,您的服务器将向您在named.conf的子区域声明中设置的转发器列表发送递归请求。

如果仅添加NS记录而未在named.conf中将区域声明为正向区域,则委托该区域,DNS服务器将发送一个迭代请求。

如果仅在named.conf中将子区域声明为正向区域类型(并且父区域在您的服务器上是权威区域),则正向区域将无法正常工作。

注意:您可以通过执行流量捕获来检查迭代查询或递归查询,并在带有参数(DNS-> Flags->需要递归)的标志部分中可见

选择委托或转发可以改变很多DNS请求流/ DNS体系结构选择(递归或迭代DNS请求)