CIDR 世界中的反向 DNS

Zor*_*che 25 domain-name-system reverse-dns cidr

反向 DNS 似乎与类边界密切相关,既然 CIDR 是为子网委派权限的标准,那么存在哪些方法?如果存在多种方法,哪一种最好?您是否需要根据 DNS 服务器(绑定、djbdns、Microsoft DNS、其他)以不同方式处理委派?假设我可以控制 B 类 168.192.in-addr.arpa 网络,请提供以下示例:

  • 如何为 /22 委派权限?
  • 如何为 /25 委派权限?

jj3*_*j33 31

委派 /22 很容易,就是委派 4 个 /24。A /14 是 4 /16s 等的委派。

RFC2317涵盖了网络掩码长于 /24 的特殊情况。基本上,除了八位字节边界外,没有任何超级干净的方法可以对 in-addr.arpa 区域进行委派,但您可以解决这个问题。假设我想委托 172.16.23.16/29,这将是 IP 地址 172.16.23.16 -> 172.16.23.23。

作为 23.16.172.in-addr.arpa 区域的所有者,我可能会将其放在我的 23.16.172.rev 区域文件中,以将此范围委托给我的客户:

16-29              IN NS  ns1.customer.com
16-29              IN NS  ns2.customer.com
16                 IN CNAME    16.16-29.23.16.172.in-addr.arpa.
17                 IN CNAME    17.16-29.23.16.172.in-addr.arpa.
18                 IN CNAME    18.16-29.23.16.172.in-addr.arpa.
19                 IN CNAME    19.16-29.23.16.172.in-addr.arpa.
20                 IN CNAME    20.16-29.23.16.172.in-addr.arpa.
21                 IN CNAME    21.16-29.23.16.172.in-addr.arpa.
22                 IN CNAME    22.16-29.23.16.172.in-addr.arpa.
23                 IN CNAME    23.16-29.23.16.172.in-addr.arpa.
Run Code Online (Sandbox Code Playgroud)

因此,您可以看到我正在定义一个新区域 (16-29.23.16.172.in-addr.arpa.) 并将其委托给我客户的名称服务器。然后我从 IP 创建 CNAME,以委派给新委派区域下的相应编号。

作为这些已被委派给的客户,我将在 named.conf 中执行以下操作:

zone "16-29.23.16.172.in-addr.arpa" { 
    type master;
    file "masters/16-29.23.16.172.rev";
};
Run Code Online (Sandbox Code Playgroud)

然后在 .rev 文件中,我会像任何普通的 in-addr.arpa 区域一样制作 PTR:

17                 IN PTR office.customer.com.
18                 IN PTR www.customer.com.
(etc)
Run Code Online (Sandbox Code Playgroud)

这是一种干净的方法,它让精明的客户感到高兴,因为他们有一个 in-addr.arpa 区域来放置 PTR,等等。对于想要控制反向 DNS 但又不想控制反向 DNS 的客户来说,这是一种更短的方法想要设置整个区域只是将单个记录 CNAME 到其主区域中的相似名称。

在这种情况下,我们作为委托人,在我们的 23.16.172.rev 文件中会有这样的内容:

16                 IN CNAME    16.customer.com.
17                 IN CNAME    17.customer.com.
18                 IN CNAME    18.customer.com.
19                 IN CNAME    19.customer.com.
20                 IN CNAME    20.customer.com.
21                 IN CNAME    21.customer.com.
22                 IN CNAME    22.customer.com.
23                 IN CNAME    23.customer.com.
Run Code Online (Sandbox Code Playgroud)

所以它在概念上与另一个想法相似,但不是创建一个新区域并将其委托给客户,而是将记录 CNAME 命名为客户现有主区域中的名称。

客户在他们的 customer.com 区域文件中会有类似的内容:

office             IN A   172.16.23.17
17                 IN PTR office.customer.com.
www                IN A   172.16.23.18
18                 IN PTR www.customer.com.
(etc)
Run Code Online (Sandbox Code Playgroud)

这只是取决于客户的类型。就像我说的,这取决于客户类型。精明的客户会更喜欢建立自己的 in-addr.arpa 区域,并且会认为在域名区域中拥有 PTR 非常奇怪。不精明的客户会希望它“正常工作”而无需进行大量额外配置。

可能还有其他方法,仅详细说明我熟悉的两种方法。


我只是在想我关于 /22 和 /14 是多么容易的陈述,并思考为什么这是真的,但 25 到 32 之间的任何事情都很难。我还没有测试过这个,但我想知道你是否可以像这样将整个 /32 委托给客户:

16                 IN NS ns1.customer.com.
17                 IN NS ns1.customer.com.
(etc)
Run Code Online (Sandbox Code Playgroud)

然后,在客户端,您捕获整个 /32:

zone "16.23.16.172.in-addr.arpa" { type master; file "masters/16.23.16.172.rev"; };
zone "17.23.16.172.in-addr.arpa" { type master; file "masters/17.23.16.172.rev"; };
(etc)
Run Code Online (Sandbox Code Playgroud)

然后在单个文件中,您将拥有如下内容:

@            IN PTR office.customer.com.
Run Code Online (Sandbox Code Playgroud)

明显的缺点是每个 /32 一个文件有点恶心。但我打赌它会奏效。

我提到的所有内容都是纯 DNS,如果任何 DNS 服务器不允许您这样做,那是因为它限制了 DNS 的全部功能。我的示例显然使用 BIND,但我们已经使用 Windows DNS 和 BIND 完成了客户方面的工作。我没有看到它不适用于任何服务器的原因。