我使用Bind9作为我办公室的DNS服务器。
我们有一个专区: example.com。它必须从我们的DNS服务器解析为权威的。
另一方面,我们有一个sub.example.com。区域,它必须转发到其他DNS服务器。
当我们在example.com上查询任何记录时,绑定answers属性。区域。但对于有关sub.example.com的查询,它会失败。因为它不做转发。它会继续在本地寻找答案。
这是named.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查询的输出(这没问题):
; <<>> DiG 9.8.1-P1 <<>> bdred.sub.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 9764
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;bdred.sub.example.com. IN A
;; AUTHORITY SECTION:
example.com. 3600 IN SOA dnsldes.example.com. postmaster.example.com. 6 3600 600 86400 3600
;; Query time: 4 msec
;; SERVER: 172.21.229.159#53(172.21.229.159)
;; WHEN: Mon Mar 11 12:55:02 2013
;; MSG SIZE rcvd: 94这是dig查询的答案,它不是工作属性:
; <<>> DiG 9.8.1-P1 <<>> bdred.sub.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 26555
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;bdred.sub.example.com. IN A
;; AUTHORITY SECTION:
example.com. 3600 IN SOA dnsldes.example.com. postmaster.example.com. 6 3600 600 86400 3600
;; Query time: 4 msec
;; SERVER: 172.21.229.159#53(172.21.229.159)
;; WHEN: Mon Mar 11 13:09:07 2013
;; MSG SIZE rcvd: 94我们到底做错了什么?
发布于 2013-03-14 22:57:55
解决方案是在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发布于 2015-10-04 05:29:40
这是一个子域委派问题:
将NS记录添加到区域的数据文件中,将子域委派给名称服务器。
示例:
域名: one.domain子域: sub.one.domain
我只需要用谷歌的公共域名解析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发布于 2020-10-06 06:50:17
根据我的经验和测试,如果你想转发一个子区域,而你的服务器在父区域上是权威的,你必须:
使用该配置,您的服务器将向您在named.conf中的子区域声明中设置的转发器列表发送递归请求。
如果您只添加NS记录,而没有在named.conf中将区域声明为转发区域,则委派该区域,您的DNS服务器将发送一个迭代请求。
如果您仅在named.conf中将子区域声明为转发区域类型(并且父区域在您的服务器上具有权威性),则转发将不起作用。
注意:您可以通过执行流量捕获来检查迭代或递归查询,并在带有参数的标志部分中可见(所需的DNS->标志->递归)
选择委派或转发可以很大程度上改变DNS请求流/ DNS体系结构选择(递归或迭代DNS请求)
https://stackoverflow.com/questions/15338232
复制相似问题