![bind9 为 *.sub.domain.com 分离区域文件](https://linux22.com/image/765990/bind9%20%E4%B8%BA%20*.sub.domain.com%20%E5%88%86%E7%A6%BB%E5%8C%BA%E5%9F%9F%E6%96%87%E4%BB%B6.png)
我想创建仅从我的私人网络可见的子域。
我的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
。