我有以下设置:
\nfoo.comtest.lab.foo.com我试图实现的目标:
\n当来自外界的 DNS 查询到达第一个 DNS 服务器以获取属于该区域的记录时test.lab.foo.com,我希望它向第二个 DNS 服务器发出递归请求,然后转发记录。
我明确不想进行区域传输或使第二个 DNS 服务器可从 Internet 访问。
\n我的配置如下:(我只将[我的想法]\xc2\xa0重要部分复制到这里)
\n在第一个 DNS 服务器上
\noptions {\n allow-recursion {\n localnets;\n localhost;\n internal;\n my-datacenter;\n mc-office;\n };\n};\n\nzone "test.lab.foo.com" {\n forward only;\n forwarders {\n <private IP of second DNS server>;\n };\n type forward;\n };\n\n zone "foo.com" {\n file "/etc/bind/zones/foo.com.zone";\n type master;\n };\nRun Code Online (Sandbox Code Playgroud)\n我的问题:
\n当我在本地网络中时,它被列入块中的白名单allow-recursion,然后它会按预期工作。 \n当我尝试从互联网进行 DNS 查找时,我会得到一个 NOERROR 并返回空响应。
在调试过程中,我调整了allow-recursion列表并添加any到其中。然后它就可以工作了。\n但我不希望我的 DNS 服务器允许任何类型的递归。实际上,我只希望对这一特定区域进行“外部”查找是递归的。
如何allow-recursion只设置一个区域?
小智 1
可以使用以下配置来解决此问题,使用 c1.k8s.ooo 作为托管在 2a0a:e5c0:2:f::a 上的示例域:
options {
...
allow-recursion { ::/0; 0.0.0.0/0; };
};
zone "c1.k8s.ooo" {
type forward;
forward only;
forwarders { 2a0a:e5c0:2:f::a; };
};
zone "." {
type hint;
file "/dev/null";
};
Run Code Online (Sandbox Code Playgroud)
其作用如下:
zone "."我们删除内置的根提示支持,从而使绑定无法解析任何内容,但需要解析所需的域。请注意,使用类似的东西
zone "." {
type forward;
forward only;
forwarders { };
};
Run Code Online (Sandbox Code Playgroud)
不会停止来自外部的递归,因为bind具有内置的根区域。
| 归档时间: |
|
| 查看次数: |
4384 次 |
| 最近记录: |