我想使用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.