如何将区域的某些子域转发到默认转发器

如何将区域的某些子域转发到默认转发器

我想使用bind9劫持一个区域,例如“qq.com”,我的区域配置是

zone "qq.com" IN {
  type master;
  file "db.qq.com";
  forwarders { 119.29.29.29; 8.8.8.8; };
};

我的数据库文件是

[root@cenotstest named]# cat db.qq.com
$TTL 1800
@           IN  SOA ns1.qq.com.  my.example.com. (
                    20210409 ;
                    3H ;
                    15M ;
                    1W ;
                    1D ) ;
            IN  NS  ns1.qq.com.
ns1             IN      A       183.36.112.46

a   IN   A  1.1.1.1

解析 a.qq.com 时,我可以得到如下正确答案

[root@cenotstest named]# nslookup a.qq.com
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   a.qq.com
Address: 1.1.1.1

但是对于其他域名,例如“mail.qq.com”或“www.qq.com”(可能还有很多其他我不知道的域名),我只想将这些我不知道的域名转发到转发器中配置的名称服务器,例如默认的 8.8.8.8。

但是现在“qq.com”区域内的转发器不起作用,bind9支持吗?

答案1

如果域名与我的配置中的任何记录都不匹配,dnsmasq 可以从 /etc/resolv.conf 读取名称服务器作为默认转发器来解析域名。所以我猜 bind9 也可以支持此功能。

据我所知,这实际上是域名系统

普通 DNS 服务器(如 ISC Bind)要么是递归的,要么是权威的。当它们对某个(子)域具有权威性时,它们掌握该(子)域的全部真相,并且它们的区域数据包含该域中存在的所有资源记录(尽管NS记录可用于将子域委托给其他名称服务器)。当权威名称服务器被查询它不知道且未被委托的记录时,就它而言,该记录不存在。故事结束。

您可以尝试通过创建区域文件来委派所有不存在的记录(使用 DNS 通配符):

db.qq.com
$TTL 1800
@           IN  SOA ns1.qq.com.  my.example.com. (
                    20210409 ;
                    3H ;
                    15M ;
                    1W ;
                    1D ) ;
            IN  NS  ns1.qq.com.
ns1             IN      A       183.36.112.46

a   IN   A  1.1.1.1

the.original.authoritative.nameserver.for.qq.com. IN A 10.9.8.7 
*   IN NS the.original.authoritative.nameserver.for.qq.com.

相关内容