![私有 VPN 中的 BIND9](https://linux22.com/image/692092/%E7%A7%81%E6%9C%89%20VPN%20%E4%B8%AD%E7%9A%84%20BIND9.png)
假设有一个私人 VPN(examplevpn.org)并且有多个内部网络连接到它(net1.examplevpn.org、net2.examplevpn.org 等)。
- 所有邮件都经过 examplevpn.org 中的中继(传入或传出)。所有网络都有自己的邮件服务器。
- 所有 Web 访问都通过 examplevpn.org 中的代理服务器。没有 NAT,只有 Web 代理。
- examplevpn.org 有两个 DNS,一个是外部的,一个是内部的。内部的 DNS 只能从 VPN 内部访问,并且只回复对 *.examplevpn.org 域的查询,其余的将被忽略。
- 每个内部网络都有自己的 DNS 服务器。
我在 net1.examplevpn.org 工作,我想配置 BIND(版本 9.9.5)来
- 直接回复对 *.net1.examplevpn.org 的查询。(简单,区域,我正在说明此完成要求)
- 将 *.examplevpn.org 查询转发到内部 examplevpn.org DNS 服务器。所有这些都是递归查询。
- 忽略互联网其余部分的其余查询,我的意思是,我不希望这些查询转发到内部 examplevpn.org DNS 服务器。examplevpn.org 的内部 DNS 服务器已经忽略了它们,而且,由于没有 NAT,我无法连接到 IP。
这是 2 和 3 的组合,我不知道如何同时进行。
我想做 3 有两个原因:
- 这毫无理由地浪费了带宽(查询无论如何都会失败)
- 延迟。我希望查询快速失败。我把问题过于简单化了。现实生活中有 3 个内部 DNS,我的 DNS 服务器(位于 net1.examplevpn.org)尝试了其中三个,然后失败了……大多数情况下,一件本应立即完成的事情需要 5 秒钟。
答案1
解决方案很简单,虽然有点晦涩,但forward
指令在区域条款也一样。
因此,禁用所有现有的转发器和递归(要求 3),定义一个本地区域(要求 1)并将另一个特定区域的所有内容转发到另一个名称服务器(要求 2),您将获得类似以下内容:
options {
recursion no;
...
};
zone "net1.example.org." IN {
type master;
file "zone.net1.example.org";
};
zone "example.org." IN {
type forward;
forward only;
forwarders { 10.9.8.7; };
};