【问题标题】:How to forward a subzone如何转发子区域
【发布时间】:2013-02-26 14:36:31
【问题描述】:

我使用 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 查询的答案,它无法正常工作:

; <<>> 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

请问,我们做错了什么?

【问题讨论】:

  • 这甚至是一个编程问题吗?
  • 您似乎在example.com 区域中缺少sub.example.com 的委托(NS RRset)。另外我不明白为什么你应该在这里需要一个type forward 区域。无论如何,正如@DaveRook 提到的,这不是 SO 的主题。

标签: dns subdomain forward


【解决方案1】:

根据我的经验和测试,当您的服务器对父区域具有权威性时,如果您希望转发子区域,您必须:

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

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

如果您只添加 NS 记录而没有在 named.conf 中声明该区域为转发区域,则您委托该区域,您的 DNS 服务器将发送一个迭代请求。

如果您仅在 named.conf 中将子区域声明为转发区域类型(并且父区域在您的服务器上具有权威性),则转发将不起作用。

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

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

【讨论】:

    【解决方案2】:

    这是一个子域委托问题:

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

    例子:

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

    我只需要使用 google 公共 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
    

    【讨论】:

    • 你知道一种默认委派所有子域的方法,并且只处理明确定义的子域吗?
    【解决方案3】:

    解决方案是在 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
    

    【讨论】:

      猜你喜欢
      • 2018-03-12
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      • 2012-12-19
      相关资源
      最近更新 更多