bind9 为 *.sub.domain.com 分离区域文件

bind9 为 *.sub.domain.com 分离区域文件

我想创建仅从我的私人网络可见的子域。

我的named.conf.local如下所示:

acl internals {
    127.0.0.0/8;
    192.168.1.0/24;
};

view "internal" {
    match-clients { internals; };

    zone "local.domain.com" {
      type master;
      file "/var/lib/bind/local.domain.com.hosts";
    };

    zone "1.168.192.in-addr.arpa" {
      type master;
      notify no;
      file "/var/lib/bind/192.hosts";
    };
};

view "external" {
    match-clients { any; };

    zone "domain.com" {
        type master;
        file "/var/lib/bind/domain.com.hosts";
    };
};

如果我不想在外部区域声明中公开 DNS 服务器的内部 IP,如何创建内部和外部区域文件?

我不想这样做,我不想让任何人看到内部 IP:

$ORIGIN local.domain.com.
@                                   IN      NS          ns1.local.domain.com.
ns1.local.domain.com.               IN      A           192.168.1.3

答案1

假设example.com(RFC 域)而不是domain.com哪个是有效域

如果您想要不同的视图,但大部分内容相同,则需要将内容放在一个文件中,将视图分成两个独立的部分。然后,这两个独立的部分包含一个内容(这样您就不必在不同的地方维护内容)。您的内部视图可以包含其他内容。

named.conf.local那么你的

acl internals {
    127.0.0.0/8;
    192.168.1.0/24;
};

view "internal" {
    match-clients { internals; };

    zone "example.com" {
        type master;
        file "/var/lib/bind/example.com.internal-hosts";
    };

    zone "local.example.com" {
      type master;
      file "/var/lib/bind/local.example.com.hosts";
    };

    zone "1.168.192.in-addr.arpa" {
      type master;
      notify no;
      file "/var/lib/bind/192.hosts";
    };
};

view "external" {
    match-clients { any; };

    zone "example.com" {
        type master;
        file "/var/lib/bind/example.com.external-hosts";
    };
};

然后/var/lib/bind/example.com.external-hosts你有你的起源,SOA和一个包含语句例如

$ORIGIN example.com
$TTL 600 ; 10 minutes
example.com.   IN SOA  ns1.example.com. hostmaster.example.com. (
        2021042801 ; serial
        10800      ; refresh (3 hours)
        3600       ; retry (1 hour)
        604800     ; expire (1 week)
        600      ; minimum (1 day)
        )

$INCLUDE "example.com.hosts";

包含行相对于您为绑定设置的根目录,因此您可能需要尝试添加/var/lib/bind/

您的内部文件将类似,但包含额外的条目

$ORIGIN example.com
$TTL 600 ; 10 minutes
example.com.   IN SOA  ns1.example.com. hostmaster.example.com. (
        2021042801 ; serial
        10800      ; refresh (3 hours)
        3600       ; retry (1 hour)
        604800     ; expire (1 week)
        600      ; minimum (1 day)
        )

ns1.local IN A  192.168.1.3
local     IN NS ns1.local.example.com.
$INCLUDE "example.com.hosts";

文件example.com.hosts被剥离来源或 SOA 例如

localhost   IN A    127.0.0.1
localhostv6 IN AAAA ::1

如果可以的话尽量避免,ns1.local.example.com因为它需要粘合记录,因为主机位于其所服务的域内。

您可以跳过包含并将 DNS 记录保存在 2 个不同的文件中,但是它们会漂移,然后您将在稍后尝试清理时遇到很多麻烦。如果您在公共和私有 IP 上都有多宿主主机(例如 www),则将其从通用文件中排除,并将其添加到具有不同记录的 2 个单独文件中。

答案2

您需要在内部视图中对主区域进行不同的定义,以便它具有委派,而外部视图中的版本没有委派。

然而,对于这样的事情,要做好大量故障排除的准备。如果单个应用程序或用户与内部视图不匹配,它将无法获得委托,因此事情会中断,您可能会失去很多确定这一点的要点,因为在内部,您将看到委托。

如果不知道您的使用情况的任何具体细节,就很难提供好的建议,但使用两个独立的域可能会更简单。

附言:如果您确实需要混淆,请不要盲目地进行,并且不要使用您发明的任何随机名称,只需使用example.com

相关内容