如何将 bind9 配置为仅有本地 DNS 且无互联网访问?

如何将 bind9 配置为仅有本地 DNS 且无互联网访问?

我想将 bind9 配置为本地 DNS,完全不访问互联网。因此,我的虚拟域 xy.com 中有 5 台 PC。此域内无法访问互联网。

DNS 服务器有如下条目:

  • pc1.xy.com 在 10.1.1.1
  • pc2.xy.com 在 10.1.1.2
  • pc5.xy.com 在 10.1.1.5

Bind 配置正确,但是当我在 DNS 服务器上执行“dig @localhost pc1”时,它不起作用,因为它无法联系根服务器。但我只希望它是本地的,并回答 pc1 拥有哪个 IP。

我怎样才能实现这个目标?

答案1

为了实现这一点,您需要创建一个虚假的根区域来替换通常配置的“root.hints”区域。

输入named.conf这个:

zone "." IN {
        type master;
        file "fake.root";
};

并输入fake.root

$TTL    300
.               IN      SOA ns. hostmaster.xy.com. (
                        20120101 1800 900 604800 86400
                )
.               IN      NS      ns
ns              IN      A       127.0.0.1

这将阻止所有访问互联网以获取真实根提示的尝试。

您也可以将您的pcN.xy.com条目直接放入该根区域 - 没有必要将它们放在自己的xy.com区域文件中,因此您只需将以下内容附加到fake.root

$ORIGIN xy.com.
pc1             IN      A       10.1.1.1
pc2             IN      A       10.1.1.2
pc3             IN      A       10.1.1.3
pc4             IN      A       10.1.1.4
pc5             IN      A       10.1.1.5

除了您可能需要的任何内容(ACL?)之外,options { }就是这样 - 不需要其他任何内容。

答案2

您需要禁用递归:

添加到配置:

allow-transfer {“none”;};

allow-recursion {“none”;};

我的配置“named.conf”如下所示(在 RHEL 系统上):

options {
        allow-query {
        any;
};
allow-recursion {
        none;
};

答案3

您没有足够详细地描述您的配置。我认为您缺少权威部分。您需要在配置文件中包含如下块:

zone "domain.lan" {
        type master;
        file "master/db.domain.lan";
        allow-update { none; };
};

其中master/db.domain.lan应该指向区域文件,该文件应包含您上面发布的记录。此外,区域文件的标头中应该有 SOA(授权起始)记录。区域文件应如下所示:

domain.lan.     86400   IN SOA  dns.domain.lan. root.dns.domain.lan. ( 1 10800 3600 6044800 86400 )
                86400   IN NS   dns.domain.lan.

dns.domain.lan.      86400   IN   A    10.10.10.1
pc.domain.lan.    86400   IN   A    10.10.10.2

您可以根据需要自定义名称/值/IP。

相关内容