
我想使用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也可以支援這個功能。
這實際上是 AFAIK 的一個獨特功能網域解析。
普通的 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.