将区域委派到 BIND 中小于 /24 的子网。 怎么运行的

有一天,我面临一项任务,即授予我的一位客户编辑分配给他的 /28 子网的 PTR 记录的权限。 我没有从外部自动编辑 BIND 设置的功能。 因此,我决定采取不同的路线 - 将 /24 子网的 PTR 区域的一部分委托给客户端。

看起来——还有什么比这更简单的呢? 我们只需根据需要注册子网并将其定向到所需的 NS,就像子域所做的那样。 但不是。 事情没那么简单(虽然实际上它通常很原始,但直觉没有帮助),这就是我写这篇文章的原因。

任何想要自己弄清楚的人都可以阅读 RFC
谁想要现成的解决方案,欢迎来到 cat。

为了不耽误那些喜欢复制粘贴方法的人,我将先发布实践部分,然后再发布理论部分。

1.练习。 授权区/28

假设我们有一个子网 7.8.9.0/24。 我们需要委托子网 7.8.9.240/28 到 DNS 客户端 7.8.7.8 (ns1.客户端.域).

在提供商的 DNS 上,您需要找到一个描述该子网反向区域的文件。 随它去 9.8.7.in-addr.harp.
我们对 240 到 255 之间的条目(如果有)进行评论。 在文件的末尾我们写入以下内容:

255-240  IN  NS      7.8.7.8
$GENERATE 240-255 $ CNAME $.255-240

不要忘记增加串行区域并执行

rndc reload

这样就完成了提供者部分。 让我们继续讨论客户端 dns。

首先,我们创建一个文件 /etc/bind/master/255-240.9.8.7.in-addr.arpa 以下内容:

$ORIGIN 255-240.9.8.7.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       ns1.client.domain. root.client.domain. (
                        2008152607      ; serial
                        3H              ; refresh
                        15M             ; retry
                        1W              ; expiry
                        1D )            ; minimum
@                       IN NS        ns1.client.domain.
@                       IN NS        ns2.client.domain.
241                     IN PTR          test.client.domain.
242                     IN PTR          test2.client.domain.
245                     IN PTR          test5.client.domain.

而且, 命名.conf 添加新文件的描述:

zone "255-240.9.8.7.in-addr.arpa." IN {
        type master;
        file "master/255-240.9.8.7.in-addr.arpa";
};

B 重新启动绑定进程。

/etc/init.d/named restart

全部。 现在你可以检查一下。

#>  host 7.8.9.245 
245.9.8.7.in-addr.arpa is an alias for 245.255-240.9.8.7.in-addr.arpa.
245.255-240.9.8.7.in-addr.arpa domain name pointer test5.client.domain.

请注意,不仅给出了 PTR 记录,还给出了 CNAME。 事情应该是这样的。 如果您想知道为什么,那么欢迎阅读下一章。

2.理论。 怎么运行的。

配置和调试黑匣子很困难。 如果您了解内部发生的情况,那就容易多了。

当我们在域中委托子域时 ,然后我们写这样的东西:

client.domain.	NS	ns1.client.domain.
ns1.client.domain.	A	7.8.7.8

我们告诉每个询问的人我们不对这个网站负责,并说明谁负责。 以及所有请求 客户域 重定向到 7.8.7.8。 检查时,我们看到如下图(客户端有的就省略了,没关系):

# host test.client.domain
test.client.domain has address 7.8.9.241

那些。 我们得知有一条A记录,其ip为7.8.9.241。 没有不必要的信息。

如何使用子网完成同样的事情?

因为我们的 DNS 服务器在 RIPE 中注册,那么当从我们的网络请求 PTR IP 地址时,第一个请求仍然是我们。 逻辑与域相同。 但是如何将子网输入到区域文件中呢?

让我们尝试这样输入:

255-240  IN  NS      7.8.7.8

而且……奇迹并没有发生。 我们没有收到任何重定向请求。 问题是,bind 甚至不知道反向区域文件中的这些条目是 IP 地址,更不了解范围条目。 对他来说,这只是某种象征性的子域。 那些。 对于绑定来说,“”之间没有区别255-240“和”我们的超级客户”。 为了使请求到达需要到达的地方,请求中的地址应该如下所示: 241.255-240.9.8.7.in-addr.arpa。 或者像这样如果我们使用字符子域: 241.oursuperclient.9.8.7.in-addr.arpa。 这与通常的不同: 241.9.8.7.in-addr.harp.

手动提出这样的请求会很困难。 即使它有效,目前仍不清楚如何将其应用到现实生活中。 毕竟,根据要求 7.8.9.241 提供商的 DNS 仍然对我们负责,而不是客户端的。

这就是他们发挥作用的地方 CNAME.

在提供商方面,您需要以将请求转发到客户端 DNS 的格式为子网的所有 IP 地址创建别名。

255-240  IN  NS      ns1.client.domain.
241     IN  CNAME   241.255-240
242     IN  CNAME   242.255-240
и т.д.

这是给勤奋的人的=)。

而对于懒人来说,下面的设计更适合:

255-240  IN  NS      ns1.client.domain.
$GENERATE 240-255 $ CNAME $.255-240

现在请求信息 7.8.9.241 из 241.9.8.7.in-addr.harp 提供商的 DNS 服务器上的将转换为 241.255-240.9.8.7.in-addr.arpa 并转到 dns 客户端。

客户端需要处理此类请求。 因此,我们创建一个区域 255-240.9.8.7.in-addr.arpa。 原则上,我们可以在其中放置整个 /24 子网的任何 ip 的反向条目,但他们只会询问提供商转发给我们的条目,因此我们无法玩弄 =)。
为了说明这一点,我将再次举一个客户端反向区域文件内容的示例:

$ORIGIN 255-240.9.8.7.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       ns1.client.domain. root.client.domain. (
                        2008152607      ; serial
                        3H              ; refresh
                        15M             ; retry
                        1W              ; expiry
                        1D )            ; minimum
@                       IN NS        ns1.client.domain.
@                       IN NS        ns2.client.domain.
241                     IN PTR          test.client.domain.
242                     IN PTR          test2.client.domain.
245                     IN PTR          test5.client.domain.

这是因为我们在提供商方面使用 CNAME,并且在响应通过 IP 地址获取数据的请求时,我们收到两条记录,而不是一条。

#>  host 7.8.9.245 
245.9.8.7.in-addr.arpa is an alias for 245.255-240.9.8.7.in-addr.arpa.
245.255-240.9.8.7.in-addr.arpa domain name pointer test5.client.domain.

并且不要忘记正确配置 ACL。 因为为自己占据 PTR 区域而不响应外部的任何人是没有意义的 =)。

来源: habr.com

添加评论