CNAME 的 PTR 注册

CNAME 的 PTR 注册

在我的 bind9 DNS 服务器中,我的服务器描述如下:

[...]
prd1frm201      IN      A       172.21.10.2
dns             IN      CNAME   prd1frm201.kprd1.
ntp             IN      CNAME   prd1frm201.kprd1.

prd1frm202      IN      A       172.21.10.3
sentry          IN      CNAME   prd1frm202.kprd1.

[...]

反向定义如下:

[...]
3                       IN PTR  prd1frm202.kprd1.
4                       IN PTR  prd1frm203.kprd1.
[...]

因此,当我解析主机名(A 或 CNAME)时,我得到了这个正确的答案:

gmartins@HP-Gilberto:~$ host prd1frm201
prd1frm201.kprd1 has address 172.21.10.2

gmartins@HP-Gilberto:~$ host dns
dns.kprd1 is an alias for prd1frm201.kprd1.
prd1frm201.kprd1 has address 172.21.10.2

gmartins@HP-Gilberto:~$ host ntp
ntp.kprd1 is an alias for prd1frm201.kprd1.
prd1frm201.kprd1 has address 172.21.10.2

确实是正确的!我的问题是关于反向解析的:

gmartins@HP-Gilberto:~$ host 172.21.10.2
2.10.21.172.in-addr.arpa domain name pointer prd1frm201.kprd1.

gmartins@HP-Gilberto:~$ host 172.21.10.3
3.10.21.172.in-addr.arpa domain name pointer prd1frm202.kprd1.

显然,我永远不会得到 CNAME 作为答案。但如果我只是像这样更改反向 DNS 文件:

2                       IN PTR  prd1frm201.kprd1.
2                       IN PTR  dns.kprd1.
2                       IN PTR  ntp.kprd1.

提供以下答案:

gmartins@prd1frm201:~$ host 172.21.10.2
2.10.21.172.in-addr.arpa domain name pointer dns.kprd1.
2.10.21.172.in-addr.arpa domain name pointer ntp.kprd1.
2.10.21.172.in-addr.arpa domain name pointer prd1frm201.kprd1.

虽然看上去没什么问题,RFC 1912指出“此外,PTR 记录必须指向有效的 A 记录,而不是 CNAME 定义的别名“。

我的问题是:配置它的正确方法是什么?我应该只将 PTR 分配给 A 寄存器,还是可以将 PTR 分配给 A 或 CNAME 寄存器?为什么(不)?

答案1

并非所有应用程序都会检查其他 PTR。当您有单个主机的多个记录时,它们可能会以不可预测的顺序返回。大多数应用程序将采用它得到的第一个答案,而完全忽略其余的答案。您的问题将持续存在,并且只有当所有记录都正向和反向匹配时,您的问题才会按预期工作。由于这都是私人空间,因此不应该有任何东西阻止您为每个服务分配 IP。一台机器可以有多个 IP,然后您的正向和反向记录都匹配。快乐的一天!

相关内容