在BIND中委派小于/ 24的反向子网区域。 如何运作

一旦我面临着赋予客户之一权限编辑分配给它的子网/ 28的PTR记录的任务。 我没有从外部编辑BIND设置的自动化工具。 因此,我决定采用另一种方式-将一部分PTR / 24子网区域委派给客户端。

似乎-哪个更容易? 我们只是以正确的方式规定了子网,然后将其定向到所需的NS,就像使用子网域一样。 但是没有 它不是那么简单(尽管实际上通常是原始的,但是直觉却无济于事),这就是我编写本文的原因。

谁想自己弄清楚,可以阅读RFC
谁想要现成的解决方案,欢迎光临。

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

1.练习。 委派区/ 28

假设我们有一个7.8.9.0/24的子网。 我们需要将子网7.8.9.240/28委派给dns客户端7.8.7.8ns1.client.domain )。

在提供商DNS上,您需要找到一个描述此子网反向区域的文件。 使其为9.8.7.in-addr.arpa
如果有评论,则评论从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. 

然后在named.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.理论。 如何运作?

配置和调试黑匣子很困难。 如果您了解内部正在发生的事情,则容易得多。

当我们在domain domain中委派一个子域时 ,我们将编写如下内容:

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

我们告诉所有人,我们对本网站不负责,我们说谁负责。 并且所有对client.domain的请求重定向到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 ”和“ oursuperclient ”之间没有区别。 并且将请求发送到原处的请求,请求中的地址应如下所示: 241.255-240.9.8.7.in-addr.arpa 。 如果我们使用字符子域,则也可以这样: 241.oursuperclient.9.8.7.in-addr.arpa 。 这与通常的方法不同: 241.9.8.7.in-addr.arpa

双手这样的要求将是有问题的。 如果能解决问题,目前尚不清楚如何在现实生活中应用它。 毕竟,在7.8.9.241的请求下,提供者DNS(而不是客户端的DNS)仍然可以回答我们。

CNAME在这里发挥作用。

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

 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 

现在,从提供商的dns服务器上的241.9.8.7.in-addr.arpa7.8.9.241处获取信息的请求将转换为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区,而不从外面回答任何人=)是没有意义的。

Source: https://habr.com/ru/post/zh-CN451890/


All Articles