遗憾的是,我只能使用非常老版本的 bind (9.4.2)
这是我的想法。如果我使用 named.conf 设置绑定,并且只转发,它就可以完美运行。
acl clients {
any ;
};
options {
listen-on { 10.245.46.11; };
forward only ;
forwarders { 8.8.8.8 ; } ;
allow-query { clients ; };
max-cache-size 2097152 ;
empty-zones-enable no;
querylog yes;
directory "/usr/local/named/etc/zones";
dump-file "/usr/local/named/cache_dump.db";
statistics-file "/usr/local/named/named_stats.txt";
version "not currently available";
pid-file "/usr/local/named/var/run/named.pid";
};
一旦我添加欺骗根区域,它就会按预期工作。
zone "." IN {
type master;
file "all.zone";
notify no;
};
其中 all.zone 仅包含一个带有通配符转发的 A 地址,因此所有 DNS 查询都通过该单个地址得到答复。
我面临的问题是,我想允许某些域转发到公共 DNS。以下示例
zone "cnn.com" {
type forward;
forwarders { 8.8.8.8; 8.8.4.4; };
};
/** Spoofed **/
zone "." IN {
type master;
file "all.zone";
notify no;
};
对 *.cnn.com 的每个查询都得不到任何答复(而是收到欺骗性的地址)
nslookup www.cnn.com 10.245.46.11
Server: 10.245.46.11
Address: 10.245.46.11#53
*** Can't find www.cnn.com: No answer
# dig @10.245.46.11 www.www.cnn.com
; <<>> DiG 9.2.4 <<>> @10.245.46.11 www.cnn.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20722
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;www.cnn.com. IN A
;; AUTHORITY SECTION:
. 3600 IN SOA ns.example.com. 357 86400 3600 86400 3600
;; Query time: 1 msec
;; SERVER: 10.245.46.11#53(10.245.46.11)
;; WHEN: Fri Feb 7 10:44:56 2014
;; MSG SIZE rcvd: 86
但是,如果我向其中添加一个主区域(以及前向区域和欺骗根),它就可以正常请求查询。
zone "test.com" IN {
type master;
file "test.com.zone";
};
nslookup ns.test.com 10.245.46.11
Server: 10.245.46.11
Address: 10.245.46.11#53
Name: ns.test.com
Address: 190.208.65.193
那么,任何人都可能知道为什么当存在根欺骗区域时,当存在主区域时它会回复查询,但是当存在转发区域时它不会转发?
提前致谢 !