Dns 如何转发分区

Dns 如何转发分区,dns,subdomain,forward,Dns,Subdomain,Forward,我正在使用Bind9作为我办公室的DNS服务器 我们有一个区域:example.com。这必须从我们的DNS服务器作为权威解决 另一方面,我们有一个sub.example.com。区域,该区域必须转发到其他DNS服务器 当我们在example.com上查询任何记录时,绑定答案属性。区但它在查询sub.example.com时失败。因为它不做转发。它一直在本地寻找答案 这是命名的.conf文件 zone "sub.example.com" IN { type forward; fo

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

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

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

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

这是命名的.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 client进行bdred.example.com查询的输出(正常):

;挖掘9.8.1-P1 bdred.sub.example.com
;; 全局选项:+cmd
;; 得到答案:

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

这是一个子域委派问题:

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

例如:

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

我只需要用谷歌公共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

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

  • 在named.conf中将要转发的子区域声明为转发区域类型
  • 添加与要在父区域中转发该子区域的名称服务器相关的NS记录
通过该配置,服务器将向您在named.conf的子区域声明中设置的转发器列表发送递归请求

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

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

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


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

这甚至是一个编程问题吗?看起来您缺少
example.com
区域中
sub.example.com
的委派(NS RRset)。我也不明白你为什么需要一个
向前键入
区域。无论如何,正如@DaveRook所提到的,这不是SO的主题。您知道默认情况下委派所有子域的方法,并且只处理显式定义的子域吗?
sub.one.domain.    IN    NS    externalns.one.domain.
externalns.one.domain    IN    A    8.8.8.8